with text_io,integer_io; use text_io,integer_io; with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io; with Standard_Floating_Vectors; use Standard_Floating_Vectors; with Standard_Floating_Vectors_io; use Standard_Floating_Vectors_io; with Chebychev_Polynomials; use Chebychev_Polynomials; procedure ts_cheby is procedure Test_Create is k : natural; begin new_line; put_line("Testing the creation of Chebychev polynomials."); new_line; put("Give the degree k : "); get(k); for i in 0..k loop declare pi : constant Vector := Create(i); begin put("The coefficients of the "); put(i,1); put_line("-degree Chebychev polynomial : "); put_line(pi); end; end loop; end Test_Create; procedure Test_Diff is k : natural; ans : character; begin new_line; put_line("Testing the differentiation of Chebychev polynomials."); loop new_line; put("Give the degree k : "); get(k); declare pk : constant Vector := Create(k); dp : constant Vector := Diff(pk); begin put("The coefficients of the "); put(k,1); put_line("-degree Chebychev polynomial : "); put_line(pk); put_line("The coefficients of its derivative : "); put_line(dp); for i in 1..k loop declare dpi : constant Vector := Diff(pk,i); begin put("The coefficients after deriving "); put(i,1); put_line(" times : "); put_line(dpi); end; end loop; end; put("Do you want more tests (y/n) "); get(ans); exit when (ans /= 'y'); end loop; end Test_Diff; procedure Test_Int is k : natural; ans : character; begin new_line; put_line("Testing the Antidifferentiation of Chebychev polynomials."); loop new_line; put("Give the degree k : "); get(k); declare pk : constant Vector := Create(k); dp : constant Vector := Int(pk); begin put("The coefficients of the "); put(k,1); put_line("-degree Chebychev polynomial : "); put_line(pk); put_line("The coefficients of its antiderivative : "); put_line(dp); for i in 1..k loop declare dpi : constant Vector := Int(pk,i); begin put("The coefficients after antideriving "); put(i,1); put_line(" times : "); put_line(dpi); end; end loop; end; put("Do you want more tests (y/n) "); get(ans); exit when (ans /= 'y'); end loop; end Test_Int; procedure Test_Eval is k : natural; ans : character; begin new_line; put_line("Testing the evaluation of Chebychev polynomials."); loop new_line; put("Give the degree k : "); get(k); declare p : constant Vector := Create(k); x : double_float; begin loop put("Give x : "); get(x); put("p(x) : "); put(Eval(p,x)); new_line; put("COS-ARCCOS-eval : "); put(Eval(k,x)); new_line; put("Do you want more evaluations ? (y/n) "); get(ans); exit when (ans /= 'y'); end loop; end; put("Do you want other polynomials to evaluate ? (y/n) "); get(ans); exit when (ans /= 'y'); end loop; end Test_Eval; procedure Main is ans : character; begin new_line; put_line("Testing the manipulation of Chebychev polynomials."); loop new_line; put_line("Choose one of the following :"); put_line(" 0. Exit this program."); put_line(" 1. Creation of Chebychev polynomials."); put_line(" 2. Differentiation of Chebychev polynomials."); put_line(" 3. Antidifferentiation of Chebychev polynomials."); put_line(" 4. Evaluation of Chebychev polynomials."); put("Type 0,1,2,3 or 4 to make your choice : "); get(ans); exit when (ans = '0'); case ans is when '1' => Test_Create; when '2' => Test_Diff; when '3' => Test_Int; when '4' => Test_Eval; when others => null; end case; end loop; end Main; begin Main; end ts_cheby;