<<>> <> <> <> <<>> <> <<>> ExtendedFloatSupport: DEFINITIONS ~ BEGIN Extended: TYPE[SIZE[ARRAY [0..4) OF REAL]]; <> Add: SAFE PROC [a, b: Extended] RETURNS [result: Extended] ~ TRUSTED INLINE { PAdd[@a,@b,@result]; }; Subtract: SAFE PROC [a, b: Extended] RETURNS [result: Extended] ~ TRUSTED INLINE { PSubtract[@a,@b,@result]; }; Multiply: SAFE PROC [a, b: Extended] RETURNS [result: Extended] ~ TRUSTED INLINE { PMultiply[@a,@b,@result]; }; Divide: SAFE PROC [a, b: Extended] RETURNS [result: Extended] ~ TRUSTED INLINE { PDivide[@a,@b,@result]; }; Less: SAFE PROC [a, b: Extended] RETURNS [BOOL] ~ TRUSTED INLINE { RETURN [PLess[@a,@b]]; }; Equal: SAFE PROC [a, b: Extended] RETURNS [BOOL] ~ TRUSTED INLINE { RETURN [PEqual[@a,@b]]; }; ExtendedFromDReal: SAFE PROC [a: DREAL] RETURNS [result: Extended] ~ TRUSTED INLINE { PExtendedFromDReal[@a,@result]; }; DRealFromExtended: SAFE PROC [a: Extended] RETURNS [result: DREAL] ~ TRUSTED INLINE { PDRealFromExtended[@a,@result]; }; <> PExtended: TYPE ~ POINTER TO READONLY Extended; PExtendedResult: TYPE ~ POINTER TO Extended; PAdd: PROC [PExtended, PExtended, PExtendedResult] ~ MACHINE CODE { "XR_ExtendedFloatAdd" }; PSubtract: PROC [PExtended, PExtended, PExtendedResult] ~ MACHINE CODE { "XR_ExtendedFloatSubtract" }; PMultiply: PROC [PExtended, PExtended, PExtendedResult] ~ MACHINE CODE { "XR_ExtendedFloatMultiply" }; PDivide: PROC [PExtended, PExtended, PExtendedResult] ~ MACHINE CODE { "XR_ExtendedFloatDivide" }; PLess: PROC [PExtended, PExtended] RETURNS [BOOL] ~ MACHINE CODE { "XR_ExtendedFloatLess" }; PEqual: PROC [PExtended, PExtended] RETURNS [BOOL] ~ MACHINE CODE { "XR_ExtendedFloatEqual" }; PExtendedFromDReal: PROC [POINTER TO READONLY DREAL, PExtendedResult] ~ MACHINE CODE { "XR_ExtendedFromDReal" }; PDRealFromExtended: PROC [PExtended, POINTER TO DREAL] ~ MACHINE CODE { "XR_DRealFromExtended" }; END.