Ejemplo n.º 1
0
Archivo: w_log2.c Proyecto: etiago/vbox
double
log2(double x)    /* wrapper log10 */
{
#ifdef _IEEE_LIBM
  return __ieee754_log2(x);
#else
  double z;
  z = __ieee754_log2(x);
  if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
  if(x<=0.0) {
      if(x==0.0)
          return __kernel_standard(x,x,48); /* log2(0) */
      else
          return __kernel_standard(x,x,49); /* log2(x<0) */
  } else
      return z;
#endif
}
Ejemplo n.º 2
0
/* wrapper log2(x) */
double
__log2 (double x)
{
  if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
    {
      if (x == 0.0)
	{
	  feraiseexcept (FE_DIVBYZERO);
	  return __kernel_standard (x, x, 48); /* log2(0) */
	}
      else
	{
	  feraiseexcept (FE_INVALID);
	  return __kernel_standard (x, x, 49); /* log2(x<0) */
	}
    }

  return  __ieee754_log2 (x);
}
Ejemplo n.º 3
0
/* wrapper log2f(x) */
float
log2f (float x)
{
#if defined(__UCLIBC_HAS_FENV__)
  if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
    {
      if (x == 0.0)
	{
	  feraiseexcept (FE_DIVBYZERO);
	  return __kernel_standard_f (x, x, 148); /* log2(0) */
	}
      else
	{
	  feraiseexcept (FE_INVALID);
	  return __kernel_standard_f (x, x, 149); /* log2(x<0) */
	}
    }
#endif
  return (float) __ieee754_log2 ((double) x);
}