INSTALL, RELEASE: Add RELEASE file with instructions for releasing
[man-pages.git] / man3 / logb.3
blobd467c5a2e9c8a3ea2a3c0714ffead5a3660bdf07
1 .\" Copyright 2004 Andries Brouwer <aeb@cwi.nl>.
2 .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
3 .\"     <mtk.manpages@gmail.com>
4 .\"
5 .\" SPDX-License-Identifier: Linux-man-pages-copyleft
6 .\"
7 .\" Inspired by a page by Walter Harms created 2002-08-10
8 .\"
9 .TH LOGB 3 (date) "Linux man-pages (unreleased)"
10 .SH NAME
11 logb, logbf, logbl \- get exponent of a floating-point value
12 .SH LIBRARY
13 Math library
14 .RI ( libm ", " \-lm )
15 .SH SYNOPSIS
16 .nf
17 .B #include <math.h>
18 .PP
19 .BI "double logb(double " x );
20 .BI "float logbf(float " x );
21 .BI "long double logbl(long double " x );
22 .fi
23 .PP
24 .RS -4
25 Feature Test Macro Requirements for glibc (see
26 .BR feature_test_macros (7)):
27 .RE
28 .PP
29 .BR logb ():
30 .nf
31     _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
32         || _XOPEN_SOURCE >= 500
33 .\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
34         || /* Since glibc 2.19: */ _DEFAULT_SOURCE
35         || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
36 .fi
37 .PP
38 .BR logbf (),
39 .BR logbl ():
40 .nf
41     _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
42         || /* Since glibc 2.19: */ _DEFAULT_SOURCE
43         || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
44 .fi
45 .SH DESCRIPTION
46 These functions extract the exponent from the
47 internal floating-point representation of
48 .I x
49 and return it as a floating-point value.
50 The integer constant
51 .BR FLT_RADIX ,
52 defined in
53 .IR <float.h> ,
54 indicates the radix used for the system's floating-point representation.
56 .B FLT_RADIX
57 is 2,
58 .BI logb( x )
59 is equal to
60 .BI floor(log2( x ))\fR,
61 except that it is probably faster.
62 .PP
64 .I x
65 is subnormal,
66 .BR logb ()
67 returns the exponent
68 .I x
69 would have if it were normalized.
70 .SH RETURN VALUE
71 On success, these functions return the exponent of
72 .IR x .
73 .PP
75 .I x
76 is a NaN,
77 a NaN is returned.
78 .PP
80 .I x
81 is zero, then a pole error occurs, and the functions return
82 .RB \- HUGE_VAL ,
83 .RB \- HUGE_VALF ,
85 .RB \- HUGE_VALL ,
86 respectively.
87 .PP
89 .I x
90 is negative infinity or positive infinity, then
91 positive infinity is returned.
92 .SH ERRORS
93 See
94 .BR math_error (7)
95 for information on how to determine whether an error has occurred
96 when calling these functions.
97 .PP
98 The following errors can occur:
99 .TP
100 Pole error: \fIx\fP is 0
101 .\" .I errno
102 .\" is set to
103 .\" .BR ERANGE .
104 A divide-by-zero floating-point exception
105 .RB ( FE_DIVBYZERO )
106 is raised.
108 These functions do not set
109 .IR errno .
110 .\" FIXME . Is it intentional that these functions do not set errno?
111 .\" log(), log2(), log10() do set errno
112 .\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6793
114 .\" .SH HISTORY
115 .\" The
116 .\" .BR logb ()
117 .\" function occurs in 4.3BSD.
118 .\" see IEEE.3 in the 4.3BSD manual
119 .SH ATTRIBUTES
120 For an explanation of the terms used in this section, see
121 .BR attributes (7).
122 .ad l
125 allbox;
126 lbx lb lb
127 l l l.
128 Interface       Attribute       Value
130 .BR logb (),
131 .BR logbf (),
132 .BR logbl ()
133 T}      Thread safety   MT-Safe
137 .sp 1
138 .SH STANDARDS
139 C99, POSIX.1-2001, POSIX.1-2008.
140 .SH SEE ALSO
141 .BR ilogb (3),
142 .BR log (3)