diff options
author | Tom Tromey <tom@tromey.com> | 2018-07-05 13:17:36 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-07-12 22:12:27 -0600 |
commit | 872faabbd8cb0f5518777b2d4fe7de187f684a92 (patch) | |
tree | b09cc3fa24e232c156f7991008d080fd5c77d860 /src/floatfns.c | |
parent | d14808cd271abf6a723bf495a6a01c14d18b5893 (diff) | |
download | emacs-872faabbd8cb0f5518777b2d4fe7de187f684a92.tar.gz |
Allow conversion of bignums to floats
* src/floatfns.c (extract_float, Ffloat): Handle bignums.
* src/lisp.h (XFLOATINT): Handle bignums.
* test/src/floatfns-tests.el (bignum-to-float): New test.
Diffstat (limited to 'src/floatfns.c')
-rw-r--r-- | src/floatfns.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/floatfns.c b/src/floatfns.c index 766044ba35c..bd3f2dec80a 100644 --- a/src/floatfns.c +++ b/src/floatfns.c @@ -67,7 +67,7 @@ CHECK_FLOAT (Lisp_Object x) double extract_float (Lisp_Object num) { - CHECK_FIXNUM_OR_FLOAT (num); + CHECK_NUMBER (num); return XFLOATINT (num); } @@ -289,8 +289,10 @@ DEFUN ("float", Ffloat, Sfloat, 1, 1, 0, doc: /* Return the floating point number equal to ARG. */) (register Lisp_Object arg) { - CHECK_FIXNUM_OR_FLOAT (arg); + CHECK_NUMBER (arg); + if (BIGNUMP (arg)) + return make_float (mpz_get_d (XBIGNUM (arg)->value)); if (FIXNUMP (arg)) return make_float ((double) XINT (arg)); else /* give 'em the same float back */ |