diff --git a/collects/rnrs/arithmetic/flonums-6.ss b/collects/rnrs/arithmetic/flonums-6.ss index 4d5ca26dfc..4dc088ad36 100644 --- a/collects/rnrs/arithmetic/flonums-6.ss +++ b/collects/rnrs/arithmetic/flonums-6.ss @@ -49,24 +49,56 @@ (define-fl abs flabs (a) nocheck) -(provide fldiv-and-mod - fldiv0-and-mod0) +(provide fldiv flmod fldiv-and-mod + fldiv0 flmod0 fldiv0-and-mod0) +(define (fldiv a b) + (unless (inexact-real? a) + (raise-type-error 'fldiv "flonum" a)) + (unless (inexact-real? b) + (raise-type-error 'fldiv "flonum" b)) + (if (zero? b) + +nan.0 + (div a b))) +(define (flmod a b) + (unless (inexact-real? a) + (raise-type-error 'flmod "flonum" a)) + (unless (inexact-real? b) + (raise-type-error 'flmod "flonum" b)) + (if (zero? b) + +nan.0 + (mod a b))) (define (fldiv-and-mod a b) (unless (inexact-real? a) (raise-type-error 'fldiv-and-mod "flonum" a)) (unless (inexact-real? b) (raise-type-error 'fldiv-and-mod "flonum" b)) - (div-and-mod a b)) -(define-fl div fldiv (a b) nocheck) -(define-fl mod flmod (a b) nocheck) + (if (zero? b) + (values +nan.0 +nan.0) + (div-and-mod a b))) (define (fldiv0-and-mod0 a b) (unless (inexact-real? a) (raise-type-error 'fldiv0-and-mod0 "flonum" a)) (unless (inexact-real? b) (raise-type-error 'fldiv0-and-mod0 "flonum" b)) - (div0-and-mod0 a b)) -(define-fl div0 fldiv0 (a b) nocheck) -(define-fl mod0 flmod0 (a b) nocheck) + (if (zero? b) + (values +nan.0 +nan.0) + (div0-and-mod0 a b))) +(define (fldiv0 a b) + (unless (inexact-real? a) + (raise-type-error 'fldiv0 "flonum" a)) + (unless (inexact-real? b) + (raise-type-error 'fldiv0 "flonum" b)) + (if (zero? b) + +nan.0 + (div0 a b))) +(define (flmod0 a b) + (unless (inexact-real? a) + (raise-type-error 'flmod0 "flonum" a)) + (unless (inexact-real? b) + (raise-type-error 'flmod0 "flonum" b)) + (if (zero? b) + +nan.0 + (mod0 a b))) (define (flnumerator c) (if (inexact-real? c)