From f7dcbe87c67eac0d0a35a97e4a7e30a3cf6cdb02 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Sat, 12 Jan 2008 21:05:26 -0500 Subject: [PATCH] Fixes round-off error in sqrt. --- scheme/ikarus.numerics.ss | 8 +++++++- scheme/last-revision | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scheme/ikarus.numerics.ss b/scheme/ikarus.numerics.ss index f680720..e1995c9 100644 --- a/scheme/ikarus.numerics.ss +++ b/scheme/ikarus.numerics.ss @@ -1914,7 +1914,13 @@ (let ([v (sqrt (inexact x))]) ;;; could the [dropped] residual ever affect the answer? (cond - [(infinite? v) (inexact s)] + [(infinite? v) + (if (bignum? s) + (foreign-call "ikrt_bignum_to_flonum" + s + 1 ;;; round up in case of a tie + ($make-flonum)) + (inexact s))] [else v]))]))] [(ratnum? x) ;;; FIXME: incorrect as per bug 180170 diff --git a/scheme/last-revision b/scheme/last-revision index 97dc468..5c24846 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1339 +1340