glibc/sysdeps/generic/w_exp2l.c
Jakub Jelinek 0ecb606cb6 2.5-18.1
2007-07-12 18:26:36 +00:00

32 lines
698 B
C

/*
* wrapper exp2l(x)
*/
#include <float.h>
#include "math.h"
#include "math_private.h"
static const long double o_threshold = (long double) LDBL_MAX_EXP;
static const long double u_threshold
= (long double) (LDBL_MIN_EXP - LDBL_MANT_DIG - 1);
long double
__exp2l (long double x) /* wrapper exp2l */
{
#ifdef _IEEE_LIBM
return __ieee754_exp2l (x);
#else
long double z;
z = __ieee754_exp2l (x);
if (_LIB_VERSION != _IEEE_ && __finitel (x))
{
if (x > o_threshold)
return __kernel_standard (x, x, 244); /* exp2l overflow */
else if (x <= u_threshold)
return __kernel_standard (x, x, 245); /* exp2l underflow */
}
return z;
#endif
}
weak_alias (__exp2l, exp2l)