mirror of https://github.com/mkerrisk/man-pages
329 lines
7.2 KiB
Plaintext
329 lines
7.2 KiB
Plaintext
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "<float.h>" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" <float.h>
|
|
.SH NAME
|
|
float.h \- floating types
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fB#include <float.h>\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
The characteristics of floating types are defined in terms of a model
|
|
that describes a representation of floating-point numbers
|
|
and values that provide information about an implementation's floating-point
|
|
arithmetic.
|
|
.LP
|
|
The following parameters are used to define the model for each floating-point
|
|
type:
|
|
.TP 7
|
|
\fIs\fP
|
|
Sign (\(+-1).
|
|
.TP 7
|
|
\fIb\fP
|
|
Base or radix of exponent representation (an integer >1).
|
|
.TP 7
|
|
\fIe\fP
|
|
Exponent (an integer between a minimum \fIe\fP_min and a maximum \fIe\fP_max).
|
|
.TP 7
|
|
\fIp\fP
|
|
Precision (the number of base-\fIb\fP digits in the significand).
|
|
.TP 7
|
|
\fIf\fP_k
|
|
Non-negative integers less than \fIb\fP (the significand digits).
|
|
.sp
|
|
.LP
|
|
A floating-point number \fIx\fP is defined by the following model:
|
|
.LP
|
|
.LP
|
|
In addition to normalized floating-point numbers (\fIf\fP_1>0 if \fIx\fP!=0),
|
|
floating types may be able to contain other
|
|
kinds of floating-point numbers, such as subnormal floating-point
|
|
numbers ( \fIx\fP!=0, \fIe\fP= \fIe\fP_min, \fIf\fP_1=0) and
|
|
unnormalized floating-point numbers ( \fIx\fP!=0, \fIe\fP> \fIe\fP_min,
|
|
\fIf\fP_1=0), and values that are not floating-point
|
|
numbers, such as infinities and NaNs. A \fINaN\fP is an encoding signifying
|
|
Not-a-Number. A \fIquiet NaN\fP propagates through
|
|
almost every arithmetic operation without raising a floating-point
|
|
exception; a \fIsignaling NaN\fP generally raises a
|
|
floating-point exception when occurring as an arithmetic operand.
|
|
.LP
|
|
The accuracy of the floating-point operations ( \fB'+'\fP , \fB'-'\fP
|
|
, \fB'*'\fP , \fB'/'\fP ) and of the library
|
|
functions in \fI<math.h>\fP and \fI<complex.h>\fP that return floating-point
|
|
results is implementation-defined. The
|
|
implementation may state that the accuracy is unknown.
|
|
.LP
|
|
All integer values in the \fI<float.h>\fP header, except FLT_ROUNDS,
|
|
shall be constant expressions suitable for use in
|
|
\fB#if\fP preprocessing directives; all floating values shall be constant
|
|
expressions. All except DECIMAL_DIG, FLT_EVAL_METHOD,
|
|
FLT_RADIX, and FLT_ROUNDS have separate names for all three floating-point
|
|
types. The floating-point model representation is
|
|
provided for all values except FLT_EVAL_METHOD and FLT_ROUNDS.
|
|
.LP
|
|
The rounding mode for floating-point addition is characterized by
|
|
the implementation-defined value of FLT_ROUNDS:
|
|
.TP 7
|
|
-1
|
|
Indeterminable.
|
|
.TP 7
|
|
\ 0
|
|
Toward zero.
|
|
.TP 7
|
|
\ 1
|
|
To nearest.
|
|
.TP 7
|
|
\ 2
|
|
Toward positive infinity.
|
|
.TP 7
|
|
\ 3
|
|
Toward negative infinity.
|
|
.sp
|
|
.LP
|
|
All other values for FLT_ROUNDS characterize implementation-defined
|
|
rounding behavior.
|
|
.LP
|
|
The values of operations with floating operands and values subject
|
|
to the usual arithmetic conversions and of floating constants
|
|
are evaluated to a format whose range and precision may be greater
|
|
than required by the type. The use of evaluation formats is
|
|
characterized by the implementation-defined value of FLT_EVAL_METHOD:
|
|
.TP 7
|
|
-1
|
|
Indeterminable.
|
|
.TP 7
|
|
\ 0
|
|
Evaluate all operations and constants just to the range and precision
|
|
of the type.
|
|
.TP 7
|
|
\ 1
|
|
Evaluate operations and constants of type \fBfloat\fP and \fBdouble\fP
|
|
to the range and precision of the \fBdouble\fP type;
|
|
evaluate \fBlong double\fP operations and constants to the range and
|
|
precision of the \fBlong double\fP type.
|
|
.TP 7
|
|
\ 2
|
|
Evaluate all operations and constants to the range and precision of
|
|
the \fBlong double\fP type.
|
|
.sp
|
|
.LP
|
|
All other negative values for FLT_EVAL_METHOD characterize implementation-defined
|
|
behavior.
|
|
.LP
|
|
The values given in the following list shall be defined as constant
|
|
expressions with implementation-defined values that are
|
|
greater or equal in magnitude (absolute value) to those shown, with
|
|
the same sign.
|
|
.IP " *" 3
|
|
Radix of exponent representation, \fIb\fP.
|
|
.TP 7
|
|
FLT_RADIX
|
|
.RS
|
|
2
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Number of base-FLT_RADIX digits in the floating-point significand,
|
|
\fIp\fP.
|
|
.TP 7
|
|
FLT_MANT_DIG
|
|
.TP 7
|
|
DBL_MANT_DIG
|
|
.TP 7
|
|
LDBL_MANT_DIG
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Number of decimal digits, \fIn\fP, such that any floating-point number
|
|
in the widest supported floating type with \fIp\fP_max
|
|
radix \fIb\fP digits can be rounded to a floating-point number with
|
|
\fIn\fP decimal digits and back again without change to the
|
|
value.
|
|
.LP
|
|
.TP 7
|
|
DECIMAL_DIG
|
|
.RS
|
|
10
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Number of decimal digits, \fIq\fP, such that any floating-point number
|
|
with \fIq\fP decimal digits can be rounded into a
|
|
floating-point number with \fIp\fP radix \fIb\fP digits and back again
|
|
without change to the \fIq\fP decimal digits.
|
|
.LP
|
|
.TP 7
|
|
FLT_DIG
|
|
.RS
|
|
6
|
|
.RE
|
|
.TP 7
|
|
DBL_DIG
|
|
.RS
|
|
10
|
|
.RE
|
|
.TP 7
|
|
LDBL_DIG
|
|
.RS
|
|
10
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Minimum negative integer such that FLT_RADIX raised to that power
|
|
minus 1 is a normalized floating-point number, \fIe\fP_min.
|
|
.TP 7
|
|
FLT_MIN_EXP
|
|
.TP 7
|
|
DBL_MIN_EXP
|
|
.TP 7
|
|
LDBL_MIN_EXP
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Minimum negative integer such that 10 raised to that power is in the
|
|
range of normalized floating-point numbers.
|
|
.LP
|
|
.TP 7
|
|
FLT_MIN_10_EXP
|
|
.RS
|
|
-37
|
|
.RE
|
|
.TP 7
|
|
DBL_MIN_10_EXP
|
|
.RS
|
|
-37
|
|
.RE
|
|
.TP 7
|
|
LDBL_MIN_10_EXP
|
|
.RS
|
|
-37
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Maximum integer such that FLT_RADIX raised to that power minus 1 is
|
|
a representable finite floating-point number, \fIe\fP_max.
|
|
.TP 7
|
|
FLT_MAX_EXP
|
|
.TP 7
|
|
DBL_MAX_EXP
|
|
.TP 7
|
|
LDBL_MAX_EXP
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Maximum integer such that 10 raised to that power is in the range
|
|
of representable finite floating-point numbers.
|
|
.LP
|
|
.TP 7
|
|
FLT_MAX_10_EXP
|
|
.RS
|
|
+37
|
|
.RE
|
|
.TP 7
|
|
DBL_MAX_10_EXP
|
|
.RS
|
|
+37
|
|
.RE
|
|
.TP 7
|
|
LDBL_MAX_10_EXP
|
|
.RS
|
|
+37
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.LP
|
|
The values given in the following list shall be defined as constant
|
|
expressions with implementation-defined values that are
|
|
greater than or equal to those shown:
|
|
.IP " *" 3
|
|
Maximum representable finite floating-point number.
|
|
.LP
|
|
.TP 7
|
|
FLT_MAX
|
|
.RS
|
|
1E+37
|
|
.RE
|
|
.TP 7
|
|
DBL_MAX
|
|
.RS
|
|
1E+37
|
|
.RE
|
|
.TP 7
|
|
LDBL_MAX
|
|
.RS
|
|
1E+37
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.LP
|
|
The values given in the following list shall be defined as constant
|
|
expressions with implementation-defined (positive) values
|
|
that are less than or equal to those shown:
|
|
.IP " *" 3
|
|
The difference between 1 and the least value greater than 1 that is
|
|
representable in the given floating-point type, \fIb\fP**1-\fIp\fP.
|
|
.TP 7
|
|
FLT_EPSILON
|
|
.RS
|
|
1E-5
|
|
.RE
|
|
.TP 7
|
|
DBL_EPSILON
|
|
.RS
|
|
1E-9
|
|
.RE
|
|
.TP 7
|
|
LDBL_EPSILON
|
|
.RS
|
|
1E-9
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.IP " *" 3
|
|
Minimum normalized positive floating-point number, \fIb\fP**\fIe\fP_min.
|
|
.TP 7
|
|
FLT_MIN
|
|
.RS
|
|
1E-37
|
|
.RE
|
|
.TP 7
|
|
DBL_MIN
|
|
.RS
|
|
1E-37
|
|
.RE
|
|
.TP 7
|
|
LDBL_MIN
|
|
.RS
|
|
1E-37
|
|
.RE
|
|
.sp
|
|
.LP
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
None.
|
|
.SH RATIONALE
|
|
.LP
|
|
None.
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fI<complex.h>\fP , \fI<math.h>\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
event of any discrepancy between this version and the original IEEE and
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
is the referee document. The original Standard can be obtained online at
|
|
http://www.opengroup.org/unix/online.html .
|