Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/generic_laur_jaco_matrices.adb, Revision 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>