Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/generic_jacobian_matrices.adb, Revision 1.1
1.1 ! maekawa 1: package body Generic_Jacobian_Matrices is
! 2:
! 3: -- CREATORS :
! 4:
! 5: function Create ( p : Poly_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 : Poly_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_Jaco_Mat; m : Mult_Factors;
! 80: c : VecVec; x : Vector ) return Matrix is
! 81:
! 82: res : Matrix(j'range(1),j'range(2));
! 83:
! 84: begin
! 85: for k in j'range(1) loop
! 86: declare
! 87: cm : Vector(c(k)'range);
! 88: begin
! 89: for l in j'range(2) loop
! 90: for i in cm'range loop
! 91: cm(i) := m(k,l)(i)*c(k)(i);
! 92: end loop;
! 93: res(k,l) := Eval(Eval_Coeff_Poly(j(k,l)),cm,x);
! 94: end loop;
! 95: end;
! 96: end loop;
! 97: return res;
! 98: end Eval;
! 99:
! 100: -- DESTRUCTORS :
! 101:
! 102: procedure Clear ( j : in out Jaco_Mat ) is
! 103: begin
! 104: for k in j'range(1) loop
! 105: for l in j'range(2) loop
! 106: Clear(j(k,l));
! 107: end loop;
! 108: end loop;
! 109: end Clear;
! 110:
! 111: procedure Clear ( j : in out Eval_Jaco_Mat ) is
! 112: begin
! 113: for k in j'range(1) loop
! 114: for l in j'range(2) loop
! 115: Clear(j(k,l));
! 116: end loop;
! 117: end loop;
! 118: end Clear;
! 119:
! 120: procedure Clear ( j : in out Eval_Coeff_Jaco_Mat ) is
! 121: begin
! 122: for k in j'range(1) loop
! 123: for l in j'range(2) loop
! 124: Clear(j(k,l));
! 125: end loop;
! 126: end loop;
! 127: end Clear;
! 128:
! 129: procedure Clear ( m : in out Mult_Factors ) is
! 130: begin
! 131: for k in m'range(1) loop
! 132: for l in m'range(2) loop
! 133: Clear(m(k,l));
! 134: end loop;
! 135: end loop;
! 136: end Clear;
! 137:
! 138: end Generic_Jacobian_Matrices;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>