double scalb(double x, int fn) /* wrapper scalb */ #endif { #ifdef CYGSEM_LIBM_COMPAT_IEEE_ONLY return __ieee754_scalb(x,fn); #else double z; z = __ieee754_scalb(x,fn); if(cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_IEEE) return z; if(!(finite(z)||isnan(z))&&finite(x)) { return __kernel_standard(x,(double)fn,32); /* scalb overflow */ } if(z==0.0&&z!=x) { return __kernel_standard(x,(double)fn,33); /* scalb underflow */ } #ifdef CYGFUN_LIBM_SVID3_scalb if(!finite(fn)) errno = ERANGE; #endif return z; #endif }
scalb(double x, double fn) /* wrapper scalb */ #endif { #ifdef _IEEE_LIBM return __ieee754_scalb(x,fn); #else double z; z = __ieee754_scalb(x,fn); if(_LIB_VERSION == _IEEE_) return z; if(!(finite(z)||isnan(z))&&finite(x)) { return __kernel_standard(x,(double)fn,32); /* scalb overflow */ } if(z==0.0&&z!=x) { return __kernel_standard(x,(double)fn,33); /* scalb underflow */ } #ifndef _SCALB_INT if(!finite(fn)) errno = ERANGE; #endif return z; #endif }
double scalb(double x, double fn) { double z = __ieee754_scalb(x, fn); if (_LIB_VERSION == _IEEE_) return z; if (!(isfinite(z) || isnan(z)) && isfinite(x)) return __kernel_standard(x, (double)fn, 32); /* scalb overflow */ if (z == 0.0 && z != x) return __kernel_standard(x, (double)fn, 33); /* scalb underflow */ if (!isfinite(fn)) errno = ERANGE; return z; }
Err mathlib_scalb(UInt16 refnum, double x, double exponent, double *result) { #pragma unused(refnum) *result = __ieee754_scalb(x, exponent); return mlErrNone; }
double significand(double x) { return __ieee754_scalb(x,(double) -ilogb(x)); }