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

Annotation of OpenXM_contrib/PHC/Ada/Schubert/ts_detsys.adb, Revision 1.1

1.1     ! maekawa     1: with text_io,integer_io;                 use text_io,integer_io;
        !             2: with Timing_Package;                     use Timing_Package;
        !             3: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
        !             4: with Standard_Complex_Numbers_io;        use Standard_Complex_Numbers_io;
        !             5: with Standard_Complex_Vectors;
        !             6: with Standard_Complex_Vectors_io;        use Standard_Complex_Vectors_io;
        !             7: with Standard_Complex_Matrices;
        !             8: with Standard_Complex_Matrices_io;       use Standard_Complex_Matrices_io;
        !             9: with Standard_Random_Matrices;           use Standard_Random_Matrices;
        !            10: with Standard_Complex_VecMats;           use Standard_Complex_VecMats;
        !            11: with Standard_Complex_Poly_Matrices;
        !            12: with Standard_Complex_Poly_Matrices_io;  use Standard_Complex_Poly_Matrices_io;
        !            13: with Matrix_Indeterminates;
        !            14: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
        !            15: with Standard_Complex_Poly_SysFun;       use Standard_Complex_Poly_SysFun;
        !            16: with Standard_Complex_Jaco_Matrices;     use Standard_Complex_Jaco_Matrices;
        !            17: with Brackets;                           use Brackets;
        !            18: with Symbolic_Minor_Equations;           use Symbolic_Minor_Equations;
        !            19: with Determinantal_Systems;              use Determinantal_Systems;
        !            20:
        !            21: procedure ts_detsys is
        !            22:
        !            23: -- DESCRIPTION :
        !            24: --   This procedure tests the operations in the package Determinantal_Systems.
        !            25:
        !            26:   function Random_Sequence ( n,n1,n2 : natural ) return VecMat is
        !            27:
        !            28:   -- DESCRIPTION :
        !            29:   --   Returns a sequence of n randomly generated n1-by-n2 matrices.
        !            30:
        !            31:     res : VecMat(1..n);
        !            32:
        !            33:   begin
        !            34:     for i in 1..n loop
        !            35:       res(i) := new Standard_Complex_Matrices.Matrix'(Random_Matrix(n1,n2));
        !            36:     end loop;
        !            37:     return res;
        !            38:   end Random_Sequence;
        !            39:
        !            40:   function Vector_Rep ( mat : Standard_Complex_Matrices.Matrix )
        !            41:                       return Standard_Complex_Vectors.Vector is
        !            42:
        !            43:   -- DESCRIPTION :
        !            44:   --   Returns the elements in the matrix as one long vector.
        !            45:
        !            46:     res : Standard_Complex_Vectors.Vector(1..mat'length(1)*mat'length(2));
        !            47:     cnt : natural := 0;
        !            48:
        !            49:   begin
        !            50:     for i in mat'range(1) loop
        !            51:       for j in mat'range(2) loop
        !            52:         cnt := cnt+1;
        !            53:         res(cnt) := mat(i,j);
        !            54:       end loop;
        !            55:     end loop;
        !            56:     return res;
        !            57:   end Vector_Rep;
        !            58:
        !            59:   procedure Test_Evaluator ( m,p : in natural ) is
        !            60:
        !            61:   -- DESCRIPTION :
        !            62:   --   Test the evaluating routine in determinantal systems.
        !            63:
        !            64:     n : constant natural := m+p;
        !            65:     mp : constant natural := m*p;
        !            66:     xmat : constant Standard_Complex_Matrices.Matrix := Random_Matrix(n,p);
        !            67:     xvec : constant Standard_Complex_Vectors.Vector := Vector_Rep(xmat);
        !            68:     l : constant Standard_Complex_Matrices.Matrix := Random_Matrix(n,m);
        !            69:     planes : VecMat(1..mp) := Random_Sequence(mp,n,m);
        !            70:     deteva : Standard_Complex_Vectors.Vector(1..mp) := Eval(planes,xmat);
        !            71:     detjac : Standard_Complex_Matrices.Matrix(1..mp,1..n*p)
        !            72:            := Diff(planes,xmat);
        !            73:     top : Bracket(1..p) := (1..p => 1);
        !            74:     bottom : Bracket(1..p) := (1..p => n);
        !            75:     xpm : Standard_Complex_Poly_Matrices.Matrix(1..n,1..p)
        !            76:         := Localization_Pattern(n,top,bottom);
        !            77:     sys : Poly_Sys(1..m*p) := Polynomial_Equations(planes,xpm);
        !            78:     syseva : Standard_Complex_Vectors.Vector(1..mp) := Eval(sys,xvec);
        !            79:     sysjac : Jaco_Mat(1..mp,1..n*p) := Create(sys);
        !            80:     jaceva : Standard_Complex_Matrices.Matrix(1..mp,1..n*p)
        !            81:            := Eval(sysjac,xvec);
        !            82:     nb : natural;
        !            83:     timer : Timing_Widget;
        !            84:
        !            85:   begin
        !            86:     Matrix_Indeterminates.Initialize_Symbols(n,p);
        !            87:     put_line("the matrix of indeterminates : "); put(xpm);
        !            88:     put("Intersecting random "); put(p,1); put("-plane with ");
        !            89:     put(m*p,1); put(" random "); put(m,1); put_line("-planes.");
        !            90:     put_line("Determinantal Evaluation : "); put_line(deteva); new_line;
        !            91:     put_line("Polynomial Evaluation : ");    put_line(syseva); new_line;
        !            92:     put_line("Determinantal Differentation : "); put(detjac,2); new_line;
        !            93:     put_line("Polynomial Differentation : ");    put(jaceva,2); new_line;
        !            94:     put("Give number of evaluations : "); get(nb);
        !            95:     tstart(timer);
        !            96:     for i in 1..nb loop
        !            97:       deteva := Eval(planes,xmat);
        !            98:       detjac := Diff(planes,xmat);
        !            99:     end loop;
        !           100:     tstop(timer);
        !           101:     print_times(Standard_Output,timer,"determinantal evaluations");
        !           102:     tstart(timer);
        !           103:     for i in 1..nb loop
        !           104:       syseva := Eval(sys,xvec);
        !           105:       jaceva := Eval(sysjac,xvec);
        !           106:     end loop;
        !           107:     tstop(timer);
        !           108:     print_times(Standard_Output,timer,"polynomial evaluations");
        !           109:   end Test_Evaluator;
        !           110:
        !           111:   procedure Main is
        !           112:
        !           113:     m,p : natural;
        !           114:
        !           115:   begin
        !           116:     put("Give m : "); get(m);
        !           117:     put("Give p : "); get(p);
        !           118:     Test_Evaluator(m,p);
        !           119:   end Main;
        !           120:
        !           121: begin
        !           122:   new_line;
        !           123:   put_line("Polynomial systems generated from determinantal expansions.");
        !           124:   new_line;
        !           125:   Main;
        !           126: end ts_detsys;

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