diff options
author | das <das@FreeBSD.org> | 2008-02-17 21:53:19 +0000 |
---|---|---|
committer | das <das@FreeBSD.org> | 2008-02-17 21:53:19 +0000 |
commit | 2acea74331feef81636f9a9f13dea7a7a7840669 (patch) | |
tree | 2c9dcfdd78b3b67cfedbab9b1978f84fa1992a06 /lib/msun | |
parent | 7c1566b20638534e17508975a444c5f0ffd3f71e (diff) | |
download | FreeBSD-src-2acea74331feef81636f9a9f13dea7a7a7840669.zip FreeBSD-src-2acea74331feef81636f9a9f13dea7a7a7840669.tar.gz |
Use volatile hacks to make sure exp() generates an underflow
exception when it's supposed to. Previously, gcc -O2 was optimizing
away the statement that generated it.
Diffstat (limited to 'lib/msun')
-rw-r--r-- | lib/msun/src/e_exp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/msun/src/e_exp.c b/lib/msun/src/e_exp.c index 0809c66..bcc98ff 100644 --- a/lib/msun/src/e_exp.c +++ b/lib/msun/src/e_exp.c @@ -84,7 +84,6 @@ static const double one = 1.0, halF[2] = {0.5,-0.5,}, huge = 1.0e+300, -twom1000= 9.33263618503218878990e-302, /* 2**-1000=0x01700000,0*/ o_threshold= 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ u_threshold= -7.45133219101941108420e+02, /* 0xc0874910, 0xD52D3051 */ ln2HI[2] ={ 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */ @@ -98,6 +97,8 @@ P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */ +static volatile double +twom1000= 9.33263618503218878990e-302; /* 2**-1000=0x01700000,0*/ double __ieee754_exp(double x) /* default IEEE double exp */ |