(* Copyright (C) 1992, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* *) (* Last modified on Tue Oct 31 14:00:00 BRZ 1995 by stolfi *) (* modified on Mon Jun 21 15:44:49 PDT 1993 by mcjones *) (* modified on Fri May 7 14:47:22 PDT 1993 by muller *) INTERFACE FPU_Patched; IMPORT Ctypes; TYPE fp_bool_t = Ctypes.int; (* Boolean predicate result *) <* 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): fp_bool_t; <* EXTERNAL *> PROCEDURE isnan(x: LONGREAL): fp_bool_t; <* EXTERNAL *> PROCEDURE signbit(x: LONGREAL): INTEGER; <* EXTERNAL *> PROCEDURE sqrt(x: LONGREAL): LONGREAL; TYPE fp_class_t = Ctypes.int; (* IEEE FP number class; actually one of "[FP_SNAN .. FP_PNORM]" *) CONST (* fpclass_t *) FP_SNAN = 0; (* signaling NaN *) FP_QNAN = 1; (* quiet NaN *) FP_NINF = 2; (* negative infinity *) FP_PINF = 3; (* positive infinity *) FP_NDENORM = 4; (* negative denormalized non-zero *) FP_PDENORM = 5; (* positive denormalized non-zero *) FP_NZERO = 6; (* -0.0 *) FP_PZERO = 7; (* +0.0 *) FP_NNORM = 8; (* negative normalized non-zero *) FP_PNORM = 9; (* positive normalized non-zero *) <* EXTERNAL *> PROCEDURE fp_class(x: LONGREAL): fp_class_t; TYPE fp_rnd_t = Ctypes.int; (* IEEE FP rounding mode; actually one of "FP_RN", "FP_RZ", "FP_RP", "FP_RM". NOTE: the values given are chosen to match those used by the RD (Round Direction) field of the FSR (Floating Point State Register). *) CONST (* TYPE fp_rnd_t *) FP_RN = 0; (* round to nearest representable number, tie -> even *) FP_RZ = 1; (* round toward zero (truncate) *) FP_RP = 2; (* round toward plus infinity *) FP_RM = 3; (* round toward minus infinity *) <* EXTERNAL *> PROCEDURE fpsetround (t: fp_rnd_t): fp_rnd_t; (* set rounding mode, return previous *) <* EXTERNAL *> PROCEDURE fpgetround(): fp_rnd_t; (* return current rounding mode *) END FPU_Patched.