]> git.eshelyaron.com Git - emacs.git/commitdiff
Make logb handle bignums
authorTom Tromey <tom@tromey.com>
Sun, 8 Jul 2018 06:10:54 +0000 (00:10 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 13 Jul 2018 04:12:28 +0000 (22:12 -0600)
* src/floatfns.c (Flogb): Handle bignums.
* test/src/floatfns-tests.el (bignum-logb): New test.

src/floatfns.c
test/src/floatfns-tests.el

index 6d7fc1452d3dd56a6ee7207efd3dce8289a40c07..9a5f0a3ad2f66eb2a33e2955fa9e26ea5a57a8f1 100644 (file)
@@ -328,7 +328,7 @@ This is the same as the exponent of a float.  */)
   (Lisp_Object arg)
 {
   EMACS_INT value;
-  CHECK_FIXNUM_OR_FLOAT (arg);
+  CHECK_NUMBER (arg);
 
   if (FLOATP (arg))
     {
@@ -345,8 +345,11 @@ This is the same as the exponent of a float.  */)
       else
        value = MOST_POSITIVE_FIXNUM;
     }
+  else if (BIGNUMP (arg))
+    value = mpz_sizeinbase (XBIGNUM (arg)->value, 2) - 1;
   else
     {
+      eassert (FIXNUMP (arg));
       EMACS_INT i = eabs (XINT (arg));
       value = (i == 0
               ? MOST_NEGATIVE_FIXNUM
index 0911ff46515d3667025e1f5002a9f682be055ada..7714c05d60af452ec21d831c482589065539a312 100644 (file)
@@ -42,4 +42,8 @@
   (should (= most-positive-fixnum
              (- (abs most-negative-fixnum) 1))))
 
+(ert-deftest bignum-logb ()
+  (should (= (+ (logb most-positive-fixnum) 1)
+             (logb (+ most-positive-fixnum 1)))))
+
 (provide 'floatfns-tests)