/* Wrapper scalbf */ float __scalbf (float x, float fn) { return (__builtin_expect (_LIB_VERSION == _SVID_, 0) ? sysv_scalbf (x, fn) : __ieee754_scalbf (x, fn)); }
/* 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; } }
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 }
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; }
float significandf(float x) { return __ieee754_scalbf(x,(float) -ilogbf(x)); }