mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-18 01:30:27 +02:00
Fix numerator and denominator handling of signed zeroes and infinities.
* libguile/numbers.c (scm_numerator, scm_denominator): Handle signed zeroes and infinities in accordance with the corresponding R6RS flonum procedures. * module/rnrs/arithmetic/flonums.scm (flnumerator, fldenominator): Remove special handling of infinities. * test-suite/tests/numbers.test (numerator, denominator): Add tests. Convert existing tests to use 'pass-if-equal'. * test-suite/tests/r6rs-arithmetic-flonums.test (flnumerator): Fix broken test of (flnumerator -0.0).
This commit is contained in:
parent
d9b312af56
commit
fa102e73c3
4 changed files with 55 additions and 68 deletions
|
@ -1079,68 +1079,50 @@
|
|||
;;;
|
||||
|
||||
(with-test-prefix "numerator"
|
||||
(pass-if "0"
|
||||
(eqv? 0 (numerator 0)))
|
||||
(pass-if "1"
|
||||
(eqv? 1 (numerator 1)))
|
||||
(pass-if "2"
|
||||
(eqv? 2 (numerator 2)))
|
||||
(pass-if "-1"
|
||||
(eqv? -1 (numerator -1)))
|
||||
(pass-if "-2"
|
||||
(eqv? -2 (numerator -2)))
|
||||
(pass-if-equal "0" 0 (numerator 0))
|
||||
(pass-if-equal "1" 1 (numerator 1))
|
||||
(pass-if-equal "2" 2 (numerator 2))
|
||||
(pass-if-equal "-1" -1 (numerator -1))
|
||||
(pass-if-equal "-2" -2 (numerator -2))
|
||||
|
||||
(pass-if "0.0"
|
||||
(eqv? 0.0 (numerator 0.0)))
|
||||
(pass-if "1.0"
|
||||
(eqv? 1.0 (numerator 1.0)))
|
||||
(pass-if "2.0"
|
||||
(eqv? 2.0 (numerator 2.0)))
|
||||
(pass-if "-1.0"
|
||||
(eqv? -1.0 (numerator -1.0)))
|
||||
(pass-if "-2.0"
|
||||
(eqv? -2.0 (numerator -2.0)))
|
||||
(pass-if-equal "0.0" 0.0 (numerator 0.0))
|
||||
(pass-if-equal "1.0" 1.0 (numerator 1.0))
|
||||
(pass-if-equal "2.0" 2.0 (numerator 2.0))
|
||||
(pass-if-equal "-0.0" -0.0 (numerator -0.0))
|
||||
(pass-if-equal "-1.0" -1.0 (numerator -1.0))
|
||||
(pass-if-equal "-2.0" -2.0 (numerator -2.0))
|
||||
|
||||
(pass-if "0.5"
|
||||
(eqv? 1.0 (numerator 0.5)))
|
||||
(pass-if "0.25"
|
||||
(eqv? 1.0 (numerator 0.25)))
|
||||
(pass-if "0.75"
|
||||
(eqv? 3.0 (numerator 0.75))))
|
||||
(pass-if-equal "0.5" 1.0 (numerator 0.5))
|
||||
(pass-if-equal "0.25" 1.0 (numerator 0.25))
|
||||
(pass-if-equal "0.75" 3.0 (numerator 0.75))
|
||||
|
||||
(pass-if-equal "+inf.0" +inf.0 (numerator +inf.0))
|
||||
(pass-if-equal "-inf.0" -inf.0 (numerator -inf.0)))
|
||||
|
||||
;;;
|
||||
;;; denominator
|
||||
;;;
|
||||
|
||||
(with-test-prefix "denominator"
|
||||
(pass-if "0"
|
||||
(eqv? 1 (denominator 0)))
|
||||
(pass-if "1"
|
||||
(eqv? 1 (denominator 1)))
|
||||
(pass-if "2"
|
||||
(eqv? 1 (denominator 2)))
|
||||
(pass-if "-1"
|
||||
(eqv? 1 (denominator -1)))
|
||||
(pass-if "-2"
|
||||
(eqv? 1 (denominator -2)))
|
||||
(pass-if-equal "0" 1 (denominator 0))
|
||||
(pass-if-equal "1" 1 (denominator 1))
|
||||
(pass-if-equal "2" 1 (denominator 2))
|
||||
(pass-if-equal "-1" 1 (denominator -1))
|
||||
(pass-if-equal "-2" 1 (denominator -2))
|
||||
|
||||
(pass-if "0.0"
|
||||
(eqv? 1.0 (denominator 0.0)))
|
||||
(pass-if "1.0"
|
||||
(eqv? 1.0 (denominator 1.0)))
|
||||
(pass-if "2.0"
|
||||
(eqv? 1.0 (denominator 2.0)))
|
||||
(pass-if "-1.0"
|
||||
(eqv? 1.0 (denominator -1.0)))
|
||||
(pass-if "-2.0"
|
||||
(eqv? 1.0 (denominator -2.0)))
|
||||
(pass-if-equal "0.0" 1.0 (denominator 0.0))
|
||||
(pass-if-equal "1.0" 1.0 (denominator 1.0))
|
||||
(pass-if-equal "2.0" 1.0 (denominator 2.0))
|
||||
(pass-if-equal "-0.0" 1.0 (denominator -0.0))
|
||||
(pass-if-equal "-1.0" 1.0 (denominator -1.0))
|
||||
(pass-if-equal "-2.0" 1.0 (denominator -2.0))
|
||||
|
||||
(pass-if "0.5"
|
||||
(eqv? 2.0 (denominator 0.5)))
|
||||
(pass-if "0.25"
|
||||
(eqv? 4.0 (denominator 0.25)))
|
||||
(pass-if "0.75"
|
||||
(eqv? 4.0 (denominator 0.75))))
|
||||
(pass-if-equal "0.5" 2.0 (denominator 0.5))
|
||||
(pass-if-equal "0.25" 4.0 (denominator 0.25))
|
||||
(pass-if-equal "0.75" 4.0 (denominator 0.75))
|
||||
|
||||
(pass-if-equal "+inf.0" 1.0 (denominator +inf.0))
|
||||
(pass-if-equal "-inf.0" 1.0 (denominator -inf.0)))
|
||||
|
||||
;;;
|
||||
;;; gcd
|
||||
|
|
|
@ -218,7 +218,7 @@
|
|||
(and (fl=? (flnumerator +inf.0) +inf.0)
|
||||
(fl=? (flnumerator -inf.0) -inf.0)))
|
||||
|
||||
(pass-if "negative zero" (fl=? (flnumerator -0.0) -0.0)))
|
||||
(pass-if "negative zero" (eqv? (flnumerator -0.0) -0.0)))
|
||||
|
||||
(with-test-prefix "fldenominator"
|
||||
(pass-if "simple" (fl=? (fldenominator 0.5) 2.0))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue