Go forward to modf
Go backward to log1p
Go up to Math
Go to the top op libm

`matherr'--modifiable math error handler

     #include <math.h>
     int matherr(struct exception *E);
`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'.
   This is 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 type of mathematical error that occured; macros encoding error
     types are also defined in ``math.h''.
     a pointer to a null-terminated string holding the name of the math
     library function where the error occurred.
`arg1, arg2'
     The arguments which caused the error.
     The error return value (what the calling function will return).
     If set to be non-zero, this is the new value assigned to `errno'.
   The error types defined in ``math.h'' represent possible mathematical
errors as follows:
     An argument was not in the domain of the function; e.g.
     The requested calculation would result in a singularity; e.g.
     A calculation would produce a result too large to represent; e.g.
     A calculation would produce a result too small to represent; e.g.
     Total loss of precision.  The result would have no significant
     digits; e.g. `sin(10e70)'.
     Partial loss of precision.
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
   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.
`matherr' is not ANSI C.