1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 09:10:22 +02:00

Quotient, remainder and modulo accept inexact integers

* libguile/numbers.c (scm_quotient, scm_remainder, scm_modulo): Accept
  inexact integers as well as exact ones, as required by the R5RS.

* test-suite/tests/numbers.test (quotient, remainder, modulo): Add tests.
This commit is contained in:
Mark H Weaver 2011-03-06 20:27:40 -05:00
parent 5d344028fb
commit 0748e3f3f0
2 changed files with 24 additions and 6 deletions

View file

@ -633,6 +633,12 @@
(pass-if "n = fixnum-min - 1"
(eqv? 1 (quotient (- fixnum-min 1) (- fixnum-min 1)))))
;; Inexact integers
(pass-if (eqv? 5.0 (quotient 35.0 7.0)))
(pass-if (eqv? 5.0 (quotient 35 7.0)))
(pass-if (eqv? 5.0 (quotient 35.0 7 )))
;; Positive dividend and divisor
(pass-if "35 / 7"
@ -826,6 +832,12 @@
(pass-if "n = fixnum-min - 1"
(eqv? 0 (remainder (- fixnum-min 1) (- fixnum-min 1)))))
;; Inexact integers
(pass-if (eqv? 2.0 (remainder 37.0 7.0)))
(pass-if (eqv? 2.0 (remainder 37 7.0)))
(pass-if (eqv? 2.0 (remainder 37.0 7 )))
;; Positive dividend and divisor
(pass-if "35 / 7"
@ -1009,6 +1021,12 @@
(pass-if "n = fixnum-min - 1"
(eqv? 0 (modulo (- fixnum-min 1) (- fixnum-min 1)))))
;; Inexact integers
(pass-if (eqv? 1.0 (modulo 13.0 4.0)))
(pass-if (eqv? 1.0 (modulo 13 4.0)))
(pass-if (eqv? 1.0 (modulo 13.0 4 )))
;; Positive dividend and divisor
(pass-if "13 % 4"