From 7d6316f723e76123f9cb07c8bf3ea05937dbac40 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Mon, 6 Apr 2009 17:14:57 +0300 Subject: [PATCH] fixed error in division in (/ 0 ) --- scheme/ikarus.numerics.ss | 30 ++++++++++++++++-------------- scheme/last-revision | 2 +- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/scheme/ikarus.numerics.ss b/scheme/ikarus.numerics.ss index e7e0361..7b70b46 100644 --- a/scheme/ikarus.numerics.ss +++ b/scheme/ikarus.numerics.ss @@ -1233,20 +1233,22 @@ (binary- 0 (fxquotient x g)) (binary- 0 (fxquotient y g)))])))])] [(bignum? y) - (let ([g (binary-gcd x y)]) - (cond - [(= g y) (quotient x g)] ;;; should not happen - [($bignum-positive? y) - (if ($fx= g 1) - ($make-ratnum x y) - ($make-ratnum (fxquotient x g) (quotient y g)))] - [else - (if ($fx= g 1) - ($make-ratnum (binary- 0 x) (binary- 0 y)) - ($make-ratnum - (binary- 0 (fxquotient x g)) - (binary- 0 (quotient y g))))]))] - [(ratnum? y) + (if ($fx= x 0) + 0 + (let ([g (binary-gcd x y)]) + (cond + [(= g y) (quotient x g)] + [($bignum-positive? y) + (if ($fx= g 1) + ($make-ratnum x y) + ($make-ratnum (fxquotient x g) (quotient y g)))] + [else + (if ($fx= g 1) + ($make-ratnum (binary- 0 x) (binary- 0 y)) + ($make-ratnum + (binary- 0 (fxquotient x g)) + (binary- 0 (quotient y g))))])))] + [(ratnum? y) (/ (* x ($ratnum-d y)) ($ratnum-n y))] [(or (compnum? y) (cflonum? y)) (x/compy x y)] [else (err '/ y)])] diff --git a/scheme/last-revision b/scheme/last-revision index 1dc3694..805e7ae 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1753 +1754