diff options
author | Tom Tromey <tom@tromey.com> | 2018-07-08 00:10:54 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-07-12 22:12:28 -0600 |
commit | cca0e79ea81712786f92a6668c61001e60d24f32 (patch) | |
tree | 484932514b6ec9f21a623363f441bd862064353e /src/floatfns.c | |
parent | 3dea8f8f53f81a1d15a55c9e3c87a7eade7ca273 (diff) | |
download | emacs-cca0e79ea81712786f92a6668c61001e60d24f32.tar.gz emacs-cca0e79ea81712786f92a6668c61001e60d24f32.tar.bz2 emacs-cca0e79ea81712786f92a6668c61001e60d24f32.zip |
Make logb handle bignums
* src/floatfns.c (Flogb): Handle bignums.
* test/src/floatfns-tests.el (bignum-logb): New test.
Diffstat (limited to 'src/floatfns.c')
-rw-r--r-- | src/floatfns.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/floatfns.c b/src/floatfns.c index 6d7fc1452d3..9a5f0a3ad2f 100644 --- a/src/floatfns.c +++ b/src/floatfns.c @@ -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 |