IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008)

Copyright © 2001-2018 IEEE and The Open Group

scalbln, scalblnf, scalblnl, scalbn, scalbnf, scalbnl - compute exponent using FLT_RADIX

#include <math.h>

double scalbln(doublex, longn);

float scalblnf(floatx, longn);

long double scalblnl(long doublex, longn);

double scalbn(doublex, intn);

float scalbnf(floatx, intn);

long double scalbnl(long doublex, intn);

^{[CX]}The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2017 defers to the ISO C standard.These functions shall compute

x* FLT_RADIXefficiently, not normally by computing FLT_RADIX^{n}explicitly.^{n}An application wishing to check for error situations should set

errnoto zero and callfeclearexcept(FE_ALL_EXCEPT) before calling these functions. On return, iferrnois non-zero orfetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an error has occurred.

Upon successful completion, these functions shall return

x* FLT_RADIX.^{n}If the result would cause overflow, a range error shall occur and these functions shall return ±HUGE_VAL, ±HUGE_VALF, and ±HUGE_VALL (according to the sign of

x) as appropriate for the return type of the function.If the correct value would cause underflow,

^{[MXX]}and is not representable, a range error may occur, andscalbln(),scalblnf(),scalblnl(),scalbn(),scalbnf(), andscalbnl() shall return^{[MXX]}0.0, or (if IEC 60559 Floating-Point is not supported) an implementation-defined value no greater in magnitude than DBL_MIN, FLT_MIN, LDBL_MIN, DBL_MIN, FLT_MIN, and LDBL_MIN, respectively.

^{[MX]}Ifxis NaN, a NaN shall be returned.If

xis ±0 or ±Inf,xshall be returned.If

nis 0,xshall be returned.

^{[MXX]}If the correct value would cause underflow, and is representable, a range error may occur and the correct value shall be returned.

These functions shall fail if:

- Range Error
- The result overflows.
If the integer expression (

math_errhandling& MATH_ERRNO) is non-zero, thenerrnoshall be set to [ERANGE]. If the integer expression (math_errhandling& MATH_ERREXCEPT) is non-zero, then the overflow floating-point exception shall be raised.

These functions may fail if:

- Range Error
- The result underflows.
If the integer expression (

math_errhandling& MATH_ERRNO) is non-zero, thenerrnoshall be set to [ERANGE]. If the integer expression (math_errhandling& MATH_ERREXCEPT) is non-zero, then the underflow floating-point exception shall be raised.

None.

On error, the expressions (

math_errhandling& MATH_ERRNO) and (math_errhandling& MATH_ERREXCEPT) are independent of each other, but at least one of them must be non-zero.

These functions are named so as to avoid conflicting with the historical definition of the

scalb() function from the Single UNIX Specification. The difference is that thescalb() function has a second argument ofdoubleinstead ofint. Thescalb() function is not part of the ISO C standard. The three functions whose second type islongare provided because the factor required to scale from the smallest positive floating-point value to the largest finite one, on many implementations, is too large to represent in the minimum-widthintformat.

None.

XBD

Treatment of Error Conditions for Mathematical Functions,<math.h>

First released in Issue 6. Derived from the ISO/IEC 9899:1999 standard.

POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0521 [68] and XSH/TC1-2008/0522 [68] are applied.

return to top of page

POSIX ® is a registered Trademark of The IEEE.

Copyright © 2001-2018 IEEE and The Open Group, All Rights Reserved

[ Main Index | XBD | XSH | XCU | XRAT ]