'\" t .\" Copyright 2004 Andries Brouwer . .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH scalbln 3 2023-03-30 "Linux man-pages 6.04" .SH NAME scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl \- multiply floating-point number by integral power of radix .SH LIBRARY Math library .RI ( libm ", " \-lm ) .SH SYNOPSIS .nf .B #include .PP .BI "double scalbln(double " x ", long " exp ); .BI "float scalblnf(float " x ", long " exp ); .BI "long double scalblnl(long double " x ", long " exp ); .PP .BI "double scalbn(double " x ", int " exp ); .BI "float scalbnf(float " x ", int " exp ); .BI "long double scalbnl(long double " x ", int " exp ); .fi .PP .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .RE .PP .BR scalbln (), .BR scalblnf (), .BR scalblnl (): .nf _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || /* Since glibc 2.19: */ _DEFAULT_SOURCE .fi .PP .BR scalbn (), .BR scalbnf (), .BR scalbnl (): .nf _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH DESCRIPTION These functions multiply their first argument .I x by .B FLT_RADIX (probably 2) to the power of .IR exp , that is: .PP .nf x * FLT_RADIX ** exp .fi .PP The definition of .B FLT_RADIX can be obtained by including .IR . .\" not in /usr/include but in a gcc lib .SH RETURN VALUE On success, these functions return .I x * .B FLT_RADIX ** .IR exp . .PP If .I x is a NaN, a NaN is returned. .PP If .I x is positive infinity (negative infinity), positive infinity (negative infinity) is returned. .PP If .I x is +0 (\-0), +0 (\-0) is returned. .PP If the result overflows, a range error occurs, and the functions return .BR HUGE_VAL , .BR HUGE_VALF , or .BR HUGE_VALL , respectively, with a sign the same as .IR x . .PP If the result underflows, a range error occurs, and the functions return zero, with a sign the same as .IR x . .SH ERRORS See .BR math_error (7) for information on how to determine whether an error has occurred when calling these functions. .PP The following errors can occur: .TP Range error, overflow .\" .I errno .\" is set to .\" .BR ERANGE . An overflow floating-point exception .RB ( FE_OVERFLOW ) is raised. .TP Range error, underflow .I errno is set to .BR ERANGE . An underflow floating-point exception .RB ( FE_UNDERFLOW ) is raised. .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). .ad l .nh .TS allbox; lbx lb lb l l l. Interface Attribute Value T{ .BR scalbn (), .BR scalbnf (), .BR scalbnl (), .BR scalbln (), .BR scalblnf (), .BR scalblnl () T} Thread safety MT-Safe .TE .hy .ad .sp 1 .SH STANDARDS C11, POSIX.1-2008. .SH HISTORY glibc 2.1. C99, POSIX.1-2001. .SH HISTORY These functions differ from the obsolete functions described in .BR 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 .BR scalb (3) have a second argument of type .IR double . .SH NOTES If .B FLT_RADIX equals 2 (which is usual), then .BR scalbn () is equivalent to .BR ldexp (3). .SH BUGS Before glibc 2.20, .\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6803 these functions did not set .I errno for range errors. .SH SEE ALSO .BR ldexp (3), .BR scalb (3)