1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-16 16:50:21 +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:
Mark H Weaver 2013-08-09 05:32:23 -04:00
parent d9b312af56
commit fa102e73c3
4 changed files with 55 additions and 68 deletions

View file

@ -153,19 +153,8 @@
(assert-iflonum fl1 fl2)
(mod0 fl1 fl2))
(define (flnumerator fl)
(assert-flonum fl)
(case fl
((+inf.0) +inf.0)
((-inf.0) -inf.0)
(else (numerator fl))))
(define (fldenominator fl)
(assert-flonum fl)
(case fl
((+inf.0) 1.0)
((-inf.0) 1.0)
(else (denominator fl))))
(define (flnumerator fl) (assert-flonum fl) (numerator fl))
(define (fldenominator fl) (assert-flonum fl) (denominator fl))
(define (flfloor fl) (assert-flonum fl) (floor fl))
(define (flceiling fl) (assert-flonum fl) (ceiling fl))