diff --git a/lib/chibi/test.scm b/lib/chibi/test.scm index b4891576..f73ca252 100644 --- a/lib/chibi/test.scm +++ b/lib/chibi/test.scm @@ -244,8 +244,13 @@ (else #f))) (define (approx-equal? a b epsilon) - (< (abs (- 1 (abs (if (zero? b) (+ 1 a) (/ a b))))) - epsilon)) + (cond + ((> (abs a) (abs b)) + (approx-equal? b a epsilon)) + ((zero? b) + (< (abs a) epsilon)) + (else + (< (abs (/ (- a b) b)) epsilon)))) (define (call-with-output-string proc) (let ((out (open-output-string)))