HP SunSoft Pascal 4.0 User Manual

Page 265

Advertising
background image

Math Libraries

241

11

If your

matherr()

function returns a non-zero result, no exception message is

printed, and

errno

is not set.

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

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.

Advertising