<> <> <> <> <> DIRECTORY Real USING [ExceptionFlags, UsualExceptions]; <> <> <<>> RealOps: CEDAR DEFINITIONS = BEGIN RoundingMode: TYPE = MACHINE DEPENDENT {rn, rz, rm, rp}; DefaultRoundingMode: RoundingMode = rn; <> <> <> <> InfinityMode: TYPE = MACHINE DEPENDENT {projective, affine}; DefaultInfinityMode: InfinityMode = projective; <> <> NormalizationMode: TYPE = MACHINE DEPENDENT {warning, normalizing}; DefaultNormalizationMode: NormalizationMode = warning; <> <> Mode: TYPE = MACHINE DEPENDENT RECORD [ blank(0:0..5): [0..77B] _ NULL, im(0:6..6): InfinityMode _ projective, nm(0:7..7): NormalizationMode _ warning, round(0:8..9): RoundingMode _ rn, traps(0:10..15): Real.ExceptionFlags _ Real.UsualExceptions ]; DefMode: Mode = [ blank: 0, im: projective, nm: warning, round: rn, traps: Real.UsualExceptions ]; FixMode: Mode = [ blank: 0, im: projective, nm: warning, round: rz, traps: Real.UsualExceptions ]; SetMode: PROC [new: Mode] RETURNS [old: Mode]; GetMode: PROC RETURNS [Mode]; <> FAdd: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [REAL]; FSub: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [REAL]; FMul: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [REAL]; FDiv: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [REAL]; FComp: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [INTEGER]; FRem: PROC [a, b: REAL, m: Mode _ DefMode] RETURNS [REAL]; Float: PROC [a: LONG INTEGER, m: Mode _ DefMode] RETURNS [REAL]; RoundLI: PROC [a: REAL, m: Mode _ DefMode] RETURNS [LONG INTEGER]; RoundI: PROC [a: REAL, m: Mode _ DefMode] RETURNS [INTEGER]; RoundC: PROC [a: REAL, m: Mode _ DefMode] RETURNS [CARDINAL]; FScale: PROC [a: REAL, scale: INTEGER, m: Mode _ DefMode] RETURNS [REAL]; END. July 5, 1980 3:16 PM; Stewart, created September 28, 1980 8:06 PM; Stewart, Deleted individual mode procs. October 27, 1980 11:23 AM; Stewart, Fixed Mode type for LIB use. June 3, 1982 11:07 am; Stewart, added FScale, SqRt