X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fmath%2Fexp.c;h=29bf9609906bcd46359c764d082a6f211544125c;hp=c1c9a63c51d4d84110040a73b45bf245d832a1da;hb=9f58d06007818c43b9504e959ef81ab5f113b374;hpb=b69f695acedd4ce2798ef9ea28d834ceccc789bd diff --git a/src/math/exp.c b/src/math/exp.c index c1c9a63c..29bf9609 100644 --- a/src/math/exp.c +++ b/src/math/exp.c @@ -74,7 +74,6 @@ #include "libm.h" static const double -one = 1.0, halF[2] = {0.5,-0.5,}, huge = 1.0e+300, o_threshold = 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ @@ -90,7 +89,7 @@ P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */ -static volatile double +static const volatile double twom1000 = 9.33263618503218878990e-302; /* 2**-1000=0x01700000,0 */ double exp(double x) @@ -134,8 +133,8 @@ double exp(double x) STRICT_ASSIGN(double, x, hi - lo); } else if(hx < 0x3e300000) { /* |x| < 2**-28 */ /* raise inexact */ - if (huge+x > one) - return one+x; + if (huge+x > 1.0) + return 1.0+x; } else k = 0; @@ -147,8 +146,8 @@ double exp(double x) INSERT_WORDS(twopk, 0x3ff00000+((k+1000)<<20), 0); c = x - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); if (k == 0) - return one - ((x*c)/(c-2.0) - x); - y = one-((lo-(x*c)/(2.0-c))-hi); + return 1.0 - ((x*c)/(c-2.0) - x); + y = 1.0-((lo-(x*c)/(2.0-c))-hi); if (k < -1021) return y*twopk*twom1000; if (k == 1024)