From 42332bb04fbde5661a4ee3ff2884c5f4e53c95f9 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sat, 14 May 2022 16:30:27 +0900 Subject: [PATCH] compute least double properly (issue #831) --- lib/srfi/144/math.stub | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/srfi/144/math.stub b/lib/srfi/144/math.stub index a7f16703..27f154c1 100644 --- a/lib/srfi/144/math.stub +++ b/lib/srfi/144/math.stub @@ -1,6 +1,15 @@ (c-system-include "math.h") +(c-declare " +double sexp_compute_least_double(double f) { + for (double g = f/2; g < f && g > 0; g /= 2) { + f = g; + } + return f; +} +") + (define-c-const double (fl-e "M_E") (fl-1/e "1.0/M_E") @@ -43,7 +52,7 @@ (fl-gamma-1/3 "tgamma(1.0/3.0)") (fl-gamma-2/3 "tgamma(2.0/3.0)") (fl-greatest "DBL_MAX") - (fl-least "-DBL_MAX") + (fl-least "sexp_compute_least_double(DBL_MIN)") (fl-integer-exponent-zero "FP_ILOGB0") (fl-integer-exponent-nan "FP_ILOGBNAN") (fl-epsilon "DBL_EPSILON"))