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

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

1.1     ! maekawa     1: with integer_io;                         use integer_io;
        !             2: with Communications_with_User;           use Communications_with_User;
        !             3: with Timing_Package;                     use Timing_Package;
        !             4: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
        !             5: with Standard_Floating_Numbers_io;       use Standard_Floating_Numbers_io;
        !             6: with Numbers_io;                         use Numbers_io;
        !             7: with Standard_Complex_Vectors;
        !             8: with Standard_Complex_Norms_Equals;      use Standard_Complex_Norms_Equals;
        !             9: with Standard_Complex_Matrices;          use Standard_Complex_Matrices;
        !            10: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
        !            11: with Standard_Complex_Poly_Systems_io;   use Standard_Complex_Poly_Systems_io;
        !            12: with Homotopy;
        !            13: with Projective_Transformations;         use Projective_Transformations;
        !            14: with Continuation_Data;                  use Continuation_Data;
        !            15: with Continuation_Parameters;            use Continuation_Parameters;
        !            16: with Increment_and_Fix_Continuation;     use Increment_and_Fix_Continuation;
        !            17:
        !            18: package body Drivers_for_Path_Directions is
        !            19:
        !            20: -- AUXILIARIES TO INSTANTIATE :
        !            21:
        !            22:   function Scale ( v : Vector ) return Vector is
        !            23:
        !            24:   -- DESCRIPTION :
        !            25:   --   Divides the vector by its largest component.
        !            26:
        !            27:     res : Vector(v'range);
        !            28:     tol : constant double_float := 10.0**(-12);
        !            29:     ind : integer := v'first;
        !            30:     max : double_float := abs(v(ind));
        !            31:
        !            32:   begin
        !            33:     for i in v'range loop
        !            34:       if abs(v(i)) > max
        !            35:        then max := abs(v(i));
        !            36:             ind := i;
        !            37:       end if;
        !            38:     end loop;
        !            39:     if max > tol
        !            40:      then for i in v'range loop
        !            41:             res(i) := v(i)/max;
        !            42:           end loop;
        !            43:     end if;
        !            44:     return res;
        !            45:   end Scale;
        !            46:
        !            47:   function Toric_Evaluator ( x : Standard_Complex_Vectors.Vector;
        !            48:                              t : Complex_Number )
        !            49:                            return Standard_Complex_Vectors.Vector is
        !            50:   begin
        !            51:     return Homotopy.Eval(x,t);
        !            52:   end Toric_Evaluator;
        !            53:
        !            54:   function Toric_Differentiator
        !            55:                ( x : Standard_Complex_Vectors.Vector; t : Complex_Number )
        !            56:                return Standard_Complex_Vectors.Vector is
        !            57:   begin
        !            58:     return Homotopy.Eval(x,t);
        !            59:   end Toric_Differentiator;
        !            60:
        !            61:   function Toric_Differentiator
        !            62:                ( x : Standard_Complex_Vectors.Vector; t : Complex_Number )
        !            63:                return Standard_Complex_Matrices.Matrix is
        !            64:   begin
        !            65:     return Homotopy.Diff(x,t);
        !            66:   end Toric_Differentiator;
        !            67:
        !            68: -- TARGET ROUTINES :
        !            69:
        !            70:   procedure Init_Path_Directions
        !            71:                ( n,nv : in natural; v : in out Link_to_VecVec;
        !            72:                  errv : in out Link_to_Vector ) is
        !            73:
        !            74:   begin
        !            75:     v := new VecVec(1..nv);
        !            76:     for i in v'range loop
        !            77:       v(i) := new Vector'(1..n => 0.0);
        !            78:     end loop;
        !            79:     errv := new Vector'(1..nv => 1.0);
        !            80:   end Init_Path_Directions;
        !            81:
        !            82:   procedure Toric_Continue
        !            83:                ( file : in file_type; sols : in out Solution_List;
        !            84:                  proj,report : in boolean; v : in out VecVec;
        !            85:                  errv : in out Vector; target : in Complex_Number ) is
        !            86:
        !            87:   -- DESCRIPTION :
        !            88:   --   Performs the continuation with online toric compactifications.
        !            89:
        !            90:     timer : timing_widget;
        !            91:     h : constant Poly_Sys := Homotopy.Eval(target); --Homotopy.Homotopy_System;
        !            92:     n : constant natural := h'length;
        !            93:     hh : Poly_Sys(h'range);
        !            94:
        !            95:     procedure Sil_Cont is
        !            96:       new Silent_Toric_Continue(Max_Norm,Toric_Evaluator,
        !            97:                                 Toric_Differentiator,Toric_Differentiator);
        !            98:     procedure Rep_Cont is
        !            99:       new Reporting_Toric_Continue(Max_Norm,Toric_Evaluator,
        !           100:                                    Toric_Differentiator,Toric_Differentiator);
        !           101:   begin
        !           102:     tstart(timer);
        !           103:     if report
        !           104:      then Rep_Cont(file,sols,proj,v,errv,target);
        !           105:      else Sil_Cont(sols,proj,v,errv,target);
        !           106:     end if;
        !           107:     tstop(timer);
        !           108:     new_line(file);
        !           109:     print_times(file,timer,"toric continuation"); new_line(file);
        !           110:   end Toric_Continue;
        !           111:
        !           112:   procedure Write_Directions
        !           113:                ( file : in file_type; v : in VecVec; errv : in Vector ) is
        !           114:
        !           115:     procedure Write ( file : in file_type; v : in Vector ) is
        !           116:     begin
        !           117:       for i in v'range loop
        !           118:         put(file,v(i)); new_line(file);
        !           119:       end loop;
        !           120:     end Write;
        !           121:
        !           122:     procedure Write_Direction
        !           123:                  ( file : in file_type;
        !           124:                    v : in Vector; error : in double_float; i : natural ) is
        !           125:
        !           126:     begin
        !           127:       put(file,"Computed direction of path ");
        !           128:       put(file,i,1); put_line(file," :"); Write(file,v);
        !           129:       put(file,"with error : "); put(file,error); new_line(file);
        !           130:     end Write_Direction;
        !           131:
        !           132:   begin
        !           133:     for i in v'range loop
        !           134:       Write_Direction(file,v(i).all,errv(i),i);
        !           135:     end loop;
        !           136:   end Write_Directions;
        !           137:
        !           138: end Drivers_for_Path_Directions;

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