[PATCH] Improve lgammaf range for very small cases

Andoni Arregi <[email protected]>
Newsgroups gmane.comp.lib.newlib
Organization GTD GmbH
Message-ID <[email protected]>
The original cut for small arguments at |x|<2**-70 (copied from the
double version) produces that when computing nadj we get a subnormal
number for t*x and thus, the division of pi/subnormal will be INF and
the logarithm of it too, which is wrong as a result for lgammaf in this
range.
The proposed new limit seems to be safe and has been tested to
produce accurate results.
(Courtesy of Andreas Jung, ESA)
---
 newlib/libm/math/erf_lgamma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/newlib/libm/math/erf_lgamma.c b/newlib/libm/math/erf_lgamma.c
index f88f63092..84d02159b 100644
--- a/newlib/libm/math/erf_lgamma.c
+++ b/newlib/libm/math/erf_lgamma.c
@@ -168,7 +168,7 @@ static float zero=  0.0000000000e+00;
 	       *signgamp = -1;
 	   return one/(x-x);
 	}
-	if(ix<0x1c800000) {	/* |x|<2**-70, return -log(|x|) */
+	if(ix<0x30800000) {	/* |x|<2**-30, return -log(|x|) */
 	   if(hx<0) {
 	       *signgamp = -1;
 	       return -__ieee754_logf(-x);
-- 
2.35.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.