uc-sdk
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
w_exp.c
Go to the documentation of this file.
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 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__
28  double exp(double x) /* wrapper exp */
29 #else
30  double 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(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 }