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>