w_exp2l_compat.c 500 B

1234567891011121314151617181920212223
  1. /*
  2. * wrapper exp2l(x)
  3. */
  4. #include <math.h>
  5. #include <math_private.h>
  6. #include <math-svid-compat.h>
  7. #include <libm-alias-ldouble.h>
  8. #if LIBM_SVID_COMPAT
  9. long double
  10. __exp2l (long double x)
  11. {
  12. long double z = __ieee754_exp2l (x);
  13. if (__builtin_expect (!isfinite (z) || z == 0, 0)
  14. && isfinite (x) && _LIB_VERSION != _IEEE_)
  15. /* exp2 overflow: 244, exp2 underflow: 245 */
  16. return __kernel_standard_l (x, x, 244 + !!signbit (x));
  17. return z;
  18. }
  19. libm_alias_ldouble (__exp2, exp2)
  20. #endif