(29 . 23)(29 . 23)
1495 procedure FZ_IDiv(Dividend : in FZ;
1496 Divisor : in FZ;
1497 Quotient : out FZ;
1498 Remainder : out FZ);
1499 pragma Precondition(Dividend'Length = Divisor'Length and
1500 Quotient'Length = Remainder'Length and
1501 Dividend'Length = Quotient'Length);
1502 Remainder : out FZ)
1503 with Pre => Dividend'Length = Divisor'Length and
1504 Quotient'Length = Remainder'Length and
1505 Dividend'Length = Quotient'Length;
1506
1507 -- Exactly same thing as IDiv, but keep only the Quotient
1508 procedure FZ_Div(Dividend : in FZ;
1509 Divisor : in FZ;
1510 Quotient : out FZ);
1511 pragma Precondition(Dividend'Length = Divisor'Length and
1512 Dividend'Length = Quotient'Length);
1513 Quotient : out FZ)
1514 with Pre => Dividend'Length = Divisor'Length and
1515 Dividend'Length = Quotient'Length;
1516
1517 -- Modulus. Permits the asymmetric Dividend and Divisor in FZ_Mod_Exp.
1518 procedure FZ_Mod(Dividend : in FZ;
1519 Divisor : in FZ;
1520 Remainder : out FZ);
1521 pragma Precondition(Dividend'Length >= Divisor'Length and
1522 Divisor'Length = Remainder'Length);
1523 Remainder : out FZ)
1524 with Pre => Dividend'Length >= Divisor'Length and
1525 Divisor'Length = Remainder'Length;
1526
1527 end FZ_Divis;