emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] feature/bignum c7e393b 15/24: Make lognot handle bignums


From: Tom Tromey
Subject: [Emacs-diffs] feature/bignum c7e393b 15/24: Make lognot handle bignums
Date: Fri, 13 Jul 2018 00:25:09 -0400 (EDT)

branch: feature/bignum
commit c7e393bc4130c871a92fef7e9ac0c7c1832aa614
Author: Tom Tromey <address@hidden>
Commit: Tom Tromey <address@hidden>

    Make lognot handle bignums
    
    * src/data.c (Flognot): Handle bignums.
---
 src/data.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/data.c b/src/data.c
index d717568..c950469 100644
--- a/src/data.c
+++ b/src/data.c
@@ -3306,8 +3306,20 @@ DEFUN ("lognot", Flognot, Slognot, 1, 1, 0,
        doc: /* Return the bitwise complement of NUMBER.  NUMBER must be an 
integer.  */)
   (register Lisp_Object number)
 {
-  CHECK_FIXNUM (number);
-  XSETINT (number, ~XINT (number));
+  CHECK_INTEGER (number);
+  if (BIGNUMP (number))
+    {
+      mpz_t value;
+      mpz_init (value);
+      mpz_com (value, XBIGNUM (number)->value);
+      number = make_number (value);
+      mpz_clear (value);
+    }
+  else
+    {
+      eassume (FIXNUMP (number));
+      XSETINT (number, ~XINT (number));
+    }
   return number;
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]