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

Page 266
Image 266
HP SunSoft Pascal 4.0 manual Libsunmath Support for Ieee Modes and Exceptions, 242