with text_io; use text_io;
with Communications_with_User; use Communications_with_User;
with Timing_Package; use Timing_Package;
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 Scaling; use Scaling;
with Black_Box_Root_Counting;
with Black_Polynomial_Continuations; use Black_Polynomial_Continuations;
procedure bablphc ( infilename,outfilename : in string ) is
procedure Read_System ( file : in out file_type; filename : in string;
p : in out Link_to_Poly_Sys ) is
begin
if filename /= ""
then Open_Input_File(file,filename);
get(file,p);
end if;
exception
when others => put_line("Something is wrong with argument file...");
p := null; return;
end Read_System;
procedure Timing_Summary ( file : in file_type;
roco,hoco,poco,total : in duration ) is
b0 : constant string :=
" ---------------------------------------------------------------------";
b1 : constant string :=
" | TIMING INFORMATION SUMMARY |";
b2 : constant string :=
" | root counts | start system | continuation | total time |";
begin
put_line(file,b0);
put_line(file,b1);
put_line(file,b0);
put_line(file,b2);
put_line(file,b0);
put(file," | ");
print_hms(file,roco); put(file," | ");
print_hms(file,hoco); put(file," | ");
print_hms(file,poco); put(file," | ");
print_hms(file,total); put_line(file," |");
put_line(file,b0);
end Timing_Summary;
procedure Main is
timer : timing_widget;
infile,outfile : file_type;
p,q : Link_to_Poly_Sys;
rc : natural;
sols : Solution_List;
roco,hoco,poco,total : duration;
begin
Read_System(infile,infilename,p);
if p = null
then new_line; get(p);
end if;
Create_Output_File(outfile,outfilename);
put(outfile,p'last,p.all);
q := new Poly_Sys(p'range);
tstart(timer);
declare
pp : Poly_Sys(p'range) := p.all;
begin
Black_Box_Root_Counting(outfile,pp,rc,q.all,sols,roco,hoco);
if rc /= 0
then
Scale(pp);
Black_Box_Polynomial_Continuation(outfile,pp,q.all,sols,poco);
end if;
end;
tstop(timer);
total := Elapsed_User_Time(timer);
Close(infile);
new_line(outfile);
print_times(outfile,timer,"Solving the polynomial system");
new_line(outfile);
Timing_Summary(outfile,roco,hoco,poco,total);
Close(outfile);
end Main;
begin
Main;
end bablphc;