File: [local] / OpenXM_contrib / PHC / Ada / Continuation / scanners_for_continuation.adb (download)
Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:22 2000 UTC (23 years, 8 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD Changes since 1.1: +0 -0
lines
Import the second public release of PHCpack.
OKed by Jan Verschelde.
|
with integer_io; use integer_io;
with File_Scanning; use File_Scanning;
with Standard_Floating_Numbers; use Standard_Floating_Numbers;
with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
with Standard_Complex_Numbers_io; use Standard_Complex_Numbers_io;
with Continuation_Parameters; use Continuation_Parameters;
with Process_io; use Process_io;
package body Scanners_for_Continuation is
-- AUXILIAIRIES :
procedure Scan_Natural ( file : in file_type; n : in out natural ) is
-- DESCRIPTION :
-- Scans the current line of the file for a natural number,
-- which should occur after a `:'.
found : boolean;
begin
Scan(file,":",found); get(file,n); skip_line(file);
exception
when others => put_line("INCORRECTLY SPECIFIED NATURAL NUMBER");
raise;
end Scan_Natural;
procedure Scan_Float ( file : in file_type; f : in out double_float ) is
-- DESCRIPTION :
-- Scans the current line of the file for a floating point number,
-- which should occur after a `:'.
found : boolean;
begin
Scan(file,":",found); get(file,f); skip_line(file);
exception
when others => put_line("INCORRECTLY SPECIFIED FLOATING POINT NUMBER");
raise;
end Scan_Float;
procedure Scan_Complex ( file : in file_type; c : in out Complex_Number ) is
-- DESCRIPTION :
-- Scans the current line of the file for a complex number,
-- which should occur after a `:'.
found : boolean;
begin
Scan(file,":",found); get(file,c); skip_line(file);
exception
when others => put_line("INCORRECTLY SPECIFIED COMPLEX NUMBER");
raise;
end Scan_Complex;
-- TARGET PROCEDURES :
procedure Scan_Homotopy_Parameters
( file : in file_type;
k : out natural; a : out Complex_Number ) is
found : boolean;
kk : natural := 0;
aa : Complex_Number := Create(0.0);
begin
Scan_and_Skip(file,"HOMOTOPY PARAMETERS",found);
if found
then Scan_Natural(file,kk); Scan_Complex(file,aa);
end if;
k := kk; a := aa;
exception
when others => put_line("INCORRECTLY SPECIFIED HOMOTOPY PARAMETERS");
raise;
end Scan_Homotopy_Parameters;
procedure Scan_Continuation_Parameters ( file : in file_type ) is
found : boolean;
begin
Scan_and_Skip(file,"CONTINUATION PARAMETERS",found);
if found
then null;
-- Scan_and_Skip(file,"CONDITION",found);
-- Scan_Natural(file,condition);
-- Scan_and_Skip(file,"MONITOR",found);
-- Scan_Natural(file,block_size);
-- Scan_Natural(file,predictor_type);
-- Scan_Natural(file,max_steps);
-- Scan_Float(file,start_end_game);
-- Scan_Natural(file,max_reruns);
-- Scan_and_Skip(file,"STEP CONTROL",found);
-- Scan_Float(file,min_step_size);
-- Scan_Float(file,max_step_size);
-- Scan_Float(file,reduction_factor);
-- Scan_Float(file,expansion_factor);
-- Scan_Natural(file,success_steps);
-- Scan_and_Skip(file,"PATH CLOSENESS",found);
-- Scan_Natural(file,max_iter_path);
-- Scan_Natural(file,max_iter_end);
-- Scan_Float(file,relative_path_residual);
-- Scan_Float(file,absolute_path_residual);
-- Scan_Float(file,relative_path_correction);
-- Scan_Float(file,absolute_path_correction);
-- Scan_Float(file,relative_end_residual);
-- Scan_Float(file,absolute_end_residual);
-- Scan_Float(file,relative_end_correction);
-- Scan_Float(file,absolute_end_correction);
-- Scan_and_Skip(file,"SOLUTIONS",found);
-- Scan_Float(file,tol_inverse_condition);
-- Scan_Float(file,tol_distance);
-- Scan_Float(file,tol_at_infinity);
end if;
exception
when others => put_line("INCORRECTLY SPECIFIED CONTINUATION PARAMETERS");
raise;
end Scan_Continuation_Parameters;
procedure Scan_Output_Parameter ( file : in file_type; op : out natural ) is
found : boolean;
oc : natural := 0;
begin
Scan(file,"OUTPUT PARAMETER",found);
if found
then Scan_Natural(file,oc);
case oc is
when 1 => Set_output_code(s);
when 2 => Set_output_code(p);
when 3 => Set_output_code(c);
when 4 => Set_output_code(sp);
when 5 => Set_output_code(sc);
when 6 => Set_output_code(pc);
when 7 => Set_output_code(spc);
when others => Set_output_code(nil);
end case;
else Set_output_code(nil);
end if;
op := oc;
exception
when others => put_line("INCORRECTLY SPECIFIED OUTPUT PARAMETER");
raise;
end Scan_Output_Parameter;
end Scanners_for_Continuation;