matherr
[modifiable
math error handler]
SYNOPSIS
#include <math.h>
int matherr(struct exception *e);
DESCRIPTION
matherr
is called whenever a math library function
generates an error. You can replace matherr
by your own subroutine to customize
error treatment. The customized matherr
must return 0 if it fails to resolve
the error, and non-zero if the error is resolved.
When matherr returns a nonzero value, no error message is printed and the value of errno is not modified.
You can accomplish either or both of these things in your own matherr using the information passed in the structure *e. The following example shows the exception structure (defined in math.h).
struct exception { int type; char *name; double arg1, arg2, retval; int err; };
The members of the exception structure have the following meanings.
The error types defined in math.h represent possible mathematical errors as follows.
RETURNS
The library definition for matherr
returns 0
in all cases. You can change the calling
function’s result from a customized matherr
by modifying e->retval,
which propagates backs to the caller. If matherr
returns 0
(indicating that it was not able to
resolve the error) the caller sets errno
to an appropriate value, and prints
an error message.
COMPLIANCE
matherr
is not ANSI C.