Contents Index 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;
7.a
Implementation defined: The
values of named numbers in the package 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.
12.a
Reason: The name is Max_Decimal_Digits
versus Max_Digits, in order to avoid confusion with the named number
System.Max_Digits relevant to floating point.
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 Previous Next Legal