INTERFACEFPU ; 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.