'\" t .\" Copyright 2004 Andries Brouwer . .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Inspired by a page by Walter Harms created 2002-08-10 .\" .TH logb 3 2023-03-30 "Linux man-pages 6.04" .SH NAME logb, logbf, logbl \- get exponent of a floating-point value .SH LIBRARY Math library .RI ( libm ", " \-lm ) .SH SYNOPSIS .nf .B #include .PP .BI "double logb(double " x ); .BI "float logbf(float " x ); .BI "long double logbl(long double " x ); .fi .PP .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .RE .PP .BR logb (): .nf _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 500 .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .PP .BR logbf (), .BR logbl (): .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 extract the exponent from the internal floating-point representation of .I x and return it as a floating-point value. The integer constant .BR FLT_RADIX , defined in .IR , indicates the radix used for the system's floating-point representation. If .B FLT_RADIX is 2, .BI logb( x ) is equal to .BI floor(log2( x ))\fR, except that it is probably faster. .PP If .I x is subnormal, .BR logb () returns the exponent .I x would have if it were normalized. .SH RETURN VALUE On success, these functions return the exponent of .IR x . .PP If .I x is a NaN, a NaN is returned. .PP If .I x is zero, then a pole error occurs, and the functions return .RB \- HUGE_VAL , .RB \- HUGE_VALF , or .RB \- HUGE_VALL , respectively. .PP If .I x is negative infinity or positive infinity, then positive infinity is returned. .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 Pole error: \fIx\fP is 0 .\" .I errno .\" is set to .\" .BR ERANGE . A divide-by-zero floating-point exception .RB ( FE_DIVBYZERO ) is raised. .PP These functions do not set .IR errno . .\" FIXME . Is it intentional that these functions do not set errno? .\" log(), log2(), log10() do set errno .\" Bug raised: https://www.sourceware.org/bugzilla/show_bug.cgi?id=6793 .\" .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 logb (), .BR logbf (), .BR logbl () T} Thread safety MT-Safe .TE .hy .ad .sp 1 .SH STANDARDS C11, POSIX.1-2008. .SH HISTORY C99, POSIX.1-2001. .TP .BR logb () 4.3BSD (see IEEE.3 in the 4.3BSD manual). .SH SEE ALSO .BR ilogb (3), .BR log (3)