SCALB(3M) | Mathematical Library Functions | SCALB(3M) |

`scalb`

, `scalbf`

,
`scalbl`

— load exponent of a
radix-independent floating-point number

`c99`

[`flag`...]
`file`... `-lm`

[`library`...]

`#include <math.h>`

`double`

`scalb`

(`double x`,
`double n`);

`float`

`scalbf`

(`float x`,
`float n`);

`long double`

`scalbl`

(`long double x`,
`long double n`);

These functions compute `x`
*
`r`^`n`,
where `r` is the radix of the machine's floating point
arithmetic. When `r` is 2,
`scalb`

()
is equivalent to ldexp(3M). The value
of `r` is `FLT_RADIX`

which is
defined in `<float.h>`

.

Upon successful completion, the `scalb`

()
function returns `x` *
`r`^`n`.

If `x` or `n` is
**NaN**, a **NaN** is returned.

If `n` is 0, `x` is
returned.

If `x` is **±Inf** and
`n` is not **−Inf**,
`x` is returned.

If `x` is ±0 and
`n` is not **+Inf**,
`x` is returned.

If `x` is ±0 and
`n` is **+Inf**, a domain error occurs and
a **NaN** is returned.

If `x` is **±Inf** and Fa
n is **−Inf**, a domain error occurs and a
**NaN** is returned.

If the result would cause an overflow, a range error occurs and
`±HUGE_VAL`

(according to the sign of
`x`) is returned.

For exceptional cases,
matherr(3M) tabulates the values to
be returned by `scalb`

() as specified by SVID3 and
XPG3. See standards(7).

These functions will fail if:

**Domain Error**- If
`x`is 0 and`n`is**+Inf**, or`x`is**Inf**and`n`is**−Inf**.If the integer expression (

`math_errhandling`&`MATH_ERREXCEPT`

) is non-zero, then the invalid floating-point exception is raised. **Range Error**- The result would overflow.
If the integer expression (

`math_errhandling`&`MATH_ERREXCEPT`

) is non-zero, then the overflow floating-point exception is raised.

An application wanting to check for exceptions should call
`feclearexcept`

(`FE_ALL_EXCEPT`)
before calling these functions. On return, if
`fetestexcept`

(`FE_INVALID
| FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW`) is non-zero, an exception
has been raised. An application should either examine the return value or
check the floating point exception flags to detect exceptions.

These functions are **Obsolete**. The
scalbln(3M),
scalblnf(3M), or
scalblnl(3M) functions should be
used instead.

The
`scalb`

()
function is **Obsolete Standard**. The
`scalbf`

()
and
`scalbl`

()
functions are **Obsolete Committed**.

math.h(3HEAD), feclearexcept(3M), fetestexcept(3M), ilogb(3M), ldexp(3M), logb(3M), matherr(3M), scalbln(3M), attributes(7), standards(7)

July 5, 2019 | OmniOS |