SYNOPSIS

DESCRIPTION

RETURN VALUE

ERRORS

VERSIONS

ATTRIBUTES

CONFORMING TO

NOTES

SEE ALSO

COLOPHON

scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl - multiply floating-point number by integral power of radix

**#include
<math.h>**

**double
scalbln(double** *x***, long int** *exp***);
float scalblnf(float**

long double scalblnl(long double

**double
scalbn(double** *x***, int** *exp***);
float scalbnf(float**

long double scalbnl(long double

Link with
*-lm*.

Feature Test
Macro Requirements for glibc (see
**feature_test_macros**(7)):

**scalbln**(),
**scalblnf**(), **scalblnl**():

_ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L

|| /* Since glibc 2.19: */ _DEFAULT_SOURCE

**scalbn**(),
**scalbnf**(), **scalbnl**():

_ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L

|| /* Since glibc 2.19: */ _DEFAULT_SOURCE

|| /* Glibc versions <= 2.19: */ _BSD_SOURCE ||
_SVID_SOURCE

These functions
multiply their first argument *x* by **FLT_RADIX**
(probably 2) to the power of *exp*, that is:

x * FLT_RADIX ** exp

The definition
of **FLT_RADIX** can be obtained by including
*<float.h>*.

On success,
these functions return *x* * **FLT_RADIX** **
*exp*.

If *x* is
a NaN, a NaN is returned.

If *x* is
positive infinity (negative infinity), positive infinity
(negative infinity) is returned.

If *x* is
+0 (-0), +0 (-0) is returned.

If the result
overflows, a range error occurs, and the functions return
**HUGE_VAL**, **HUGE_VALF**, or **HUGE_VALL**,
respectively, with a sign the same as *x*.

If the result
underflows, a range error occurs, and the functions return
zero, with a sign the same as *x*.

See
**math_error**(7) for information on how to determine
whether an error has occurred when calling these
functions.

The following
errors can occur:

Range error, overflow

An overflow floating-point
exception (**FE_OVERFLOW**) is raised.

Range error, underflow

An underflow floating-point
exception (**FE_UNDERFLOW**) is raised.

These functions
do not set *errno*.

These functions first appeared in glibc in version 2.1.

For an
explanation of the terms used in this section, see
**attributes**(7).

C99, POSIX.1-2001, POSIX.1-2008.

These functions
differ from the obsolete functions described in
**scalb**(3) in the type of their second argument. The
functions described on this page have a second argument of
an integral type, while those in **scalb**(3) have a
second argument of type *double*.

If
**FLT_RADIX** equals 2 (which is usual), then
**scalbn**() is equivalent to **ldexp**(3).

**ldexp**(3),
**scalb**(3)

This page is
part of release 4.15 of the Linux *man-pages* project.
A description of the project, information about reporting
bugs, and the latest version of this page, can be found at
https://www.kernel.org/doc/man-pages/.