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

Annotation of OpenXM_contrib/PHC/Ada/Continuation/mainpoco.adb, Revision 1.1

1.1     ! maekawa     1: with text_io,integer_io;                 use text_io,integer_io;
        !             2: with Communications_with_User;           use Communications_with_User;
        !             3: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
        !             4: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
        !             5: with Numbers_io;                         use Numbers_io;
        !             6: with Standard_Complex_Polynomials;       use Standard_Complex_Polynomials;
        !             7: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
        !             8: with Standard_Complex_Poly_Systems_io;   use Standard_Complex_Poly_Systems_io;
        !             9: with Standard_Complex_Poly_SysFun;       use Standard_Complex_Poly_SysFun;
        !            10: with Homotopy;
        !            11: with Standard_Complex_Solutions;         use Standard_Complex_Solutions;
        !            12: with Standard_Complex_Solutions_io;      use Standard_Complex_Solutions_io;
        !            13: with Projective_Transformations;         use Projective_Transformations;
        !            14: with Standard_Root_Refiners;             use Standard_Root_Refiners;
        !            15: with Drivers_for_Poly_Continuation;      use Drivers_for_Poly_Continuation;
        !            16: --with Bye_Bye_Message;
        !            17:
        !            18: procedure mainpoco ( infilename,outfilename : in string ) is
        !            19:
        !            20:   solsft,outft : file_type;
        !            21:   lp : Link_to_Poly_Sys;
        !            22:   sols,refsols : Solution_List;
        !            23:   artificial,solsfile : boolean;
        !            24:   k,len : natural;
        !            25:   ans : character;
        !            26:   tarre,tarim : double_float;
        !            27:   target : Complex_Number;
        !            28:
        !            29:   procedure Read_System ( filename : in string ) is
        !            30:
        !            31:     file : file_type;
        !            32:
        !            33:   begin
        !            34:     if filename /= ""
        !            35:      then Open(file,in_file,filename);
        !            36:           get(file,lp);
        !            37:           Close(file);
        !            38:     end if;
        !            39:   exception
        !            40:     when others =>
        !            41:       new_line;
        !            42:       put("Could not open file with name "); put_line(filename);
        !            43:       lp := null; return;
        !            44:   end Read_System;
        !            45:
        !            46: begin
        !            47:   Read_System(infilename);
        !            48:   if lp = null
        !            49:    then new_line; get(lp);
        !            50:   end if;
        !            51:   Create_Output_File(outft,outfilename);
        !            52:   put(outft,lp.all); new_line(outft);
        !            53:   new_line;
        !            54:   put("Do you want the solutions on separate file ? (y/n) ");
        !            55:   Ask_Yes_or_No(ans);
        !            56:   if ans = 'y'
        !            57:    then
        !            58:      put_line("Reading the name of the file to write the solutions on.");
        !            59:      Read_Name_and_Create_File(solsft);
        !            60:      solsfile := true;
        !            61:    else
        !            62:      solsfile := false;
        !            63:   end if;
        !            64:   artificial := (Number_of_Unknowns(lp(lp'first)) = lp'last);
        !            65:   if artificial
        !            66:    then Driver_for_Polynomial_Continuation(outft,lp.all,sols,target);
        !            67:    else new_line;
        !            68:         put("Give the index of the parameter : "); Read_Natural(k);
        !            69:         new_line;
        !            70:         put_line("Reading the target value of the continuation parameter.");
        !            71:         put("Give the real part of the target : "); Read_Double_Float(tarre);
        !            72:         put("Give the imaginary part of the target : ");
        !            73:         Read_Double_Float(tarim);
        !            74:         target := Create(tarre,tarim);
        !            75:         Driver_for_Polynomial_Continuation(outft,lp.all,k,target,sols);
        !            76:   end if;
        !            77:   if Length_Of(sols) > 0
        !            78:    then declare
        !            79:           epsxa,epsfa,tolsing : constant double_float := 10.0**(-8);
        !            80:           nb : natural := 0;
        !            81:         begin
        !            82:           if artificial
        !            83:            then
        !            84:              if not Is_Null(sols) and then Head_Of(sols).n > lp'last
        !            85:               then Affine_Transformation(sols);
        !            86:              end if;
        !            87:              if target = Create(1.0)
        !            88:               then
        !            89:                 if solsfile
        !            90:                  then Reporting_Root_Refiner
        !            91:                         (outft,lp.all,sols,refsols,epsxa,epsfa,tolsing,
        !            92:                          nb,5,false);
        !            93:                  else Reporting_Root_Refiner
        !            94:                         (outft,lp.all,sols,epsxa,epsfa,tolsing,nb,5,false);
        !            95:                 end if;
        !            96:               else
        !            97:                 declare
        !            98:                   pt : Poly_Sys(lp'range);
        !            99:                 begin
        !           100:                   pt := Homotopy.Eval(target);
        !           101:                   if solsfile
        !           102:                    then Reporting_Root_Refiner
        !           103:                           (outft,pt,sols,refsols,epsxa,epsfa,tolsing,
        !           104:                            nb,5,false);
        !           105:                    else Reporting_Root_Refiner
        !           106:                           (outft,pt,sols,epsxa,epsfa,tolsing,nb,5,false);
        !           107:                   end if;
        !           108:                   Clear(pt);
        !           109:                 end;
        !           110:              end if;
        !           111:            else
        !           112:              declare
        !           113:                pt : Poly_Sys(lp'range);
        !           114:              begin
        !           115:                pt := Eval(lp.all,target,k);
        !           116:                if solsfile
        !           117:                 then Reporting_Root_Refiner
        !           118:                        (outft,pt,sols,refsols,epsxa,epsfa,tolsing,nb,5,false);
        !           119:                 else Reporting_Root_Refiner
        !           120:                        (outft,pt,sols,epsxa,epsfa,tolsing,nb,5,false);
        !           121:                end if;
        !           122:                Clear(pt);
        !           123:              end;
        !           124:           end if;
        !           125:         end;
        !           126:   end if;
        !           127:  -- put(outft,Bye_Bye_Message);
        !           128:   Close(outft);
        !           129:   if solsfile
        !           130:    then len := Length_Of(refsols);
        !           131:         if len > 0
        !           132:          then put(solsft,len,Head_Of(refsols).n,refsols);
        !           133:         end if;
        !           134:         Close(solsft);
        !           135:   end if;
        !           136: end mainpoco;

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