11

DOMAIN

Argument domain exception

SING

Argument singularity

OVERFLOW

Overflow range exception

UNDERFLOW

Underflow range exception

TLOSS

Total loss of significance

PLOSS

Partial loss of significance

 

 

If your matherr() function returns a non-zero result, no exception message is printed, and errno is not set.

program TestMatherr(output);

#include <math_p.h>

function matherr(var info: exception): integer; begin

case info.kind of

DOMAIN: begin

{ change sqrt to return sqrt(-arg1), not NaN }

if substr(info.name^, 1, length('sqrt')) = 'sqrt' then begin info.retval := sqrt(-info.arg1);

matherr := 1; { No exception message will be printed } end;

end; otherwise

matherr := 0;

end;

end;

begin

writeln('Error handling function'); writeln('sqrt(-1)= ', sqrt(-1));

end.

Math Libraries

241