[BACK]Return to scanners_for_continuation.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Continuation

Annotation of OpenXM_contrib/PHC/Ada/Continuation/scanners_for_continuation.adb, Revision 1.1.1.1

1.1       maekawa     1: with integer_io;                         use integer_io;
                      2: with File_Scanning;                      use File_Scanning;
                      3: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
                      4: with Standard_Floating_Numbers_io;       use Standard_Floating_Numbers_io;
                      5: with Standard_Complex_Numbers_io;        use Standard_Complex_Numbers_io;
                      6: with Continuation_Parameters;            use Continuation_Parameters;
                      7: with Process_io;                         use Process_io;
                      8:
                      9: package body Scanners_for_Continuation is
                     10:
                     11: -- AUXILIAIRIES :
                     12:
                     13:   procedure Scan_Natural ( file : in file_type; n : in out natural ) is
                     14:
                     15:   -- DESCRIPTION :
                     16:   --   Scans the current line of the file for a natural number,
                     17:   --   which should occur after a `:'.
                     18:
                     19:     found : boolean;
                     20:
                     21:   begin
                     22:     Scan(file,":",found); get(file,n); skip_line(file);
                     23:   exception
                     24:     when others => put_line("INCORRECTLY SPECIFIED NATURAL NUMBER");
                     25:                    raise;
                     26:   end Scan_Natural;
                     27:
                     28:   procedure Scan_Float ( file : in file_type; f : in out double_float ) is
                     29:
                     30:   -- DESCRIPTION :
                     31:   --   Scans the current line of the file for a floating point number,
                     32:   --   which should occur after a `:'.
                     33:
                     34:     found : boolean;
                     35:
                     36:   begin
                     37:     Scan(file,":",found); get(file,f); skip_line(file);
                     38:   exception
                     39:     when others => put_line("INCORRECTLY SPECIFIED FLOATING POINT NUMBER");
                     40:                    raise;
                     41:   end Scan_Float;
                     42:
                     43:   procedure Scan_Complex ( file : in file_type; c : in out Complex_Number ) is
                     44:
                     45:   -- DESCRIPTION :
                     46:   --   Scans the current line of the file for a complex number,
                     47:   --   which should occur after a `:'.
                     48:
                     49:     found : boolean;
                     50:
                     51:   begin
                     52:     Scan(file,":",found); get(file,c); skip_line(file);
                     53:   exception
                     54:     when others => put_line("INCORRECTLY SPECIFIED COMPLEX NUMBER");
                     55:                    raise;
                     56:   end Scan_Complex;
                     57:
                     58: -- TARGET PROCEDURES :
                     59:
                     60:   procedure Scan_Homotopy_Parameters
                     61:               ( file : in file_type;
                     62:                 k : out natural; a : out Complex_Number ) is
                     63:
                     64:     found : boolean;
                     65:     kk : natural := 0;
                     66:     aa : Complex_Number := Create(0.0);
                     67:
                     68:   begin
                     69:     Scan_and_Skip(file,"HOMOTOPY PARAMETERS",found);
                     70:     if found
                     71:      then Scan_Natural(file,kk); Scan_Complex(file,aa);
                     72:     end if;
                     73:     k := kk; a := aa;
                     74:   exception
                     75:     when others => put_line("INCORRECTLY SPECIFIED HOMOTOPY PARAMETERS");
                     76:                    raise;
                     77:   end Scan_Homotopy_Parameters;
                     78:
                     79:   procedure Scan_Continuation_Parameters ( file : in file_type ) is
                     80:
                     81:     found : boolean;
                     82:
                     83:   begin
                     84:     Scan_and_Skip(file,"CONTINUATION PARAMETERS",found);
                     85:     if found
                     86:      then null;
                     87:
                     88:     --   Scan_and_Skip(file,"CONDITION",found);
                     89:     --   Scan_Natural(file,condition);
                     90:
                     91:     --   Scan_and_Skip(file,"MONITOR",found);
                     92:     --   Scan_Natural(file,block_size);
                     93:     --   Scan_Natural(file,predictor_type);
                     94:     --   Scan_Natural(file,max_steps);
                     95:     --   Scan_Float(file,start_end_game);
                     96:     --   Scan_Natural(file,max_reruns);
                     97:
                     98:     --   Scan_and_Skip(file,"STEP CONTROL",found);
                     99:     --   Scan_Float(file,min_step_size);
                    100:     --   Scan_Float(file,max_step_size);
                    101:     --   Scan_Float(file,reduction_factor);
                    102:     --   Scan_Float(file,expansion_factor);
                    103:     --   Scan_Natural(file,success_steps);
                    104:
                    105:     --   Scan_and_Skip(file,"PATH CLOSENESS",found);
                    106:     --   Scan_Natural(file,max_iter_path);
                    107:     --   Scan_Natural(file,max_iter_end);
                    108:     --   Scan_Float(file,relative_path_residual);
                    109:     --   Scan_Float(file,absolute_path_residual);
                    110:     --   Scan_Float(file,relative_path_correction);
                    111:     --   Scan_Float(file,absolute_path_correction);
                    112:     --   Scan_Float(file,relative_end_residual);
                    113:     --   Scan_Float(file,absolute_end_residual);
                    114:     --   Scan_Float(file,relative_end_correction);
                    115:     --   Scan_Float(file,absolute_end_correction);
                    116:
                    117:     --   Scan_and_Skip(file,"SOLUTIONS",found);
                    118:     --   Scan_Float(file,tol_inverse_condition);
                    119:     --   Scan_Float(file,tol_distance);
                    120:     --   Scan_Float(file,tol_at_infinity);
                    121:
                    122:     end if;
                    123:   exception
                    124:     when others => put_line("INCORRECTLY SPECIFIED CONTINUATION PARAMETERS");
                    125:                    raise;
                    126:   end Scan_Continuation_Parameters;
                    127:
                    128:   procedure Scan_Output_Parameter ( file : in file_type; op : out natural ) is
                    129:
                    130:     found : boolean;
                    131:     oc : natural := 0;
                    132:
                    133:   begin
                    134:     Scan(file,"OUTPUT PARAMETER",found);
                    135:     if found
                    136:      then Scan_Natural(file,oc);
                    137:           case oc is
                    138:             when 1 => Set_output_code(s);
                    139:             when 2 => Set_output_code(p);
                    140:             when 3 => Set_output_code(c);
                    141:             when 4 => Set_output_code(sp);
                    142:             when 5 => Set_output_code(sc);
                    143:             when 6 => Set_output_code(pc);
                    144:             when 7 => Set_output_code(spc);
                    145:             when others => Set_output_code(nil);
                    146:           end case;
                    147:      else Set_output_code(nil);
                    148:     end if;
                    149:     op := oc;
                    150:   exception
                    151:     when others => put_line("INCORRECTLY SPECIFIED OUTPUT PARAMETER");
                    152:                    raise;
                    153:   end Scan_Output_Parameter;
                    154:
                    155: end Scanners_for_Continuation;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>