<<>> <> <> <> <> <> DIRECTORY Real USING [ExceptionFlags, UsualExceptions]; <> <> <<>> RealOps: CEDAR DEFINITIONS = BEGIN RoundingMode: TYPE = MACHINE DEPENDENT {rn(0), rz(1), rm(2), rp(3)}; DefaultRoundingMode: RoundingMode = rn; <> <> <> <> InfinityMode: TYPE = MACHINE DEPENDENT {projective(0), affine(1)}; DefaultInfinityMode: InfinityMode = projective; <> <> NormalizationMode: TYPE = MACHINE DEPENDENT {warning(0), normalizing(1)}; 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]; <> ModalFAdd: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [REAL]; ModalFSub: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [REAL]; ModalFMul: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [REAL]; ModalFDiv: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [REAL]; ModalFComp: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [INTEGER]; ModalFRem: PROC [a, b: REAL, m: Mode ¬ DefMode] RETURNS [REAL]; ModalFloat: PROC [a: LONG INTEGER, m: Mode ¬ DefMode] RETURNS [REAL]; ModalRound: PROC [a: REAL, m: Mode ¬ DefMode] RETURNS [INT]; ModalRoundI: PROC [a: REAL, m: Mode ¬ DefMode] RETURNS [INTEGER]; ModalRoundC: PROC [a: REAL, m: Mode ¬ DefMode] RETURNS [CARDINAL]; ModalFScale: 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