(flo:trappable-exceptions trappable-float-exceptions 0))
(define (flo:clear-exceptions! exceptions)
- (if (using-floating-point-environment?)
- ((ucode-primitive clear-float-exceptions 1) exceptions)))
+ (use-floating-point-environment!)
+ ((ucode-primitive clear-float-exceptions 1) exceptions))
(define (flo:raise-exceptions! exceptions)
(if (using-floating-point-environment?)
;; block thread-switching so nobody else can get in -- and then
;; confirm that within flo:preserving-environment,
;; flo:clear-exceptions! actually clears the exceptions.
- (expect-failure
- (lambda ()
- (assert-eqv
- (without-interruption
+ (assert-eqv
+ (without-interruption
+ (lambda ()
+ ;; Trigger as many floating-point exceptions as we can. If
+ ;; they trap, ignore it. Don't enable floating-point traps
+ ;; since we're testing what happens if we haven't done any
+ ;; operations that touch the floating-point environment.
+ (ignore-errors
+ (lambda ()
+ (flo:sqrt -1.)
+ (flo:/ flo:smallest-positive-normal 2.)
+ (flo:sqrt 2.)
+ (flo:exp (flo:* 2. flo:greatest-normal-exponent-base-e))))
+ (flo:preserving-environment
(lambda ()
- ;; Trigger as many floating-point exceptions as we can. If
- ;; they trap, ignore it. Don't enable floating-point traps
- ;; since we're testing what happens if we haven't done any
- ;; operations that touch the floating-point environment.
- (ignore-errors
- (lambda ()
- (flo:sqrt -1.)
- (flo:/ flo:smallest-positive-normal 2.)
- (flo:sqrt 2.)
- (flo:exp (flo:* 2. flo:greatest-normal-exponent-base-e))))
- (flo:preserving-environment
- (lambda ()
- ;; Clear the exceptions.
- (flo:clear-exceptions! (flo:supported-exceptions))
- ;; Test the exceptions. They should actually be cleared.
- (flo:test-exceptions (flo:supported-exceptions))))))
- 0)))))
+ ;; Clear the exceptions.
+ (flo:clear-exceptions! (flo:supported-exceptions))
+ ;; Test the exceptions. They should actually be cleared.
+ (flo:test-exceptions (flo:supported-exceptions))))))
+ 0)))