---------------------------------------------------------------- -- Polynomials package (polynomials.ads) -- -- Used in division example of ch 7 -- ---------------------------------------------------------------- package polynomials is m: constant natural := 8; p: constant natural := 2; subtype Natural_Mod_P is Natural range 0 .. P-1; type Polynomial is array(0 .. M) of Natural_Mod_P; function Degree(A: Polynomial) return Natural; function Subtract(A, B: Polynomial) return Polynomial; function Invert(Y: Natural_Mod_P) return Natural_Mod_P; function Product(A: Polynomial; B: Natural_Mod_P) return Polynomial; function Shift_One(A: Polynomial) return Polynomial; function Divide_By_X(A, F: Polynomial) return Polynomial; function Add(A, B: Polynomial) return Polynomial; function Multiply_By_X(A, F: Polynomial) return Polynomial; function Multiply_By_X(A: Polynomial) return Polynomial; function Product_Mod_F(A, B, F: Polynomial) return Polynomial; function Quotient(Num, Den: Polynomial) return Polynomial; function Remainder(Num, Den: Polynomial) return Polynomial; function Shift(A: Polynomial; T: Natural) return Polynomial; function Shift(A, F: Polynomial; T: Natural) return Polynomial; end polynomials;