Home | History | Annotate | Download | only in fdlibm
      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__
     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