コード例 #1
0
ファイル: w_scalbf.c プロジェクト: dreal/tai
/* Wrapper scalbf */
float
__scalbf (float x, float fn)
{
  return (__builtin_expect (_LIB_VERSION == _SVID_, 0)
	  ? sysv_scalbf (x, fn)
	  : __ieee754_scalbf (x, fn));
}
コード例 #2
0
ファイル: w_scalbf.c プロジェクト: RobbenBasten/glibc
/* Wrapper scalbf */
float
__scalbf (float x, float fn)
{
  if (__glibc_unlikely (_LIB_VERSION == _SVID_))
    return sysv_scalbf (x, fn);
  else
    {
      float z = __ieee754_scalbf (x, fn);

      if (__glibc_unlikely (!isfinite (z) || z == 0.0f))
	{
	  if (isnan (z))
	    {
	      if (!isnan (x) && !isnan (fn))
		__set_errno (EDOM);
	    }
	  else if (isinf (z))
	    {
	      if (!isinf (x) && !isinf (fn))
		__set_errno (ERANGE);
	    }
	  else
	    {
	      /* z == 0.  */
	      if (x != 0.0f && !isinf (fn))
		__set_errno (ERANGE);
	    }
	}
      return z;
    }
}
コード例 #3
0
ファイル: w_scalbf.c プロジェクト: OS2World/LIB-POSIX2
	float scalbf(float x, float fn)		/* wrapper scalbf */
#endif
{
#ifdef _IEEE_LIBM
	return __ieee754_scalbf(x,fn);
#else
	float z;
	z = __ieee754_scalbf(x,fn);
	if(_LIB_VERSION == _IEEE_) return z;
	if(!(finitef(z)||isnanf(z))&&finitef(x)) {
	    /* scalbf overflow */
	    return (float)__kernel_standard((double)x,(double)fn,132);
	}
	if(z==(float)0.0&&z!=x) {
	    /* scalbf underflow */
	    return (float)__kernel_standard((double)x,(double)fn,133);
	} 
#ifndef _SCALB_INT
	if(!finitef(fn)) errno = ERANGE;
#endif
	return z;
#endif 
}
コード例 #4
0
ファイル: w_scalbf.c プロジェクト: dreal/tai
sysv_scalbf (float x, float fn)
{
  float z = __ieee754_scalbf (x, fn);

  if (__builtin_expect (__isinff (z), 0))
    {
      if (__finitef (x))
	return __kernel_standard_f (x, fn, 132); /* scalb overflow */
      else
	__set_errno (ERANGE);
    }
  else if (__builtin_expect (z == 0.0f, 0) && z != x)
    return __kernel_standard_f (x, fn, 133); /* scalb underflow */

  return z;
}
コード例 #5
0
ファイル: s_significandf.c プロジェクト: JinSeok/GIT_Test
float
significandf(float x)
{
	return __ieee754_scalbf(x,(float) -ilogbf(x));
}