mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-16 00:30: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:
parent
d9b312af56
commit
fa102e73c3
4 changed files with 55 additions and 68 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue