## table of contents

- stretch 4.10-2
- testing 4.16-2
- stretch-backports 4.16-1~bpo9+1
- unstable 4.16-2

LOGB(3) | Linux Programmer's Manual | LOGB(3) |

# 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**():

**logbf**(),

**logbl**():

# 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¶

For an explanation of the terms used in this section, see attributes(7).Interface | Attribute | Value |

logb (), logbf (), logbl () | Thread safety | MT-Safe |

# CONFORMING TO¶

C99, POSIX.1-2001, POSIX.1-2008.# SEE ALSO¶

ilogb(3), log(3)# COLOPHON¶

This page is part of release 4.16 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/.

2017-09-15 |