with integer_io; use integer_io; with Timing_Package; use Timing_Package; with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Scaling; use Scaling; with Projective_Transformations; use Projective_Transformations; with Standard_Root_Refiners; use Standard_Root_Refiners; procedure Driver_for_Root_Refining ( file : in file_type; scalp,p : in Poly_Sys; basis : in natural; scalvec : in Link_to_Vector; sols : in out Solution_List ) is numb : natural; epsxa,epsfa : constant double_float := 10.0**(-8); tolsing : constant double_float := 10.0**(-8); timer : timing_widget; len : constant natural := Length_Of(sols); begin if (len /= 0) and then Head_Of(sols).n > p'last then Affine_Transformation(sols); end if; if scalvec /= null then put_line(file,"ROOT REFINING ON THE SCALED SYSTEM :"); tstart(timer); numb := 0; Reporting_Root_Refiner (file,scalp,sols,epsxa,epsfa,tolsing,numb,5,false); tstop(timer); new_line(file); print_times(file,timer,"Root Refining on the Scaled System"); Scale(basis,scalvec.all,sols); end if; tstart(timer); numb := 0; Reporting_Root_Refiner(file,p,sols,epsxa,epsfa,tolsing,numb,5,false); tstop(timer); new_line(file); print_times(file,timer,"Root Refining"); end Driver_for_Root_Refining;