111
|
1 template<typename T>
|
|
2 struct X {
|
|
3 double & f (const unsigned int i,
|
|
4 const unsigned int j);
|
|
5 void g (X &M);
|
|
6 };
|
|
7
|
|
8 template <typename T>
|
|
9 void X<T>::g (X &x) {
|
|
10 double t14 = x.f(0,0)*x.f(1,1);
|
|
11 double t15 = x.f(2,2)*x.f(3,3);
|
|
12 double t17 = x.f(2,3)*x.f(3,2);
|
|
13 double t19 = x.f(0,0)*x.f(2,1);
|
|
14 double t20 = x.f(1,2)*x.f(3,3);
|
|
15 double t22 = x.f(1,3)*x.f(3,2);
|
|
16 double t24 = x.f(0,0)*x.f(3,1);
|
|
17 double t25 = x.f(1,2)*x.f(2,3);
|
|
18 double t27 = x.f(1,3)*x.f(2,2);
|
|
19 double t29 = x.f(1,0)*x.f(0,1);
|
|
20 double t32 = x.f(1,0)*x.f(2,1);
|
|
21 double t33 = x.f(0,2)*x.f(3,3);
|
|
22 double t35 = x.f(0,3)*x.f(3,2);
|
|
23 double t37 = x.f(1,0)*x.f(3,1);
|
|
24 double t38 = x.f(0,2)*x.f(2,3);
|
|
25 double t40 = x.f(0,3)*x.f(2,2);
|
|
26 double t42 = t14*t15-t14*t17-t19*t20+t19*t22+
|
|
27 t24*t25-t24*t27-t29*t15+t29*t17+
|
|
28 t32*t33-t32*t35-t37*t38+t37*t40;
|
|
29 double t43 = x.f(2,0)*x.f(0,1);
|
|
30 double t46 = x.f(2,0)*x.f(1,1);
|
|
31 double t49 = x.f(2,0)*x.f(3,1);
|
|
32 double t50 = x.f(0,2)*x.f(1,3);
|
|
33 double t52 = x.f(0,3)*x.f(1,2);
|
|
34 double t54 = x.f(3,0)*x.f(0,1);
|
|
35 double t57 = x.f(3,0)*x.f(1,1);
|
|
36 double t60 = x.f(3,0)*x.f(2,1);
|
|
37 double t63 = t43*t20-t43*t22-t46*t33+t46*t35+
|
|
38 t49*t50-t49*t52-t54*t25+t54*t27+
|
|
39 t57*t38-t57*t40-t60*t50+t60*t52;
|
|
40 double t65 = 1/(t42+t63);
|
|
41 double t71 = x.f(0,2)*x.f(2,1);
|
|
42 double t73 = x.f(0,3)*x.f(2,1);
|
|
43 double t75 = x.f(0,2)*x.f(3,1);
|
|
44 double t77 = x.f(0,3)*x.f(3,1);
|
|
45 double t81 = x.f(0,1)*x.f(1,2);
|
|
46 double t83 = x.f(0,1)*x.f(1,3);
|
|
47 double t85 = x.f(0,2)*x.f(1,1);
|
|
48 double t87 = x.f(0,3)*x.f(1,1);
|
|
49 double t101 = x.f(1,0)*x.f(2,2);
|
|
50 double t103 = x.f(1,0)*x.f(2,3);
|
|
51 double t105 = x.f(2,0)*x.f(1,2);
|
|
52 double t107 = x.f(2,0)*x.f(1,3);
|
|
53 double t109 = x.f(3,0)*x.f(1,2);
|
|
54 double t111 = x.f(3,0)*x.f(1,3);
|
|
55 double t115 = x.f(0,0)*x.f(2,2);
|
|
56 double t117 = x.f(0,0)*x.f(2,3);
|
|
57 double t119 = x.f(2,0)*x.f(0,2);
|
|
58 double t121 = x.f(2,0)*x.f(0,3);
|
|
59 }
|
|
60
|
|
61 template void X<double>::g (X<double>&);
|