DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 5130 (0x140a) Types: TextFile Names: »B«
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦1472c4407⟧ └─⟦3d4b48c74⟧ └─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦2e03b931c⟧ └─⟦3d4b48c74⟧ └─⟦this⟧ └─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦1472c4407⟧ └─⟦6fef9baf9⟧ └─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦2e03b931c⟧ └─⟦6fef9baf9⟧ └─⟦this⟧
with Primitive_Functions; with Long_Primitive_Functions; package body Generic_Primitive_Functions is -- This is a non-portable implementation for the Motorola Mc680X0 architecture -- and with support from the Mc68881 coprocessor package Single renames Primitive_Functions; package Double renames Long_Primitive_Functions; Is_Long : constant Boolean := Float_Type'Base'Digits > Float'Digits; function Exponent (X : Float_Type) return Exponent_Type is begin if Is_Long then return Exponent_Type (Double.Exponent (Long_Float (X))); else return Exponent_Type (Single.Exponent (Float (X))); end if; end Exponent; function Fraction (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Fraction (Long_Float (X))); else return Float_Type (Single.Fraction (Float (X))); end if; end Fraction; procedure Decompose (X : in Float_Type; Fraction : out Float_Type; Exponent : out Exponent_Type) is begin if Is_Long then Double.Decompose (Long_Float (X), Long_Float (Fraction), Integer (Exponent)); else Single.Decompose (Float (X), Float (Fraction), Integer (Exponent)); end if; end Decompose; function Compose (Fraction : Float_Type; Exponent : Exponent_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Compose (Long_Float (Fraction), Integer (Exponent))); else return Float_Type (Single.Compose (Float (Fraction), Integer (Exponent))); end if; end Compose; function Scale (X : Float_Type; Exponent : Exponent_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Scale (Long_Float (X), Integer (Exponent))); else return Float_Type (Single.Scale (Float (X), Integer (Exponent))); end if; end Scale; function Floor (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Floor (Long_Float (X))); else return Float_Type (Single.Floor (Float (X))); end if; end Floor; function Ceiling (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Ceiling (Long_Float (X))); else return Float_Type (Single.Ceiling (Float (X))); end if; end Ceiling; function Round (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Round (Long_Float (X))); else return Float_Type (Single.Round (Float (X))); end if; end Round; function Truncate (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Truncate (Long_Float (X))); else return Float_Type (Single.Truncate (Float (X))); end if; end Truncate; function Remainder (X, Y : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Remainder (Long_Float (X), Long_Float (Y))); else return Float_Type (Single.Remainder (Float (X), Float (Y))); end if; end Remainder; function Adjacent (X, Towards : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Adjacent (Long_Float (X), Long_Float (Towards))); else return Float_Type (Single.Adjacent (Float (X), Float (Towards))); end if; end Adjacent; function Successor (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Successor (Long_Float (X))); else return Float_Type (Single.Successor (Float (X))); end if; end Successor; function Predecessor (X : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Predecessor (Long_Float (X))); else return Float_Type (Single.Predecessor (Float (X))); end if; end Predecessor; function Copy_Sign (Value, Sign : Float_Type) return Float_Type is begin if Is_Long then return Float_Type (Double.Copy_Sign (Long_Float (Value), Long_Float (Sign))); else return Float_Type (Single.Copy_Sign (Float (Value), Float (Sign))); end if; end Copy_Sign; function Leading_Part (X : Float_Type; Radix_Digits : Positive) return Float_Type is begin if Is_Long then return Float_Type (Double.Leading_Part (Long_Float (X), Radix_Digits)); else return Float_Type (Single.Leading_Part (Float (X), Radix_Digits)); end if; end Leading_Part; end Generic_Primitive_Functions;