# scalbln

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



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


## SYNOPSIS



           #include <math.h>
    
           double scalbln(double _x_ , long _n_);
           float scalblnf(float _x_ , long _n_);
           long double scalblnl(long double _x_ , long _n_);
           double scalbn(double _x_ , int _n_);
           float scalbnf(float _x_ , int _n_);
           long double scalbnl(long double _x_ , int _n_);
    


## DESCRIPTION



           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_RADIX _n_ efficiently, not
           normally by computing FLT_RADIX _n_ explicitly.
    
           An application wishing to check for error situations should set
           _errno_ to zero and call _feclearexcept_(FE_ALL_EXCEPT) before calling
           these functions. On return, if _errno_ is non-zero or
           _fetestexcept_(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW |
           FE_UNDERFLOW) is non-zero, an error has occurred.
    


## RETURN VALUE



           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, and is not
           representable, a range error may occur, and _scalbln_(), _scalblnf_(),
           _scalblnl_(), _scalbn_(), _scalbnf_(), and _scalbnl_() shall return 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.
    
           If _x_ is NaN, a NaN shall be returned.
    
           If _x_ is ±0 or ±Inf, _x_ shall be returned.
    
           If _n_ is 0, _x_ shall be returned.
    
           If the correct value would cause underflow, and is representable,
           a range error may occur and the correct value shall be returned.
    


## ERRORS



           These functions shall fail if:
    
           Range Error The result overflows.
    
                       If the integer expression (_math_errhandling_ &
                       MATH_ERRNO) is non-zero, then _errno_ shall 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, then _errno_ shall be set to
                       **[ERANGE]**.  If the integer expression (_math_errhandling_
                       & MATH_ERREXCEPT) is non-zero, then the underflow
                       floating-point exception shall be raised.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           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.
    


## RATIONALE



           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 the _scalb_() function has a
           second argument of **double** instead of **int**.  The _scalb_() function is
           not part of the ISO C standard. The three functions whose second
           type is **long** are 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-width **int** format.
    


## FUTURE DIRECTIONS



           None.
    


* * *