11

libsunmath Support for IEEE Modes and Exceptions

ieee_handler() is used primarily to establish a signal handler for a particular floating-point exception or group of exceptions.

The syntax of this function is described in the ieee_handler(3M) man page.

This following Pascal program demonstrates how to abort on division by zero.

program TestIEEEHandler(output);

#include <math_p.h>

procedure DivisionHandler( sig: integer;

sip: univ_ptr;

uap: univ_ptr); begin

writeln('Bad data - division by zero.'); end; { DivisionHandler }

var

FpAction, FpException: string;

Zero: integer := 0;

begin

FpAction := 'set'; FpException := 'division';

writeln(ieee_handler(FpAction, FpException, addr(DivisionHandler)));

writeln('1/0 = ', 1 / Zero);

writeln(ieee_handler(FpAction, FpException, SIGFPE_DEFAULT)); writeln('1/0 = ', 1 / Zero);

end.

ieee_flags() is the recommended interface to:

Query or set rounding direction mode

Query or set rounding precision mode

Examine, clear, or set accrued exception flags

242

Pascal 4.0 User’s Guide