---------------------------------------------------------------- -- Exponentiation by Square and Multiply (Exp_mod_f.adb) -- -- -- ---------------------------------------------------------------- with Gnat.Io; use Gnat.Io; with finite_fields_ch5; use finite_fields_ch5; with polynomials_ch5; use polynomials_ch5; procedure Exp_mod_f is A,F,K: Polynomial_m1; B,C: Polynomial_m1; begin loop for i in 0 .. m-1 loop Put("A(");Put(i);Put(") = "); Get(A(i)); end loop; New_Line; for i in 0 .. m-1 loop Put("F(");Put(i);Put(") = "); Get(F(i)); end loop; New_Line; for i in 0 .. m-1 loop Put("K(");Put(i);Put(") = "); Get(K(i)); end loop; New_Line; for i in 0 .. m-1 loop B(i) := 0; end loop; C := A; B(0) := 1; for i in 0 .. m-1 loop if K(i) = 1 then B := LSEfirst(B,C,F); end if; C := LSEfirst(C,C,F); end loop; Put("B = "); for i in 0 .. m-1 loop Put(B(i)); Put(","); end loop; New_Line; New_Line; end loop; end Exp_mod_f;