Contents   Index   Search   Previous   Next
 F.2 The Package Decimal
Static Semantics
1
   The library package
Decimal has the following declaration: 
2
package Ada.Decimal is
   pragma Pure(Decimal); 
3
   Max_Scale : constant := implementation-defined;
   Min_Scale : constant := implementation-defined; 
4
   Min_Delta : constant := 10.0**(-Max_Scale);
   Max_Delta : constant := 10.0**(-Min_Scale); 
5
   Max_Decimal_Digits : constant := implementation-defined; 
6
   generic
      type Dividend_Type  is delta <> digits <>;
      type Divisor_Type   is delta <> digits <>;
      type Quotient_Type  is delta <> digits <>;
      type Remainder_Type is delta <> digits <>;
   procedure Divide (Dividend  : in Dividend_Type;
                     Divisor   : in Divisor_Type;
                     Quotient  : out Quotient_Type;
                     Remainder : out Remainder_Type);
   pragma Convention(Intrinsic, Divide); 
7
end Ada.Decimal;
8
   Max_Scale is the largest N such that 10.0**(-N)
is allowed as a decimal type's delta. Its type is universal_integer.
9
   Min_Scale is the smallest N such that 10.0**(-N)
is allowed as a decimal type's delta. Its type is universal_integer.
10
    Min_Delta is the smallest value allowed for delta
in a decimal_fixed_point_definition.
Its type is universal_real.
11
    Max_Delta is the largest value allowed for delta
in a decimal_fixed_point_definition.
Its type is universal_real.
12
    Max_Decimal_Digits is the largest value allowed
for digits in a decimal_fixed_point_definition.
Its type is universal_integer. 
Static Semantics
13
    The effect of Divide is as follows. The value
of Quotient is Quotient_Type(Dividend/Divisor). The value of Remainder
is Remainder_Type(Intermediate), where Intermediate is the difference
between Dividend and the product of Divisor and Quotient;  this result
is computed exactly. 
Implementation Requirements
14
    Decimal.Max_Decimal_Digits shall be at least
18.
15
    Decimal.Max_Scale shall be at least 18.
16
    Decimal.Min_Scale shall be at most 0. 
17
1  The effect of division
yielding a quotient with control over rounding versus truncation is obtained
by applying either the function attribute Quotient_Type'Round or the
conversion Quotient_Type to the expression Dividend/Divisor. 
Contents   Index   Search   Previous   Next   Legal