Manpage of MATHERR

Google
Web www.fiveanddime.net

MATHERR

Section: NEWLIB (3)
Updated: 2005 Feb 23
Index Return to Main Contents
 

NAME

1.36 `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 libm library. The full documentation for libm is maintained as a Texinfo manual. If info and libm are properly installed at your site, the command
info libm

will give you access to the complete manual.


 

Index

NAME
SYNOPSIS
DESCRIPTION
RETURNS
PORTABILITY
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 21:25:25 GMT, May 16, 2005



www.fiveanddime.net








Google
Web www.fiveanddime.net