float/src/SPARC/FPU.i3


 Copyright (C) 1992, Xerox                                                 

INTERFACE FPU;

IMPORT Ctypes, FloatMode;

<* EXTERNAL scalbn *> PROCEDURE scalb(x: LONGREAL; n: INTEGER): LONGREAL;
<* EXTERNAL *> PROCEDURE ilogb(x: LONGREAL): INTEGER;
<* EXTERNAL *> PROCEDURE logb(x: LONGREAL): LONGREAL;
<* EXTERNAL *> PROCEDURE nextafter(x, y: LONGREAL): LONGREAL;
<* EXTERNAL *> PROCEDURE copysign(x, y: LONGREAL): LONGREAL;
<* EXTERNAL *> PROCEDURE finite(x: LONGREAL): BOOLEAN;
<* EXTERNAL *> PROCEDURE isnan(x: LONGREAL): BOOLEAN;
<* EXTERNAL *> PROCEDURE fp_class(x: LONGREAL): INTEGER;
<* EXTERNAL *> PROCEDURE signbit(x: LONGREAL): INTEGER;
<* EXTERNAL *> PROCEDURE sqrt(x: LONGREAL): LONGREAL;
<* EXTERNAL *> PROCEDURE ieee_flags(action, mode, in: Ctypes.char_star;
				    VAR out: Ctypes.char_star): INTEGER;

TYPE
  SigFPEHandler = PROCEDURE(sig, code: INTEGER; scp, addr: ADDRESS)
		      RAISES {FloatMode.Trap};

<* EXTERNAL *> PROCEDURE ieee_handler(action, exception: Ctypes.char_star;
				      hdl: SigFPEHandler): INTEGER;

<* EXTERNAL *> PROCEDURE sigfpe(code: INTEGER; hdl: SigFPEHandler): INTEGER;

END FPU.

FPU's implementation is in:


interface FloatMode is in: