NAME

logb, logbf, logbl – get exponent of a floating-point value  

SYNOPSIS

#include <math.h>

double logb(double x);
float logbf(float x);
long double logbl(long double x);

Link with -lm.

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

logb():

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc -std=c99

logbf(), logbl():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc -std=c99
 

DESCRIPTION

These functions extract the exponent from the internal floating-point representation of x and return it as a floating-point value. The integer constant FLT_RADIX, defined in <float.h>, indicates the radix used for the system’s floating-point representation. If FLT_RADIX is 2, logb(x) is equal to floor(log2(x)), except that it is probably faster.

If x is subnormal, logb() returns the exponent x would have if it were normalized.  

RETURN VALUE

On success, these functions return the exponent of x.

If x is a NaN, a NaN is returned.

If x is zero, then a pole error occurs, and the functions return –HUGE_VAL, –HUGE_VALF, or –HUGE_VALL, respectively.

If x is negative infinity or positive infinity, then positive infinity is returned.  

ERRORS

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

The following errors can occur:

Pole error: x is 0
A divide-by-zero floating-point exception (FE_DIVBYZERO) is raised.

These functions do not set errno.  

ATTRIBUTES

 

Multithreading (see pthreads(7))

The logb(), logbf(), and logbl() functions are thread-safe.  

CONFORMING TO

C99, POSIX.1-2001.  

Willie has over 15 years of experience in Linux system administration and DevOps. After managing infrastructure for startups and enterprises alike, he founded Command Linux to share the practical knowledge he wished he had when starting out. He oversees content strategy and contributes guides on server management, automation, and security.