* src/floatfns.c (Flogb): Handle bignums.
* test/src/floatfns-tests.el (bignum-logb): New test.
(Lisp_Object arg)
{
EMACS_INT value;
- CHECK_FIXNUM_OR_FLOAT (arg);
+ CHECK_NUMBER (arg);
if (FLOATP (arg))
{
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
(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)