Error Handling for Mathematical Functions
Error
conditions are customarily
detected by examining the return value of a function and/or the
global error variable
errno
. The variable
errno is declared with type int
in the header file errno.h.
If a function is passed an argument that is outside the domain for
which the function is defined, a “domain
error” occurs, and errno is
assigned the value of the macro
EDOM
. Similarly, if the result of a function
cannot be represented by the type of the function’s
return value, then a “range error”
occurs, and errno is assigned the value
ERANGE
. In the case of an overflow—that
is, if the magnitude of the result is too great for the specified
type—the function returns the value of the macro
HUGE_VAL
, with the appropriate sign. In case of an
underflow—i. e., the magnitude of the result is too
small—the function returns 0.
In addition to
HUGE_VAL (with type double),
ANSI C99 also provides the macros
HUGE_VALF
(type float) and
HUGE_VALL
(type long double),
which are returned by functions of the corresponding types.
Furthermore, ANSI C99 introduces the macros
FP_ILOGB0
and
FP_ILOGBNAN
. The function ilogb(
x
) returns FP_ILOGB0 if
x is equal to 0. If
x is “not a
number” (NaN), ilogb(
x
) returns
the value of FP_ILOGBNAN.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access