.\" Copyright (c) 1985 Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     from: @(#)ieee.3	6.4 (Berkeley) 5/6/91
.\" $FreeBSD: src/lib/msun/man/ieee.3,v 1.22 2005/06/16 21:55:45 ru Exp $
.\"
.Dd January 26, 2005
.Dt IEEE 3
.Os
.Sh NAME
.Nm ieee
.Nd IEEE standard 754 for floating-point arithmetic
.Sh DESCRIPTION
The IEEE Standard 754 for Binary Floating-Point Arithmetic
defines representations of floating-point numbers and abstract
properties of arithmetic operations relating to precision,
rounding, and exceptional cases, as described below.
.Ss IEEE STANDARD 754 Floating-Point Arithmetic
Radix: Binary.
.Pp
Overflow and underflow:
.Bd -ragged -offset indent -compact
Overflow goes by default to a signed \*(If.
Underflow is
.Em gradual .
.Ed
.Pp
Zero is represented ambiguously as +0 or \-0.
.Bd -ragged -offset indent -compact
Its sign transforms correctly through multiplication or
division, and is preserved by addition of zeros
with like signs; but x\-x yields +0 for every
finite x.
The only operations that reveal zero's
sign are division by zero and
.Fn copysign x \(+-0 .
In particular, comparison (x > y, x \(>= y, etc.)\&
cannot be affected by the sign of zero; but if
finite x = y then \*(If = 1/(x\-y) \(!= \-1/(y\-x) = \-\*(If.
.Ed
.Pp
Infinity is signed.
.Bd -ragged -offset indent -compact
It persists when added to itself
or to any finite number.
Its sign transforms
correctly through multiplication and division, and
(finite)/\(+-\*(If\0=\0\(+-0
(nonzero)/0 = \(+-\*(If.
But
\*(If\-\*(If, \*(If\(**0 and \*(If/\*(If
are, like 0/0 and sqrt(\-3),
invalid operations that produce \*(Na. ...
.Ed
.Pp
Reserved operands (\*(Nas):
.Bd -ragged -offset indent -compact
An \*(Na is
.Em ( N Ns ot Em a N Ns umber ) .
Some \*(Nas, called Signaling \*(Nas, trap any floating-point operation
performed upon them; they are used to mark missing
or uninitialized values, or nonexistent elements
of arrays.
The rest are Quiet \*(Nas; they are
the default results of Invalid Operations, and
propagate through subsequent arithmetic operations.
If x \(!= x then x is \*(Na; every other predicate
(x > y, x = y, x < y, ...) is FALSE if \*(Na is involved.
.Ed
.Pp
Rounding:
.Bd -ragged -offset indent -compact
Every algebraic operation (+, \-, \(**, /,
\(sr)
is rounded by default to within half an
.Em ulp ,
and when the rounding error is exactly half an
.Em ulp
then
the rounded value's least significant bit is zero.
(An
.Em ulp
is one
.Em U Ns nit
in the
.Em L Ns ast
.Em P Ns lace . )
This kind of rounding is usually the best kind,
sometimes provably so; for instance, for every
x = 1.0, 2.0, 3.0, 4.0, ..., 2.0**52, we find
(x/3.0)\(**3.0 == x and (x/10.0)\(**10.0 == x and ...
despite that both the quotients and the products
have been rounded.
Only rounding like IEEE 754 can do that.
But no single kind of rounding can be
proved best for every circumstance, so IEEE 754
provides rounding towards zero or towards
+\*(If or towards \-\*(If
at the programmer's option.
.Ed
.Pp
Exceptions:
.Bd -ragged -offset indent -compact
IEEE 754 recognizes five kinds of floating-point exceptions,
listed below in declining order of probable importance.
.Bl -column -offset indent "Invalid Operation" "Gradual Underflow"
.Em "Exception	Default Result"
Invalid Operation	\*(Na, or FALSE
Overflow	\(+-\*(If
Divide by Zero	\(+-\*(If
Underflow	Gradual Underflow
Inexact	Rounded value
.El
.Pp
NOTE: An Exception is not an Error unless handled
badly.
What makes a class of exceptions exceptional
is that no single default response can be satisfactory
in every instance.
On the other hand, if a default
response will serve most instances satisfactorily,
the unsatisfactory instances cannot justify aborting
computation every time the exception occurs.
.Ed
.Ss Data Formats
Single-precision:
.Bd -ragged -offset indent -compact
Type name:
.Vt float
.Pp
Wordsize: 32 bits.
.Pp
Precision: 24 significant bits,
roughly like 7 significant decimals.
.Bd -ragged -offset indent -compact
If x and x' are consecutive positive single-precision
numbers (they differ by 1
.Em ulp ) ,
then
.Bd -ragged -compact
5.9e\-08 < 0.5**24 < (x'\-x)/x \(<= 0.5**23 < 1.2e\-07.
.Ed
.Ed
.Pp
.Bl -column "XXX" -compact
Range:	Overflow threshold  = 2.0**128 = 3.4e38
	Underflow threshold = 0.5**126 = 1.2e\-38
.El
.Bd -ragged -offset indent -compact
Underflowed results round to the nearest
integer multiple of 0.5**149 = 1.4e\-45.
.Ed
.Ed
.Pp
Double-precision:
.Bd -ragged -offset indent -compact
Type name:
.Vt double
.Bd -ragged -offset indent -compact
On some architectures,
.Vt long double
is the the same as
.Vt double .
.Ed
.Pp
Wordsize: 64 bits.
.Pp
Precision: 53 significant bits,
roughly like 16 significant decimals.
.Bd -ragged -offset indent -compact
If x and x' are consecutive positive double-precision
numbers (they differ by 1
.Em ulp ) ,
then
.Bd -ragged -compact
1.1e\-16 < 0.5**53 < (x'\-x)/x \(<= 0.5**52 < 2.3e\-16.
.Ed
.Ed
.Pp
.Bl -column "XXX" -compact
Range:	Overflow threshold  = 2.0**1024 = 1.8e308
	Underflow threshold = 0.5**1022 = 2.2e\-308
.El
.Bd -ragged -offset indent -compact
Underflowed results round to the nearest
integer multiple of 0.5**1074 = 4.9e\-324.
.Ed
.Ed
.Pp
Extended-precision:
.Bd -ragged -offset indent -compact
Type name:
.Vt long double
(when supported by the hardware)
.Pp
Wordsize: 96 bits.
.Pp
Precision: 64 significant bits,
roughly like 19 significant decimals.
.Bd -ragged -offset indent -compact
If x and x' are consecutive positive double-precision
numbers (they differ by 1
.Em ulp ) ,
then
.Bd -ragged -compact
1.0e\-19 < 0.5**63 < (x'\-x)/x \(<= 0.5**62 < 2.2e\-19.
.Ed
.Ed
.Pp
.Bl -column "XXX" -compact
Range:	Overflow threshold  = 2.0**16384 = 1.2e4932
	Underflow threshold = 0.5**16382 = 3.4e\-4932
.El
.Bd -ragged -offset indent -compact
Underflowed results round to the nearest
integer multiple of 0.5**16445 = 5.7e\-4953.
.Ed
.Ed
.Pp
Quad-extended-precision:
.Bd -ragged -offset indent -compact
Type name:
.Vt long double
(when supported by the hardware)
.Pp
Wordsize: 128 bits.
.Pp
Precision: 113 significant bits,
roughly like 34 significant decimals.
.Bd -ragged -offset indent -compact
If x and x' are consecutive positive double-precision
numbers (they differ by 1
.Em ulp ) ,
then
.Bd -ragged -compact
9.6e\-35 < 0.5**113 < (x'\-x)/x \(<= 0.5**112 < 2.0e\-34.
.Ed
.Ed
.Pp
.Bl -column "XXX" -compact
Range:	Overflow threshold  = 2.0**16384 = 1.2e4932
	Underflow threshold = 0.5**16382 = 3.4e\-4932
.El
.Bd -ragged -offset indent -compact
Underflowed results round to the nearest
integer multiple of 0.5**16494 = 6.5e\-4966.
.Ed
.Ed
.Ss Additional Information Regarding Exceptions
.Pp
For each kind of floating-point exception, IEEE 754
provides a Flag that is raised each time its exception
is signaled, and stays raised until the program resets
it.
Programs may also test, save and restore a flag.
Thus, IEEE 754 provides three ways by which programs
may cope with exceptions for which the default result
might be unsatisfactory:
.Bl -enum
.It
Test for a condition that might cause an exception
later, and branch to avoid the exception.
.It
Test a flag to see whether an exception has occurred
since the program last reset its flag.
.It
Test a result to see whether it is a value that only
an exception could have produced.
.Pp
CAUTION: The only reliable ways to discover
whether Underflow has occurred are to test whether
products or quotients lie closer to zero than the
underflow threshold, or to test the Underflow
flag.
(Sums and differences cannot underflow in
IEEE 754; if x \(!= y then x\-y is correct to
full precision and certainly nonzero regardless of
how tiny it may be.)
Products and quotients that
underflow gradually can lose accuracy gradually
without vanishing, so comparing them with zero
(as one might on a VAX) will not reveal the loss.
Fortunately, if a gradually underflowed value is
destined to be added to something bigger than the
underflow threshold, as is almost always the case,
digits lost to gradual underflow will not be missed
because they would have been rounded off anyway.
So gradual underflows are usually
.Em provably
ignorable.
The same cannot be said of underflows flushed to 0.
.El
.Pp
At the option of an implementor conforming to IEEE 754,
other ways to cope with exceptions may be provided:
.Bl -enum
.It
ABORT.
This mechanism classifies an exception in
advance as an incident to be handled by means
traditionally associated with error-handling
statements like "ON ERROR GO TO ...".
Different
languages offer different forms of this statement,
but most share the following characteristics:
.Bl -dash
.It
No means is provided to substitute a value for
the offending operation's result and resume
computation from what may be the middle of an
expression.
An exceptional result is abandoned.
.It
In a subprogram that lacks an error-handling
statement, an exception causes the subprogram to
abort within whatever program called it, and so
on back up the chain of calling subprograms until
an error-handling statement is encountered or the
whole task is aborted and memory is dumped.
.El
.It
STOP.
This mechanism, requiring an interactive
debugging environment, is more for the programmer
than the program.
It classifies an exception in
advance as a symptom of a programmer's error; the
exception suspends execution as near as it can to
the offending operation so that the programmer can
look around to see how it happened.
Quite often
the first several exceptions turn out to be quite
unexceptionable, so the programmer ought ideally
to be able to resume execution after each one as if
execution had not been stopped.
.It
\&... Other ways lie beyond the scope of this document.
.El
.Pp
Ideally, each
elementary function should act as if it were indivisible, or
atomic, in the sense that ...
.Bl -enum
.It
No exception should be signaled that is not deserved by
the data supplied to that function.
.It
Any exception signaled should be identified with that
function rather than with one of its subroutines.
.It
The internal behavior of an atomic function should not
be disrupted when a calling program changes from
one to another of the five or so ways of handling
exceptions listed above, although the definition
of the function may be correlated intentionally
with exception handling.
.El
.Pp
The functions in
.Nm libm
are only approximately atomic.
They signal no inappropriate exception except possibly ...
.Bl -tag -width indent -offset indent -compact
.It Xo
Over/Underflow
.Xc
when a result, if properly computed, might have lain barely within range, and
.It Xo
Inexact in
.Fn cabs ,
.Fn cbrt ,
.Fn hypot ,
.Fn log10
and
.Fn pow
.Xc
when it happens to be exact, thanks to fortuitous cancellation of errors.
.El
Otherwise, ...
.Bl -tag -width indent -offset indent -compact
.It Xo
Invalid Operation is signaled only when
.Xc
any result but \*(Na would probably be misleading.
.It Xo
Overflow is signaled only when
.Xc
the exact result would be finite but beyond the overflow threshold.
.It Xo
Divide-by-Zero is signaled only when
.Xc
a function takes exactly infinite values at finite operands.
.It Xo
Underflow is signaled only when
.Xc
the exact result would be nonzero but tinier than the underflow threshold.
.It Xo
Inexact is signaled only when
.Xc
greater range or precision would be needed to represent the exact result.
.El
.Sh SEE ALSO
.Xr fenv 3 ,
.Xr ieee_test 3 ,
.Xr math 3
.Pp
An explanation of IEEE 754 and its proposed extension p854
was published in the IEEE magazine MICRO in August 1984 under
the title "A Proposed Radix- and Word-length-independent
Standard for Floating-point Arithmetic" by
.An "W. J. Cody"
et al.
The manuals for Pascal, C and BASIC on the Apple Macintosh
document the features of IEEE 754 pretty well.
Articles in the IEEE magazine COMPUTER vol.\& 14 no.\& 3 (Mar.\&
1981), and in the ACM SIGNUM Newsletter Special Issue of
Oct.\& 1979, may be helpful although they pertain to
superseded drafts of the standard.
.Sh STANDARDS
.St -ieee754
