From a49907b9b65ddc269fb851bc3f1ef73b6dd5ac6a Mon Sep 17 00:00:00 2001 From: Alex Shinn <ashinn@users.noreply.github.com> Date: Sat, 13 Jul 2013 09:14:57 +0900 Subject: [PATCH] Fixing inexact comparisons to handle different signed arguments. --- lib/chibi/test.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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)))