summaryrefslogtreecommitdiffstats
path: root/lib/msun
diff options
context:
space:
mode:
authordas <das@FreeBSD.org>2008-02-17 21:53:19 +0000
committerdas <das@FreeBSD.org>2008-02-17 21:53:19 +0000
commit2acea74331feef81636f9a9f13dea7a7a7840669 (patch)
tree2c9dcfdd78b3b67cfedbab9b1978f84fa1992a06 /lib/msun
parent7c1566b20638534e17508975a444c5f0ffd3f71e (diff)
downloadFreeBSD-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.c3
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 */
OpenPOWER on IntegriCloud