1 
2 /* @(#)w_exp.c 1.4 04/04/22 */
3 /*
4  * ====================================================
5  * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
6  *
7  * Permission to use, copy, modify, and distribute this
8  * software is freely granted, provided that this notice
9  * is preserved.
10  * ====================================================
11  */
12 
13 /*
14  * wrapper ieee_exp(x)
15  */
16 
17 #include "fdlibm.h"
18 
19 #ifdef __STDC__
20 static const double
21 #else
22 static double
23 #endif
24 o_threshold=  7.09782712893383973096e+02,  /* 0x40862E42, 0xFEFA39EF */
25 u_threshold= -7.45133219101941108420e+02;  /* 0xc0874910, 0xD52D3051 */
26 
27 #ifdef __STDC__
ieee_exp(double x)28 	double ieee_exp(double x)		/* wrapper exp */
29 #else
30 	double ieee_exp(x)			/* wrapper exp */
31 	double x;
32 #endif
33 {
34 #ifdef _IEEE_LIBM
35 	return __ieee754_exp(x);
36 #else
37 	double z;
38 	z = __ieee754_exp(x);
39 	if(_LIB_VERSION == _IEEE_) return z;
40 	if(ieee_finite(x)) {
41 	    if(x>o_threshold)
42 	        return __kernel_standard(x,x,6); /* exp overflow */
43 	    else if(x<u_threshold)
44 	        return __kernel_standard(x,x,7); /* exp underflow */
45 	}
46 	return z;
47 #endif
48 }
49