[BACK]Return to generic_laur_jaco_matrices.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Polynomials

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/generic_laur_jaco_matrices.adb, Revision 1.1.1.1

1.1       maekawa     1: package body Generic_Laur_Jaco_Matrices is
                      2:
                      3: -- CREATORS :
                      4:
                      5:   function Create ( p : Laur_Sys ) return Jaco_Mat is
                      6:
                      7:     res : Jaco_Mat(p'range,1..Number_of_Unknowns(p(p'first)));
                      8:
                      9:   begin
                     10:     for i in res'range(1) loop
                     11:       for j in res'range(2) loop
                     12:         res(i,j) := Diff(p(i),j);
                     13:       end loop;
                     14:     end loop;
                     15:     return res;
                     16:   end Create;
                     17:
                     18:   function Create ( j : Jaco_Mat ) return Eval_Jaco_Mat is
                     19:
                     20:     res : Eval_Jaco_Mat(j'range(1),j'range(2));
                     21:
                     22:   begin
                     23:     for k in j'range(1) loop
                     24:       for l in j'range(2) loop
                     25:         res(k,l) := Create(j(k,l));
                     26:       end loop;
                     27:     end loop;
                     28:     return res;
                     29:   end Create;
                     30:
                     31:   procedure Create ( p : Laur_Sys;
                     32:                      j : out Eval_Coeff_Jaco_Mat; m : out Mult_Factors ) is
                     33:
                     34:     nb : constant natural := Number_of_Unknowns(p(p'first));
                     35:     nbk : natural;
                     36:
                     37:   begin
                     38:     for k in p'range loop
                     39:       nbk := Number_of_Terms(p(k));
                     40:       for l in 1..nb loop
                     41:         declare
                     42:           mkl : Vector(1..nbk);
                     43:         begin
                     44:           Diff(p(k),l,j(k,l),mkl);
                     45:           m(k,l) := new Vectors.Vector'(mkl);
                     46:         end;
                     47:       end loop;
                     48:     end loop;
                     49:   end Create;
                     50:
                     51: -- EVALUATORS :
                     52:
                     53:   function Eval ( j : Jaco_Mat; x : Vector ) return Matrix is
                     54:
                     55:     m : Matrix(j'range(1),j'range(2));
                     56:
                     57:   begin
                     58:     for k in j'range(1) loop
                     59:       for l in j'range(2) loop
                     60:         m(k,l) := Eval(Poly(j(k,l)),x);
                     61:       end loop;
                     62:     end loop;
                     63:     return m;
                     64:   end Eval;
                     65:
                     66:   function Eval ( j : Eval_Jaco_Mat; x : Vector ) return Matrix is
                     67:
                     68:     m : Matrix(j'range(1),j'range(2));
                     69:
                     70:   begin
                     71:     for k in j'range(1) loop
                     72:       for l in j'range(2) loop
                     73:         m(k,l) := Eval(Eval_Poly(j(k,l)),x);
                     74:       end loop;
                     75:     end loop;
                     76:     return m;
                     77:   end Eval;
                     78:
                     79:   function Eval ( j : Eval_Coeff_Poly; m,c,x : Vector ) return number is
                     80:
                     81:     cm : Vector(c'range);
                     82:
                     83:   begin
                     84:     for i in cm'range loop
                     85:       cm(i) := m(i)*c(i);
                     86:     end loop;
                     87:     return Eval(j,cm,x);
                     88:   end Eval;
                     89:
                     90:   function Eval ( j : Eval_Coeff_Jaco_Mat; m : Mult_Factors;
                     91:                   c : VecVec; x : Vector ) return Matrix is
                     92:
                     93:     res : Matrix(j'range(1),j'range(2));
                     94:
                     95:   begin
                     96:     for k in j'range(1) loop
                     97:       declare
                     98:         cm : Vector(c(k)'range);
                     99:       begin
                    100:         for l in j'range(2) loop
                    101:           for i in cm'range loop
                    102:             cm(i) := m(k,l)(i)*c(k)(i);
                    103:           end loop;
                    104:           res(k,l) := Eval(Eval_Coeff_Poly(j(k,l)),cm,x);
                    105:         end loop;
                    106:       end;
                    107:     end loop;
                    108:     return res;
                    109:   end Eval;
                    110:
                    111: -- DESTRUCTORS :
                    112:
                    113:   procedure Clear ( j : in out Jaco_Mat ) is
                    114:   begin
                    115:     for k in j'range(1) loop
                    116:       for l in j'range(2) loop
                    117:         Clear(j(k,l));
                    118:       end loop;
                    119:     end loop;
                    120:   end Clear;
                    121:
                    122:   procedure Clear ( j : in out Eval_Jaco_Mat ) is
                    123:   begin
                    124:     for k in j'range(1) loop
                    125:       for l in j'range(2) loop
                    126:         Clear(j(k,l));
                    127:       end loop;
                    128:     end loop;
                    129:   end Clear;
                    130:
                    131:   procedure Clear ( j : in out Eval_Coeff_Jaco_Mat ) is
                    132:   begin
                    133:     for k in j'range(1) loop
                    134:       for l in j'range(2) loop
                    135:         Clear(j(k,l));
                    136:       end loop;
                    137:     end loop;
                    138:   end Clear;
                    139:
                    140:   procedure Clear ( m : in out Mult_Factors ) is
                    141:   begin
                    142:     for k in m'range(1) loop
                    143:       for l in m'range(2) loop
                    144:         Clear(m(k,l));
                    145:       end loop;
                    146:     end loop;
                    147:   end Clear;
                    148:
                    149: end Generic_Laur_Jaco_Matrices;

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