summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/floatfns.c6
-rw-r--r--test/src/floatfns-tests.el3
2 files changed, 5 insertions, 4 deletions
diff --git a/src/floatfns.c b/src/floatfns.c
index ea2eb1016b1..713d42694ff 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -514,10 +514,8 @@ With optional DIVISOR, truncate ARG/DIVISOR. */)
Lisp_Object
fmod_float (Lisp_Object x, Lisp_Object y)
{
- double f1, f2;
-
- f1 = FLOATP (x) ? XFLOAT_DATA (x) : XFIXNUM (x);
- f2 = FLOATP (y) ? XFLOAT_DATA (y) : XFIXNUM (y);
+ double f1 = XFLOATINT (x);
+ double f2 = XFLOATINT (y);
f1 = fmod (f1, f2);
diff --git a/test/src/floatfns-tests.el b/test/src/floatfns-tests.el
index 7714c05d60a..43a2e278290 100644
--- a/test/src/floatfns-tests.el
+++ b/test/src/floatfns-tests.el
@@ -46,4 +46,7 @@
(should (= (+ (logb most-positive-fixnum) 1)
(logb (+ most-positive-fixnum 1)))))
+(ert-deftest bignum-mod ()
+ (should (= 0 (mod (1+ most-positive-fixnum) 2.0))))
+
(provide 'floatfns-tests)