[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] feature/bignum 23eab9a 10/24: Make number-to-string work f
From: |
Tom Tromey |
Subject: |
[Emacs-diffs] feature/bignum 23eab9a 10/24: Make number-to-string work for bignums |
Date: |
Fri, 13 Jul 2018 00:25:08 -0400 (EDT) |
branch: feature/bignum
commit 23eab9a6a67604b5ebcdc99efc42fbfd3345c0b0
Author: Tom Tromey <address@hidden>
Commit: Tom Tromey <address@hidden>
Make number-to-string work for bignums
* src/data.c (Fnumber_to_string): Handle bignum.
* test/src/data-tests.el (data-tests-number-to-string): New test.
---
src/data.c | 8 ++++++++
test/src/data-tests.el | 5 +++++
2 files changed, 13 insertions(+)
diff --git a/src/data.c b/src/data.c
index b49daab..18b572d 100644
--- a/src/data.c
+++ b/src/data.c
@@ -2756,6 +2756,14 @@ NUMBER may be an integer or a floating point number. */)
char buffer[max (FLOAT_TO_STRING_BUFSIZE, INT_BUFSIZE_BOUND (EMACS_INT))];
int len;
+ if (BIGNUMP (number))
+ {
+ ptrdiff_t count = SPECPDL_INDEX ();
+ char *str = mpz_get_str (NULL, 10, XBIGNUM (number)->value);
+ record_unwind_protect_ptr (xfree, str);
+ return unbind_to (count, make_unibyte_string (str, strlen (str)));
+ }
+
CHECK_FIXNUM_OR_FLOAT (number);
if (FLOATP (number))
diff --git a/test/src/data-tests.el b/test/src/data-tests.el
index 543bb90..1143028 100644
--- a/test/src/data-tests.el
+++ b/test/src/data-tests.el
@@ -574,4 +574,9 @@ comparing the subr with a much slower lisp implementation."
(should-not (fixnump (+ most-positive-fixnum 1)))
(should (bignump (+ most-positive-fixnum 1))))
+(ert-deftest data-tests-number-to-string ()
+ (let* ((s "99999999999999999999999999999")
+ (v (read s)))
+ (should (equal (number-to-string v) s))))
+
;;; data-tests.el ends here
- [Emacs-diffs] branch feature/bignum created (now cc3d758), Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum eefa65e 07/24: Make comparison operators handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum b2f3f4e 04/24: Provide new functions to create bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 580d173 05/24: Make eql work for bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum a0f2adb 03/24: Introduce the bignum type, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 23eab9a 10/24: Make number-to-string work for bignums,
Tom Tromey <=
- [Emacs-diffs] feature/bignum 025adce 13/24: Make abs handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 6d4bf2c 09/24: Add some bignum tests, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 872faab 12/24: Allow conversion of bignums to floats, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 5875fba 08/24: Make arithmetic work with bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum a770fb4 16/24: Make logcount handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 0d86891 14/24: Make 1+ and 1- handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 8fb995b 17/24: Make min and max handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum 3dea8f8 19/24: Make % and mod handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum d14808c 11/24: Make format handle bignums, Tom Tromey, 2018/07/13
- [Emacs-diffs] feature/bignum c7e393b 15/24: Make lognot handle bignums, Tom Tromey, 2018/07/13