MATHERR(3)

NAME
1.40 `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'.
   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: `type'
     The type of mathematical error that occured; macros encoding error
     types are also defined in ``math.h''. `name'
     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. `retval'
     The error return value (what the calling function will return). `err'
     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: `DOMAIN'
     An argument was not in the domain of the function; e.g.
     `log(-1.0)'. `SING'
     The requested calculation would result in a singularity; e.g.
     `pow(0.0,-2.0)' `OVERFLOW'
     A calculation would produce a result too large to represent; e.g.
     `exp(1000.0)'. `UNDERFLOW'
     A calculation would produce a result too small to represent; e.g.
     `exp(-1000.0)'. `TLOSS'
     Total loss of precision. The result would have no significant
     digits; e.g. `sin(10e70)'. `PLOSS'
     Partial loss of precision.

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.

PORTABILITY
`matherr' is not ANSI C.

SEE ALSO
matherr is part of the library. The full documentation for is maintained as a Texinfo manual. If info and are properly installed at your site, the command

    info

will give you access to the complete manual.