# F.2 The Package Decimal

This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue

#### Static Semantics

1The library package Decimal has the following declaration:

```
package Ada.Decimal
with Pure is
3Max_Scale : constant := implementation-defined;
Min_Scale : constant := implementation-defined;
4Min_Delta : constant := 10.0**(-Max_Scale);
Max_Delta : constant := 10.0**(-Min_Scale);
5Max_Decimal_Digits : constant := implementation-defined;
6/3generic
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)
with Convention => Intrinsic;
7end Ada.Decimal;
```

Max_Scale is the largest N such that 10.0**(–N) is allowed as a decimal type's delta. Its type is *universal_integer*.

Min_Scale is the smallest N such that 10.0**(–N) is allowed as a decimal type's delta. Its type is *universal_integer*.

Min_Delta is the smallest value allowed for *delta* in a `decimal_fixed_point_definition`

. Its type is *universal_real*.

Max_Delta is the largest value allowed for *delta* in a `decimal_fixed_point_definition`

. Its type is *universal_real*.

Max_Decimal_Digits is the largest value allowed for *digits* in a `decimal_fixed_point_definition`

. Its type is *universal_integer*.

#### Static Semantics

13The 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

14Decimal.Max_Decimal_Digits shall be at least 18.

Decimal.Max_Scale shall be at least 18.

Decimal.Min_Scale shall be at most 0.