Go to the first, previous, next, last section, table of contents.


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.

    NOTES

  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.


Go to the first, previous, next, last section, table of contents.