/*
 * wrapper exp2(x)
 */

#include <float.h>
#include <math.h>
#include "math_private.h"

static const double o_threshold= (double) DBL_MAX_EXP;
static const double u_threshold= (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1);

double
__exp2 (double x)		/* wrapper exp2 */
{
#ifdef _IEEE_LIBM
  return __ieee754_exp2 (x);
#else
  double z;
  z = __ieee754_exp2 (x);
  if (_LIB_VERSION != _IEEE_ && __finite (x))
    {
      if (x > o_threshold)
	/* exp2 overflow */
	return __kernel_standard (x, x, 44);
      else if (x <= u_threshold)
	/* exp2 underflow */
	return __kernel_standard (x, x, 45);
    }
  return z;
#endif
}
weak_alias (__exp2, exp2)
#ifdef NO_LONG_DOUBLE
strong_alias (__exp2, __exp2l)
weak_alias (__exp2, exp2l)
#endif
