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

Annotation of OpenXM_contrib/PHC/Ada/Main/mainphc.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 Timing_Package;                     use Timing_Package;
        !             4: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
        !             5: with Standard_Complex_Vectors;           use Standard_Complex_Vectors;
        !             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_Solutions;         use Standard_Complex_Solutions;
        !            10: with Homotopy;
        !            11: with Drivers_for_Scaling;                use Drivers_for_Scaling;
        !            12: with Drivers_for_Reduction;              use Drivers_for_Reduction;
        !            13: with Drivers_for_Poly_Continuation;      use Drivers_for_Poly_Continuation;
        !            14: with Driver_for_Root_Counts;
        !            15: with Drivers_for_Homotopy_Creation;      use Drivers_for_Homotopy_Creation;
        !            16: with Driver_for_Root_Refining;
        !            17: with Bye_Bye_Message;
        !            18:
        !            19: procedure mainphc ( infilename,outfilename : in string ) is
        !            20:
        !            21:   outpt : file_type;
        !            22:   lp : Link_to_Poly_Sys := null;
        !            23:   timer : timing_widget;
        !            24:
        !            25:   procedure Display_Options is
        !            26:
        !            27:   -- DESCRIPTION :
        !            28:   --   Displays an overview of all options on screen.
        !            29:
        !            30:     o : array(1..8) of string(1..65);
        !            31:
        !            32:   begin
        !            33:     put_line("Running in full mode.  Note also the following options:");
        !            34:     o(1) := "  phc -s : Equation and variable Scaling on system and solutions ";
        !            35:     o(2) := "  phc -d : Linear and nonlinear Reduction w.r.t. the total degree";
        !            36:     o(3) := "  phc -r : Root counting and Construction of start systems       ";
        !            37:     o(4) := "  phc -m : Mixed-Volume Computation by four lifting strategies   ";
        !            38:     o(5) := "  phc -p : Polynomial Continuation by a homotopy in one parameter";
        !            39:     o(6) := "  phc -v : Validation, refinement and purification of solutions  ";
        !            40:     o(7) := "  phc -e : SAGBI/Pieri homotopies to intersect linear subspaces  ";
        !            41:     o(8) := "  phc -b : Batch or black-box processing                         ";
        !            42:     for i in o'range loop
        !            43:       put_line(o(i));
        !            44:     end loop;
        !            45:   end Display_Options;
        !            46:
        !            47:   procedure Read_System ( filename : in string ) is
        !            48:
        !            49:     file : file_type;
        !            50:     n : natural;
        !            51:
        !            52:   begin
        !            53:     if filename /= ""
        !            54:      then Open_Input_File(file,filename);
        !            55:           get(file,n);
        !            56:           lp := new Poly_Sys(1..n);
        !            57:           get(file,n,lp.all);
        !            58:           Close(file);
        !            59:     end if;
        !            60:   exception
        !            61:     when others =>
        !            62:       new_line;
        !            63:       put("Could not open file with name "); put_line(filename);
        !            64:       lp := null; return;
        !            65:   end Read_System;
        !            66:
        !            67: begin
        !            68:   new_line;
        !            69:   Display_Options;
        !            70:
        !            71: -- READ THE INPUT SYSTEM AND OUTPUT FILE
        !            72:
        !            73:   Read_System(infilename);
        !            74:   if lp = null
        !            75:    then new_line; get(lp);
        !            76:   end if;
        !            77:
        !            78:   Create_Output_File(outpt,outfilename);
        !            79:   put(outpt,lp'last,lp.all);
        !            80:
        !            81:   tstart(timer);
        !            82:
        !            83:   declare
        !            84:
        !            85:     p,q,scalp,projp : Poly_Sys(lp'range);
        !            86:     target : Complex_Number;
        !            87:     basis,roco : natural;
        !            88:     scalvec : Link_to_Vector;
        !            89:     sols : Solution_List;
        !            90:     proj : boolean;
        !            91:
        !            92:   begin
        !            93:
        !            94:     p := lp.all;  Copy(p,scalp);
        !            95:
        !            96:    -- PREPROCESSING : SCALING AND REDUCTION
        !            97:
        !            98:     Driver_for_Scaling(outpt,scalp,basis,scalvec);
        !            99:     Driver_for_Reduction(outpt,scalp,roco,true);
        !           100:
        !           101:    -- APPLY ROOT COUNTING METHODS TO CONSTRUCT A START SYSTEM
        !           102:
        !           103:     Copy(scalp,projp);
        !           104:     Driver_for_Root_Counts(outpt,projp,q,true,sols,roco);
        !           105:
        !           106:     if Length_Of(sols) > 0
        !           107:      then
        !           108:
        !           109:       -- CONSTRUCTION OF THE HOMOTOPY
        !           110:
        !           111:        Driver_for_Homotopy_Construction(outpt,projp,q,sols,target);
        !           112:
        !           113:       -- CONTINUATION
        !           114:
        !           115:        proj := (Number_of_Unknowns(p(p'first)) > p'last);
        !           116:        if Head_Of(sols).t /= Create(0.0)
        !           117:         then Set_Continuation_Parameter(sols,Create(0.0));
        !           118:        end if;
        !           119:        Driver_for_Polynomial_Continuation(outpt,sols,proj,target);
        !           120:
        !           121:       -- ROOT REFINING
        !           122:
        !           123:        Driver_for_Root_Refining(outpt,scalp,p,basis,scalvec,sols);
        !           124:      end if;
        !           125:
        !           126:   end;
        !           127:
        !           128:   tstop(timer);
        !           129:   new_line(outpt);
        !           130:   print_times(outpt,timer,"solving the polynomial system");
        !           131:   new_line(outpt);
        !           132:   put(outpt,Bye_Bye_Message);
        !           133:   Close(outpt);
        !           134:
        !           135: end mainphc;

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