GNU Info

Info Node: (libc.info)Math Error Reporting

(libc.info)Math Error Reporting


Prev: Status bit operations Up: Floating Point Errors
Enter node , (file) or (file)node

Error Reporting by Mathematical Functions
-----------------------------------------

   Many of the math functions are defined only over a subset of the
real or complex numbers.  Even if they are mathematically defined,
their result may be larger or smaller than the range representable by
their return type.  These are known as "domain errors", "overflows", and
"underflows", respectively.  Math functions do several things when one
of these errors occurs.  In this manual we will refer to the complete
response as "signalling" a domain error, overflow, or underflow.

   When a math function suffers a domain error, it raises the invalid
exception and returns NaN.  It also sets ERRNO to `EDOM'; this is for
compatibility with old systems that do not support IEEE 754 exception
handling.  Likewise, when overflow occurs, math functions raise the
overflow exception and return oo or -oo as appropriate.  They also set
ERRNO to `ERANGE'.  When underflow occurs, the underflow exception is
raised, and zero (appropriately signed) is returned.  ERRNO may be set
to `ERANGE', but this is not guaranteed.

   Some of the math functions are defined mathematically to result in a
complex value over parts of their domains.  The most familiar example of
this is taking the square root of a negative number.  The complex math
functions, such as `csqrt', will return the appropriate complex value
in this case.  The real-valued functions, such as `sqrt', will signal a
domain error.

   Some older hardware does not support infinities.  On that hardware,
overflows instead return a particular very large number (usually the
largest representable number).  `math.h' defines macros you can use to
test for overflow on both old and new hardware.

 - Macro: double HUGE_VAL
 - Macro: float HUGE_VALF
 - Macro: long double HUGE_VALL
     An expression representing a particular very large number.  On
     machines that use IEEE 754 floating point format, `HUGE_VAL' is
     infinity.  On other machines, it's typically the largest positive
     number that can be represented.

     Mathematical functions return the appropriately typed version of
     `HUGE_VAL' or `-HUGE_VAL' when the result is too large to be
     represented.


automatically generated by info2www version 1.2.2.9