Fixing inexact comparisons to handle different signed arguments.

This commit is contained in:
Alex Shinn 2013-07-13 09:14:57 +09:00
parent 77cf790158
commit a49907b9b6

View file

@ -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)))