25 inline int getIndex(
int i,
int j,
int k,
int l)
const
27 static int _index[3][3][3][3] = {
28 {{{0, 1, 2}, {3, 4, 5}, {6, 7, 8}},
29 {{9, 10, 11}, {12, 13, 14}, {15, 16, 17}},
30 {{18, 19, 20}, {21, 22, 23}, {24, 25, 26}}},
31 {{{27, 28, 29}, {30, 31, 32}, {33, 34, 35}},
32 {{36, 37, 38}, {39, 40, 41}, {42, 43, 44}},
33 {{45, 46, 47}, {48, 49, 50}, {51, 52, 53}}},
34 {{{54, 55, 56}, {57, 58, 59}, {60, 61, 62}},
35 {{63, 64, 65}, {66, 67, 68}, {69, 70, 71}},
36 {{72, 73, 74}, {75, 76, 77}, {78, 79, 80}}}};
37 return _index[i][j][k][l];
41 for(
int i = 0; i < 81; i++)
_val[i] = other.
_val[i];
46 for(
int i = 0; i < 3; i++)
47 for(
int j = 0; j < 3; j++)
48 for(
int k = 0; k < 3; k++)
49 for(
int l = 0; l < 3; l++)
50 if((i == k) && (j == l))
58 for(
int i = 0; i < 3; i++)
59 for(
int j = 0; j < 3; j++)
60 for(
int k = 0; k < 3; k++)
61 for(
int l = 0; l < 3; l++) {
63 if((i == k) && (j == l))
_val[
getIndex(i, j, k, l)] += 0.5 * vik;
64 if((i == l) && (j == k))
_val[
getIndex(i, j, k, l)] += 0.5 * vil;
71 inline double operator()(
int i,
int j,
int k,
int l)
const
78 for(
int i = 0; i < 81; i++) res.
_val[i] += other.
_val[i];
83 for(
int i = 0; i < 81; i++)
_val[i] += other.
_val[i];
88 for(
int i = 0; i < 81; i++)
_val[i] -= other.
_val[i];
93 for(
int i = 0; i < 81; i++)
_val[i] = other.
_val[i];
98 for(
int i = 0; i < 81; i++)
_val[i] *= other;
105 if((n == 0 && m == 1) || (n == 1 && m == 0)) {
106 for(
int i = 0; i < 3; i++)
107 for(
int j = 0; j < 3; j++)
108 for(
int k = 0; k < 3; k++)
109 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(j, i, k, l);
112 if((n == 0 && m == 2) || (n == 2 && m == 0)) {
113 for(
int i = 0; i < 3; i++)
114 for(
int j = 0; j < 3; j++)
115 for(
int k = 0; k < 3; k++)
116 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(k, j, i, l);
119 if((n == 0 && m == 3) || (n == 3 && m == 0)) {
120 for(
int i = 0; i < 3; i++)
121 for(
int j = 0; j < 3; j++)
122 for(
int k = 0; k < 3; k++)
123 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(l, j, k, i);
126 if((n == 1 && m == 2) || (n == 2 && m == 1)) {
127 for(
int i = 0; i < 3; i++)
128 for(
int j = 0; j < 3; j++)
129 for(
int k = 0; k < 3; k++)
130 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(i, k, j, l);
133 if((n == 1 && m == 3) || (n == 3 && m == 1)) {
134 for(
int i = 0; i < 3; i++)
135 for(
int j = 0; j < 3; j++)
136 for(
int k = 0; k < 3; k++)
137 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(i, l, k, j);
140 if((n == 2 && m == 3) || (n == 3 && m == 2)) {
141 for(
int i = 0; i < 3; i++)
142 for(
int j = 0; j < 3; j++)
143 for(
int k = 0; k < 3; k++)
144 for(
int l = 0; l < 3; l++) ithis(i, j, k, l) = (*this)(i, j, l, k);
147 return ithis += (*this);
154 void print(
const char *)
const;
160 for(
int i = 0; i < 81; i++)
_val[i] += a * other.
_val[i];
167 for(
int i = 0; i < 3; i++)
168 for(
int j = 0; j < 3; j++)
169 for(
int k = 0; k < 3; k++)
170 for(
int l = 0; l < 3; l++)
c(i, j, k, l) = a(i, j) * b(k, l);
175 for(
int i = 0; i < 3; i++)
176 for(
int j = 0; j < 3; j++)
177 for(
int k = 0; k < 3; k++)
178 for(
int l = 0; l < 3; l++)
c(i, j, k, l) = a(i) * b(j, k, l);
182 for(
int i = 0; i < 3; i++)
183 for(
int j = 0; j < 3; j++)
184 for(
int k = 0; k < 3; k++)
185 for(
int l = 0; l < 3; l++)
c(i, j, k, l) = a(i, j, k) * b(l);
191 for(
int i = 0; i < 3; i++)
192 for(
int j = 0; j < 3; j++)
193 for(
int k = 0; k < 3; k++)
194 for(
int l = 0; l < 3; l++) prod += a(i, j, k, l) * b(i, j, k, l);
215 for(
int i = 0; i < 3; i++)
216 for(
int j = 0; j < 3; j++)
217 for(
int k = 0; k < 3; k++)
218 for(
int l = 0; l < 3; l++) val(i, j, k) += t(i, j, k, l) * m(l);
224 for(
int i = 0; i < 3; i++)
225 for(
int j = 0; j < 3; j++)
226 for(
int k = 0; k < 3; k++)
227 for(
int l = 0; l < 3; l++) val(j, k, l) += m(i) * t(i, j, k, l);
234 for(
int i = 0; i < 3; i++)
235 for(
int j = 0; j < 3; j++)
236 for(
int k = 0; k < 3; k++)
237 for(
int l = 0; l < 3; l++) val(i, j) += t(i, j, k, l) * m(l, k);
243 for(
int i = 0; i < 3; i++)
244 for(
int j = 0; j < 3; j++)
245 for(
int k = 0; k < 3; k++)
246 for(
int l = 0; l < 3; l++) val(k, l) += m(j, i) * t(i, j, k, l);
253 for(
int i = 0; i < 3; i++)
254 for(
int j = 0; j < 3; j++)
255 for(
int k = 0; k < 3; k++)
256 for(
int l = 0; l < 3; l++) val(i) += t(i, j, k, l) * m(l, k, j);
262 for(
int i = 0; i < 3; i++)
263 for(
int j = 0; j < 3; j++)
264 for(
int k = 0; k < 3; k++)
265 for(
int l = 0; l < 3; l++) val(l) += m(k, j, i) * t(i, j, k, l);
272 for(
int i = 0; i < 3; i++)
273 for(
int j = 0; j < 3; j++)
274 for(
int k = 0; k < 3; k++)
275 for(
int l = 0; l < 3; l++) val += m(i, j, k, l) * t(l, k, j, i);