with text_io,integer_io; use text_io,integer_io;
with Communications_with_User; use Communications_with_User;
with Multprec_Floating_Numbers; use Multprec_Floating_Numbers;
with Multprec_Floating_Numbers_io; use Multprec_Floating_Numbers_io;
with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
with Standard_Complex_Poly_Systems_io; use Standard_Complex_Poly_Systems_io;
with Standard_Complex_Solutions; use Standard_Complex_Solutions;
with Standard_Complex_Solutions_io; use Standard_Complex_Solutions_io;
with Standard_to_Multprec_Convertors; use Standard_to_Multprec_Convertors;
with Multprec_Complex_Vectors; use Multprec_Complex_Vectors;
with Multprec_Complex_Vectors_io; use Multprec_Complex_Vectors_io;
with Multprec_Complex_Poly_Systems; use Multprec_Complex_Poly_Systems;
with Multprec_Complex_Poly_SysFun; use Multprec_Complex_Poly_SysFun;
with Multprec_Complex_Solutions; use Multprec_Complex_Solutions;
with Multprec_Complex_Solutions_io; use Multprec_Complex_Solutions_io;
with Multprec_Residual_Evaluations; use Multprec_Residual_Evaluations;
procedure ts_mreseva is
-- DESCRIPTION : test on multi-precision residual computation.
procedure Test_Solution_Residuals
( p : in Multprec_Complex_Poly_Systems.Poly_Sys ) is
outfile,solsfile : file_type;
p_eval : Multprec_Complex_Poly_SysFun.Eval_Poly_Sys(p'range) := Create(p);
stsols : Standard_Complex_Solutions.Solution_List;
mpsols : Multprec_Complex_Solutions.Solution_List;
begin
new_line;
put_line("Reading the name of the output file.");
Read_Name_and_Create_File(outfile);
new_line;
put_line("Reading the name of the file with the solutions.");
Read_Name_and_Open_File(solsfile);
get(solsfile,stsols);
mpsols := Create(stsols);
-- get(solsfile,mpsols);
put_line(outfile,"The list of solutions : ");
put(outfile,mpsols);
Residuals(outfile,p_eval,mpsols);
end Test_Solution_Residuals;
procedure Interactive_Test_Residuals
( p : in Multprec_Complex_Poly_Systems.Poly_Sys ) is
p_eval : Multprec_Complex_Poly_SysFun.Eval_Poly_Sys(p'range) := Create(p);
root,eva : Vector(p'range);
res : Floating_Number;
ans : character;
begin
loop
new_line;
put("Give "); put(root'last,1);
put_line(" complex numbers for the root : ");
get(root);
eva := Eval(p_eval,root);
put_line("The evaluated root : "); put_line(eva);
res := Residual(p_eval,root);
put("The residual : "); put(res); new_line;
put("Do you want more tests ? (y/n) "); Ask_Yes_or_No(ans);
Clear(root); Clear(eva); Clear(res);
exit when (ans /= 'y');
end loop;
end Interactive_Test_Residuals;
procedure Main is
lp : Standard_Complex_Poly_Systems.Link_to_Poly_Sys;
ans : character;
begin
put_line("Choose one of the following : ");
put_line(" 1. Evaluate user-given vectors");
put_line(" 2. Residuals for a solution list.");
put("Type 1 or 2 to select : "); Ask_Alternative(ans,"12");
new_line;
get(lp);
declare
mp : Multprec_Complex_Poly_Systems.Poly_Sys(lp'range) := Convert(lp.all);
begin
if ans = '1'
then Interactive_Test_Residuals(mp);
else Test_Solution_Residuals(mp);
end if;
end;
end Main;
begin
new_line;
put_line("Test on the multi-precision residual computation.");
new_line;
Main;
end ts_mreseva;