1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: _carsph_62.cc
4 // Copyright (C) 2009 Toru Shiozaki
5 //
6 // Author: Toru Shiozaki <shiozaki@northwestern.edu>
7 // Maintainer: Shiozaki group
8 //
9 // This file is part of the BAGEL package.
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 //
24 
25 #include <src/integral/carsphlist.h>
26 #include <algorithm>
27 
28 using namespace std;
29 using namespace bagel;
30 
31 
carsph_62(const int nloop,const double * source,double * target)32 void CarSphList::carsph_62(const int nloop, const double* source, double* target) {
33   const double c25 = 51.553976568253198;
34   const double c17 = 40.301597362883768;
35   const double c49 = 37.649701194033398;
36   const double c38 = 34.369317712168801;
37   const double c30 = 29.764702249476645;
38   const double c21 = 25.776988284126599;
39   const double c66 = 25.099800796022265;
40   const double c11 = 23.268138086232856;
41   const double c54 = 21.737065119284157;
42   const double c16 = 20.150798681441884;
43   const double c40 = 19.843134832984429;
44   const double c86 = 19.48557158514987;
45   const double c45 = 18.824850597016699;
46   const double c3 = 17.451103564674643;
47   const double c36 = 17.1846588560844;
48   const double c31 = 14.882351124738323;
49   const double c68 = 14.491376746189438;
50   const double c51 = 14.118637947762524;
51   const double c14 = 13.433865787627923;
52   const double c85 = 12.99038105676658;
53   const double c48 = 12.549900398011133;
54   const double c9 = 11.634069043116428;
55   const double c74 = 11.456439237389599;
56   const double c94 = 11.25;
57   const double c55 = 10.868532559642079;
58   const double c6 = 10.075399340720942;
59   const double c41 = 9.9215674164922145;
60   const double c81 = 9.742785792574935;
61   const double c1 = 8.7255517823373214;
62   const double c24 = 8.5923294280422002;
63   const double c58 = 8.1513994197315593;
64   const double c71 = 7.9372539331937721;
65   const double c90 = 7.5;
66   const double c52 = 7.245688373094719;
67   const double c47 = 7.0593189738812621;
68   const double c10 = 6.9804414258698566;
69   const double c15 = 6.7169328938139614;
70   const double c79 = 6.49519052838329;
71   const double c44 = 6.2749501990055663;
72   const double c19 = 5.817034521558214;
73   const double c75 = 5.7282196186947996;
74   const double c92 = 5.625;
75   const double c27 = 5.1553976568253201;
76   const double c7 = 5.0376996703604711;
77   const double c28 = 4.9607837082461073;
78   const double c80 = 4.8713928962874675;
79   const double c50 = 4.7062126492541747;
80   const double c72 = 4.5825756949558398;
81   const double c20 = 4.2961647140211001;
82   const double c59 = 4.0756997098657797;
83   const double c12 = 4.0301597362883772;
84   const double c70 = 3.9686269665968861;
85   const double c91 = 3.75;
86   const double c53 = 3.6228441865473595;
87   const double c8 = 3.4902207129349283;
88   const double c39 = 3.4369317712168801;
89   const double c67 = 3.1374750995027831;
90   const double c34 = 2.9764702249476644;
91   const double c76 = 2.8641098093473998;
92   const double c93 = 2.8125;
93   const double c56 = 2.7171331399105196;
94   const double c23 = 2.5776988284126601;
95   const double c29 = 2.4803918541230536;
96   const double c46 = 2.3531063246270874;
97   const double c18 = 2.3268138086232857;
98   const double c73 = 2.2912878474779199;
99   const double c13 = 2.0150798681441886;
100   const double c42 = 1.984313483298443;
101   const double c69 = 1.8114220932736798;
102   const double c84 = 1.7320508075688772;
103   const double c37 = 1.71846588560844;
104   const double c88 = 1.6237976320958225;
105   const double c62 = 1.5687375497513916;
106   const double c35 = 1.4882351124738322;
107   const double c77 = 1.4320549046736999;
108   const double c57 = 1.3585665699552598;
109   const double c2 = 1.1634069043116428;
110   const double c43 = 0.99215674164922152;
111   const double c97 = 0.9375;
112   const double c65 = 0.90571104663683988;
113   const double c78 = 0.8660254037844386;
114   const double c26 = 0.85923294280422002;
115   const double c83 = 0.81189881604791125;
116   const double c61 = 0.78436877487569578;
117   const double c4 = 0.67169328938139616;
118   const double c0 = 0.58170345215582142;
119   const double c87 = 0.54126587736527421;
120   const double c89 = 0.5;
121   const double c32 = 0.49607837082461076;
122   const double c98 = 0.46875;
123   const double c63 = 0.45285552331841994;
124   const double c22 = 0.42961647140211001;
125   const double c60 = 0.39218438743784789;
126   const double c5 = 0.33584664469069808;
127   const double c95 = 0.3125;
128   const double c82 = 0.2706329386826371;
129   const double c33 = 0.24803918541230538;
130   const double c64 = 0.22642776165920997;
131   const double c96 = 0.15625;
132   for (int iloop = 0; iloop != nloop; ++iloop, target += 65, source += 168) {
133     target[0] =  c0 * source[0] - c0 * source[2] - c1 * source[12]
134                   + c1 * source[14] + c1 * source[24] - c1 * source[26]
135                   - c0 * source[36] + c0 * source[38];
136     target[1] =  c2 * source[1] - c3 * source[13] + c3 * source[25]
137                   - c2 * source[37];
138     target[2] =  c2 * source[3] - c3 * source[15] + c3 * source[27]
139                   - c2 * source[39];
140     target[3] =  c2 * source[4] - c3 * source[16] + c3 * source[28]
141                   - c2 * source[40];
142     target[4] =  c4 * source[5] - c5 * source[0] - c5 * source[2]
143                   - c6 * source[17] + c7 * source[12] + c7 * source[14]
144                   + c6 * source[29] - c7 * source[24] - c7 * source[26]
145                   - c4 * source[41] + c5 * source[36] + c5 * source[38];
146     target[5] =  c8 * source[6] - c8 * source[8] - c9 * source[18]
147                   + c9 * source[20] + c8 * source[30] - c8 * source[32];
148     target[6] =  c10 * source[7] - c11 * source[19] + c10 * source[31];
149     target[7] =  c10 * source[9] - c11 * source[21] + c10 * source[33];
150     target[8] =  c10 * source[10] - c11 * source[22] + c10 * source[34];
151     target[9] =  c12 * source[11] - c13 * source[6] - c13 * source[8]
152                   - c14 * source[23] + c15 * source[18] + c15 * source[20]
153                   + c12 * source[35] - c13 * source[30] - c13 * source[32];
154     target[10] =  c13 * source[42] - c13 * source[44] - c16 * source[54]
155                   + c16 * source[56] + c6 * source[66] - c6 * source[68];
156     target[11] =  c12 * source[43] - c17 * source[55] + c16 * source[67];
157     target[12] =  c12 * source[45] - c17 * source[57] + c16 * source[69];
158     target[13] =  c12 * source[46] - c17 * source[58] + c16 * source[70];
159     target[14] =  c18 * source[47] - c2 * source[42] - c2 * source[44]
160                   - c11 * source[59] + c9 * source[54] + c9 * source[56]
161                   + c9 * source[71] - c19 * source[66] - c19 * source[68];
162     target[15] =  c6 * source[48] - c6 * source[50] - c16 * source[60]
163                   + c16 * source[62] + c13 * source[72] - c13 * source[74];
164     target[16] =  c16 * source[49] - c17 * source[61] + c12 * source[73];
165     target[17] =  c16 * source[51] - c17 * source[63] + c12 * source[75];
166     target[18] =  c16 * source[52] - c17 * source[64] + c12 * source[76];
167     target[19] =  c9 * source[53] - c19 * source[48] - c19 * source[50]
168                   - c11 * source[65] + c9 * source[60] + c9 * source[62]
169                   + c18 * source[77] - c2 * source[72] - c2 * source[74];
170     target[20] =  c20 * source[78] - c20 * source[80] - c21 * source[90]
171                   + c21 * source[92] + c20 * source[102] - c20 * source[104]
172                   - c22 * source[0] + c22 * source[2] + c23 * source[12]
173                   - c23 * source[14] - c22 * source[24] + c22 * source[26]
174                   - c22 * source[12] + c22 * source[14] + c23 * source[24]
175                   - c23 * source[26] - c22 * source[36] + c22 * source[38];
176     target[21] =  c24 * source[79] - c25 * source[91] + c24 * source[103]
177                   - c26 * source[1] + c27 * source[13] - c26 * source[25]
178                   - c26 * source[13] + c27 * source[25] - c26 * source[37];
179     target[22] =  c24 * source[81] - c25 * source[93] + c24 * source[105]
180                   - c26 * source[3] + c27 * source[15] - c26 * source[27]
181                   - c26 * source[15] + c27 * source[27] - c26 * source[39];
182     target[23] =  c24 * source[82] - c25 * source[94] + c24 * source[106]
183                   - c26 * source[4] + c27 * source[16] - c26 * source[28]
184                   - c26 * source[16] + c27 * source[28] - c26 * source[40];
185     target[24] =  c28 * source[83] - c29 * source[78] - c29 * source[80]
186                   - c30 * source[95] + c31 * source[90] + c31 * source[92]
187                   + c28 * source[107] - c29 * source[102] - c29 * source[104]
188                   - c32 * source[5] + c33 * source[0] + c33 * source[2]
189                   + c34 * source[17] - c35 * source[12] - c35 * source[14]
190                   - c32 * source[29] + c33 * source[24] + c33 * source[26]
191                   - c32 * source[17] + c33 * source[12] + c33 * source[14]
192                   + c34 * source[29] - c35 * source[24] - c35 * source[26]
193                   - c32 * source[41] + c33 * source[36] + c33 * source[38];
194     target[25] =  c36 * source[84] - c36 * source[86] - c36 * source[96]
195                   + c36 * source[98] - c37 * source[6] + c37 * source[8]
196                   + c37 * source[18] - c37 * source[20] - c37 * source[18]
197                   + c37 * source[20] + c37 * source[30] - c37 * source[32];
198     target[26] =  c38 * source[85] - c38 * source[97] - c39 * source[7]
199                   + c39 * source[19] - c39 * source[19] + c39 * source[31];
200     target[27] =  c38 * source[87] - c38 * source[99] - c39 * source[9]
201                   + c39 * source[21] - c39 * source[21] + c39 * source[33];
202     target[28] =  c38 * source[88] - c38 * source[100] - c39 * source[10]
203                   + c39 * source[22] - c39 * source[22] + c39 * source[34];
204     target[29] =  c40 * source[89] - c41 * source[84] - c41 * source[86]
205                   - c40 * source[101] + c41 * source[96] + c41 * source[98]
206                   - c42 * source[11] + c43 * source[6] + c43 * source[8]
207                   + c42 * source[23] - c43 * source[18] - c43 * source[20]
208                   - c42 * source[23] + c43 * source[18] + c43 * source[20]
209                   + c42 * source[35] - c43 * source[30] - c43 * source[32];
210     target[30] =  c44 * source[108] - c44 * source[110] - c45 * source[120]
211                   + c45 * source[122] - c46 * source[42] + c46 * source[44]
212                   + c47 * source[54] - c47 * source[56] - c46 * source[54]
213                   + c46 * source[56] + c47 * source[66] - c47 * source[68];
214     target[31] =  c48 * source[109] - c49 * source[121] - c50 * source[43]
215                   + c51 * source[55] - c50 * source[55] + c51 * source[67];
216     target[32] =  c48 * source[111] - c49 * source[123] - c50 * source[45]
217                   + c51 * source[57] - c50 * source[57] + c51 * source[69];
218     target[33] =  c48 * source[112] - c49 * source[124] - c50 * source[46]
219                   + c51 * source[58] - c50 * source[58] + c51 * source[70];
220     target[34] =  c52 * source[113] - c53 * source[108] - c53 * source[110]
221                   - c54 * source[125] + c55 * source[120] + c55 * source[122]
222                   - c56 * source[47] + c57 * source[42] + c57 * source[44]
223                   + c58 * source[59] - c59 * source[54] - c59 * source[56]
224                   - c56 * source[59] + c57 * source[54] + c57 * source[56]
225                   + c58 * source[71] - c59 * source[66] - c59 * source[68];
226     target[35] =  c45 * source[114] - c45 * source[116] - c44 * source[126]
227                   + c44 * source[128] - c47 * source[48] + c47 * source[50]
228                   + c46 * source[60] - c46 * source[62] - c47 * source[60]
229                   + c47 * source[62] + c46 * source[72] - c46 * source[74];
230     target[36] =  c49 * source[115] - c48 * source[127] - c51 * source[49]
231                   + c50 * source[61] - c51 * source[61] + c50 * source[73];
232     target[37] =  c49 * source[117] - c48 * source[129] - c51 * source[51]
233                   + c50 * source[63] - c51 * source[63] + c50 * source[75];
234     target[38] =  c49 * source[118] - c48 * source[130] - c51 * source[52]
235                   + c50 * source[64] - c51 * source[64] + c50 * source[76];
236     target[39] =  c54 * source[119] - c55 * source[114] - c55 * source[116]
237                   - c52 * source[131] + c53 * source[126] + c53 * source[128]
238                   - c58 * source[53] + c59 * source[48] + c59 * source[50]
239                   + c56 * source[65] - c57 * source[60] - c57 * source[62]
240                   - c58 * source[65] + c59 * source[60] + c59 * source[62]
241                   + c56 * source[77] - c57 * source[72] - c57 * source[74];
242     target[40] =  c44 * source[132] - c44 * source[134] - c44 * source[144]
243                   + c44 * source[146] - c44 * source[78] + c44 * source[80]
244                   + c44 * source[90] - c44 * source[92] - c44 * source[90]
245                   + c44 * source[92] + c44 * source[102] - c44 * source[104]
246                   + c60 * source[0] - c60 * source[2] - c60 * source[12]
247                   + c60 * source[14] + c61 * source[12] - c61 * source[14]
248                   - c61 * source[24] + c61 * source[26] + c60 * source[24]
249                   - c60 * source[26] - c60 * source[36] + c60 * source[38];
250     target[41] =  c48 * source[133] - c48 * source[145] - c48 * source[79]
251                   + c48 * source[91] - c48 * source[91] + c48 * source[103]
252                   + c61 * source[1] - c61 * source[13] + c62 * source[13]
253                   - c62 * source[25] + c61 * source[25] - c61 * source[37];
254     target[42] =  c48 * source[135] - c48 * source[147] - c48 * source[81]
255                   + c48 * source[93] - c48 * source[93] + c48 * source[105]
256                   + c61 * source[3] - c61 * source[15] + c62 * source[15]
257                   - c62 * source[27] + c61 * source[27] - c61 * source[39];
258     target[43] =  c48 * source[136] - c48 * source[148] - c48 * source[82]
259                   + c48 * source[94] - c48 * source[94] + c48 * source[106]
260                   + c61 * source[4] - c61 * source[16] + c62 * source[16]
261                   - c62 * source[28] + c61 * source[28] - c61 * source[40];
262     target[44] =  c52 * source[137] - c53 * source[132] - c53 * source[134]
263                   - c52 * source[149] + c53 * source[144] + c53 * source[146]
264                   - c52 * source[83] + c53 * source[78] + c53 * source[80]
265                   + c52 * source[95] - c53 * source[90] - c53 * source[92]
266                   - c52 * source[95] + c53 * source[90] + c53 * source[92]
267                   + c52 * source[107] - c53 * source[102] - c53 * source[104]
268                   + c63 * source[5] - c64 * source[0] - c64 * source[2]
269                   - c63 * source[17] + c64 * source[12] + c64 * source[14]
270                   + c65 * source[17] - c63 * source[12] - c63 * source[14]
271                   - c65 * source[29] + c63 * source[24] + c63 * source[26]
272                   + c63 * source[29] - c64 * source[24] - c64 * source[26]
273                   - c63 * source[41] + c64 * source[36] + c64 * source[38];
274     target[45] =  c48 * source[138] - c48 * source[140] - c48 * source[84]
275                   + c48 * source[86] - c48 * source[96] + c48 * source[98]
276                   + c61 * source[6] - c61 * source[8] + c62 * source[18]
277                   - c62 * source[20] + c61 * source[30] - c61 * source[32];
278     target[46] =  c66 * source[139] - c66 * source[85] - c66 * source[97]
279                   + c62 * source[7] + c67 * source[19] + c62 * source[31];
280     target[47] =  c66 * source[141] - c66 * source[87] - c66 * source[99]
281                   + c62 * source[9] + c67 * source[21] + c62 * source[33];
282     target[48] =  c66 * source[142] - c66 * source[88] - c66 * source[100]
283                   + c62 * source[10] + c67 * source[22] + c62 * source[34];
284     target[49] =  c68 * source[143] - c52 * source[138] - c52 * source[140]
285                   - c68 * source[89] + c52 * source[84] + c52 * source[86]
286                   - c68 * source[101] + c52 * source[96] + c52 * source[98]
287                   + c65 * source[11] - c63 * source[6] - c63 * source[8]
288                   + c69 * source[23] - c65 * source[18] - c65 * source[20]
289                   + c65 * source[35] - c63 * source[30] - c63 * source[32];
290     target[50] =  c70 * source[150] - c70 * source[152] - c41 * source[108]
291                   + c41 * source[110] - c41 * source[120] + c41 * source[122]
292                   + c29 * source[42] - c29 * source[44] + c28 * source[54]
293                   - c28 * source[56] + c29 * source[66] - c29 * source[68];
294     target[51] =  c71 * source[151] - c40 * source[109] - c40 * source[121]
295                   + c28 * source[43] + c41 * source[55] + c28 * source[67];
296     target[52] =  c71 * source[153] - c40 * source[111] - c40 * source[123]
297                   + c28 * source[45] + c41 * source[57] + c28 * source[69];
298     target[53] =  c71 * source[154] - c40 * source[112] - c40 * source[124]
299                   + c28 * source[46] + c41 * source[58] + c28 * source[70];
300     target[54] =  c72 * source[155] - c73 * source[150] - c73 * source[152]
301                   - c74 * source[113] + c75 * source[108] + c75 * source[110]
302                   - c74 * source[125] + c75 * source[120] + c75 * source[122]
303                   + c76 * source[47] - c77 * source[42] - c77 * source[44]
304                   + c75 * source[59] - c76 * source[54] - c76 * source[56]
305                   + c76 * source[71] - c77 * source[66] - c77 * source[68];
306     target[55] =  c70 * source[156] - c70 * source[158] - c41 * source[114]
307                   + c41 * source[116] - c41 * source[126] + c41 * source[128]
308                   + c29 * source[48] - c29 * source[50] + c28 * source[60]
309                   - c28 * source[62] + c29 * source[72] - c29 * source[74];
310     target[56] =  c71 * source[157] - c40 * source[115] - c40 * source[127]
311                   + c28 * source[49] + c41 * source[61] + c28 * source[73];
312     target[57] =  c71 * source[159] - c40 * source[117] - c40 * source[129]
313                   + c28 * source[51] + c41 * source[63] + c28 * source[75];
314     target[58] =  c71 * source[160] - c40 * source[118] - c40 * source[130]
315                   + c28 * source[52] + c41 * source[64] + c28 * source[76];
316     target[59] =  c72 * source[161] - c73 * source[156] - c73 * source[158]
317                   - c74 * source[119] + c75 * source[114] + c75 * source[116]
318                   - c74 * source[131] + c75 * source[126] + c75 * source[128]
319                   + c76 * source[53] - c77 * source[48] - c77 * source[50]
320                   + c75 * source[65] - c76 * source[60] - c76 * source[62]
321                   + c76 * source[77] - c77 * source[72] - c77 * source[74];
322     target[60] =  c78 * source[162] - c78 * source[164] - c79 * source[132]
323                   + c79 * source[134] - c79 * source[144] + c79 * source[146]
324                   + c80 * source[78] - c80 * source[80] + c81 * source[90]
325                   - c81 * source[92] + c80 * source[102] - c80 * source[104]
326                   - c82 * source[0] + c82 * source[2] - c83 * source[12]
327                   + c83 * source[14] - c83 * source[24] + c83 * source[26]
328                   - c82 * source[36] + c82 * source[38];
329     target[61] =  c84 * source[163] - c85 * source[133] - c85 * source[145]
330                   + c81 * source[79] + c86 * source[91] + c81 * source[103]
331                   - c87 * source[1] - c88 * source[13] - c88 * source[25]
332                   - c87 * source[37];
333     target[62] =  c84 * source[165] - c85 * source[135] - c85 * source[147]
334                   + c81 * source[81] + c86 * source[93] + c81 * source[105]
335                   - c87 * source[3] - c88 * source[15] - c88 * source[27]
336                   - c87 * source[39];
337     target[63] =  c84 * source[166] - c85 * source[136] - c85 * source[148]
338                   + c81 * source[82] + c86 * source[94] + c81 * source[106]
339                   - c87 * source[4] - c88 * source[16] - c88 * source[28]
340                   - c87 * source[40];
341     target[64] =  source[167] - c89 * source[162] - c89 * source[164]
342                   - c90 * source[137] + c91 * source[132] + c91 * source[134]
343                   - c90 * source[149] + c91 * source[144] + c91 * source[146]
344                   + c92 * source[83] - c93 * source[78] - c93 * source[80]
345                   + c94 * source[95] - c92 * source[90] - c92 * source[92]
346                   + c92 * source[107] - c93 * source[102] - c93 * source[104]
347                   - c95 * source[5] + c96 * source[0] + c96 * source[2]
348                   - c97 * source[17] + c98 * source[12] + c98 * source[14]
349                   - c97 * source[29] + c98 * source[24] + c98 * source[26]
350                   - c95 * source[41] + c96 * source[36] + c96 * source[38];
351   }
352 }
353 
carsph_62(const int nloop,const complex<double> * source,complex<double> * target)354 void CCarSphList::carsph_62(const int nloop, const complex<double>* source, complex<double>* target) {
355   const double c25 = 51.553976568253198;
356   const double c17 = 40.301597362883768;
357   const double c49 = 37.649701194033398;
358   const double c38 = 34.369317712168801;
359   const double c30 = 29.764702249476645;
360   const double c21 = 25.776988284126599;
361   const double c66 = 25.099800796022265;
362   const double c11 = 23.268138086232856;
363   const double c54 = 21.737065119284157;
364   const double c16 = 20.150798681441884;
365   const double c40 = 19.843134832984429;
366   const double c86 = 19.48557158514987;
367   const double c45 = 18.824850597016699;
368   const double c3 = 17.451103564674643;
369   const double c36 = 17.1846588560844;
370   const double c31 = 14.882351124738323;
371   const double c68 = 14.491376746189438;
372   const double c51 = 14.118637947762524;
373   const double c14 = 13.433865787627923;
374   const double c85 = 12.99038105676658;
375   const double c48 = 12.549900398011133;
376   const double c9 = 11.634069043116428;
377   const double c74 = 11.456439237389599;
378   const double c94 = 11.25;
379   const double c55 = 10.868532559642079;
380   const double c6 = 10.075399340720942;
381   const double c41 = 9.9215674164922145;
382   const double c81 = 9.742785792574935;
383   const double c1 = 8.7255517823373214;
384   const double c24 = 8.5923294280422002;
385   const double c58 = 8.1513994197315593;
386   const double c71 = 7.9372539331937721;
387   const double c90 = 7.5;
388   const double c52 = 7.245688373094719;
389   const double c47 = 7.0593189738812621;
390   const double c10 = 6.9804414258698566;
391   const double c15 = 6.7169328938139614;
392   const double c79 = 6.49519052838329;
393   const double c44 = 6.2749501990055663;
394   const double c19 = 5.817034521558214;
395   const double c75 = 5.7282196186947996;
396   const double c92 = 5.625;
397   const double c27 = 5.1553976568253201;
398   const double c7 = 5.0376996703604711;
399   const double c28 = 4.9607837082461073;
400   const double c80 = 4.8713928962874675;
401   const double c50 = 4.7062126492541747;
402   const double c72 = 4.5825756949558398;
403   const double c20 = 4.2961647140211001;
404   const double c59 = 4.0756997098657797;
405   const double c12 = 4.0301597362883772;
406   const double c70 = 3.9686269665968861;
407   const double c91 = 3.75;
408   const double c53 = 3.6228441865473595;
409   const double c8 = 3.4902207129349283;
410   const double c39 = 3.4369317712168801;
411   const double c67 = 3.1374750995027831;
412   const double c34 = 2.9764702249476644;
413   const double c76 = 2.8641098093473998;
414   const double c93 = 2.8125;
415   const double c56 = 2.7171331399105196;
416   const double c23 = 2.5776988284126601;
417   const double c29 = 2.4803918541230536;
418   const double c46 = 2.3531063246270874;
419   const double c18 = 2.3268138086232857;
420   const double c73 = 2.2912878474779199;
421   const double c13 = 2.0150798681441886;
422   const double c42 = 1.984313483298443;
423   const double c69 = 1.8114220932736798;
424   const double c84 = 1.7320508075688772;
425   const double c37 = 1.71846588560844;
426   const double c88 = 1.6237976320958225;
427   const double c62 = 1.5687375497513916;
428   const double c35 = 1.4882351124738322;
429   const double c77 = 1.4320549046736999;
430   const double c57 = 1.3585665699552598;
431   const double c2 = 1.1634069043116428;
432   const double c43 = 0.99215674164922152;
433   const double c97 = 0.9375;
434   const double c65 = 0.90571104663683988;
435   const double c78 = 0.8660254037844386;
436   const double c26 = 0.85923294280422002;
437   const double c83 = 0.81189881604791125;
438   const double c61 = 0.78436877487569578;
439   const double c4 = 0.67169328938139616;
440   const double c0 = 0.58170345215582142;
441   const double c87 = 0.54126587736527421;
442   const double c89 = 0.5;
443   const double c32 = 0.49607837082461076;
444   const double c98 = 0.46875;
445   const double c63 = 0.45285552331841994;
446   const double c22 = 0.42961647140211001;
447   const double c60 = 0.39218438743784789;
448   const double c5 = 0.33584664469069808;
449   const double c95 = 0.3125;
450   const double c82 = 0.2706329386826371;
451   const double c33 = 0.24803918541230538;
452   const double c64 = 0.22642776165920997;
453   const double c96 = 0.15625;
454   for (int iloop = 0; iloop != nloop; ++iloop, target += 65, source += 168) {
455     target[0] =  c0 * source[0] - c0 * source[2] - c1 * source[12]
456                   + c1 * source[14] + c1 * source[24] - c1 * source[26]
457                   - c0 * source[36] + c0 * source[38];
458     target[1] =  c2 * source[1] - c3 * source[13] + c3 * source[25]
459                   - c2 * source[37];
460     target[2] =  c2 * source[3] - c3 * source[15] + c3 * source[27]
461                   - c2 * source[39];
462     target[3] =  c2 * source[4] - c3 * source[16] + c3 * source[28]
463                   - c2 * source[40];
464     target[4] =  c4 * source[5] - c5 * source[0] - c5 * source[2]
465                   - c6 * source[17] + c7 * source[12] + c7 * source[14]
466                   + c6 * source[29] - c7 * source[24] - c7 * source[26]
467                   - c4 * source[41] + c5 * source[36] + c5 * source[38];
468     target[5] =  c8 * source[6] - c8 * source[8] - c9 * source[18]
469                   + c9 * source[20] + c8 * source[30] - c8 * source[32];
470     target[6] =  c10 * source[7] - c11 * source[19] + c10 * source[31];
471     target[7] =  c10 * source[9] - c11 * source[21] + c10 * source[33];
472     target[8] =  c10 * source[10] - c11 * source[22] + c10 * source[34];
473     target[9] =  c12 * source[11] - c13 * source[6] - c13 * source[8]
474                   - c14 * source[23] + c15 * source[18] + c15 * source[20]
475                   + c12 * source[35] - c13 * source[30] - c13 * source[32];
476     target[10] =  c13 * source[42] - c13 * source[44] - c16 * source[54]
477                   + c16 * source[56] + c6 * source[66] - c6 * source[68];
478     target[11] =  c12 * source[43] - c17 * source[55] + c16 * source[67];
479     target[12] =  c12 * source[45] - c17 * source[57] + c16 * source[69];
480     target[13] =  c12 * source[46] - c17 * source[58] + c16 * source[70];
481     target[14] =  c18 * source[47] - c2 * source[42] - c2 * source[44]
482                   - c11 * source[59] + c9 * source[54] + c9 * source[56]
483                   + c9 * source[71] - c19 * source[66] - c19 * source[68];
484     target[15] =  c6 * source[48] - c6 * source[50] - c16 * source[60]
485                   + c16 * source[62] + c13 * source[72] - c13 * source[74];
486     target[16] =  c16 * source[49] - c17 * source[61] + c12 * source[73];
487     target[17] =  c16 * source[51] - c17 * source[63] + c12 * source[75];
488     target[18] =  c16 * source[52] - c17 * source[64] + c12 * source[76];
489     target[19] =  c9 * source[53] - c19 * source[48] - c19 * source[50]
490                   - c11 * source[65] + c9 * source[60] + c9 * source[62]
491                   + c18 * source[77] - c2 * source[72] - c2 * source[74];
492     target[20] =  c20 * source[78] - c20 * source[80] - c21 * source[90]
493                   + c21 * source[92] + c20 * source[102] - c20 * source[104]
494                   - c22 * source[0] + c22 * source[2] + c23 * source[12]
495                   - c23 * source[14] - c22 * source[24] + c22 * source[26]
496                   - c22 * source[12] + c22 * source[14] + c23 * source[24]
497                   - c23 * source[26] - c22 * source[36] + c22 * source[38];
498     target[21] =  c24 * source[79] - c25 * source[91] + c24 * source[103]
499                   - c26 * source[1] + c27 * source[13] - c26 * source[25]
500                   - c26 * source[13] + c27 * source[25] - c26 * source[37];
501     target[22] =  c24 * source[81] - c25 * source[93] + c24 * source[105]
502                   - c26 * source[3] + c27 * source[15] - c26 * source[27]
503                   - c26 * source[15] + c27 * source[27] - c26 * source[39];
504     target[23] =  c24 * source[82] - c25 * source[94] + c24 * source[106]
505                   - c26 * source[4] + c27 * source[16] - c26 * source[28]
506                   - c26 * source[16] + c27 * source[28] - c26 * source[40];
507     target[24] =  c28 * source[83] - c29 * source[78] - c29 * source[80]
508                   - c30 * source[95] + c31 * source[90] + c31 * source[92]
509                   + c28 * source[107] - c29 * source[102] - c29 * source[104]
510                   - c32 * source[5] + c33 * source[0] + c33 * source[2]
511                   + c34 * source[17] - c35 * source[12] - c35 * source[14]
512                   - c32 * source[29] + c33 * source[24] + c33 * source[26]
513                   - c32 * source[17] + c33 * source[12] + c33 * source[14]
514                   + c34 * source[29] - c35 * source[24] - c35 * source[26]
515                   - c32 * source[41] + c33 * source[36] + c33 * source[38];
516     target[25] =  c36 * source[84] - c36 * source[86] - c36 * source[96]
517                   + c36 * source[98] - c37 * source[6] + c37 * source[8]
518                   + c37 * source[18] - c37 * source[20] - c37 * source[18]
519                   + c37 * source[20] + c37 * source[30] - c37 * source[32];
520     target[26] =  c38 * source[85] - c38 * source[97] - c39 * source[7]
521                   + c39 * source[19] - c39 * source[19] + c39 * source[31];
522     target[27] =  c38 * source[87] - c38 * source[99] - c39 * source[9]
523                   + c39 * source[21] - c39 * source[21] + c39 * source[33];
524     target[28] =  c38 * source[88] - c38 * source[100] - c39 * source[10]
525                   + c39 * source[22] - c39 * source[22] + c39 * source[34];
526     target[29] =  c40 * source[89] - c41 * source[84] - c41 * source[86]
527                   - c40 * source[101] + c41 * source[96] + c41 * source[98]
528                   - c42 * source[11] + c43 * source[6] + c43 * source[8]
529                   + c42 * source[23] - c43 * source[18] - c43 * source[20]
530                   - c42 * source[23] + c43 * source[18] + c43 * source[20]
531                   + c42 * source[35] - c43 * source[30] - c43 * source[32];
532     target[30] =  c44 * source[108] - c44 * source[110] - c45 * source[120]
533                   + c45 * source[122] - c46 * source[42] + c46 * source[44]
534                   + c47 * source[54] - c47 * source[56] - c46 * source[54]
535                   + c46 * source[56] + c47 * source[66] - c47 * source[68];
536     target[31] =  c48 * source[109] - c49 * source[121] - c50 * source[43]
537                   + c51 * source[55] - c50 * source[55] + c51 * source[67];
538     target[32] =  c48 * source[111] - c49 * source[123] - c50 * source[45]
539                   + c51 * source[57] - c50 * source[57] + c51 * source[69];
540     target[33] =  c48 * source[112] - c49 * source[124] - c50 * source[46]
541                   + c51 * source[58] - c50 * source[58] + c51 * source[70];
542     target[34] =  c52 * source[113] - c53 * source[108] - c53 * source[110]
543                   - c54 * source[125] + c55 * source[120] + c55 * source[122]
544                   - c56 * source[47] + c57 * source[42] + c57 * source[44]
545                   + c58 * source[59] - c59 * source[54] - c59 * source[56]
546                   - c56 * source[59] + c57 * source[54] + c57 * source[56]
547                   + c58 * source[71] - c59 * source[66] - c59 * source[68];
548     target[35] =  c45 * source[114] - c45 * source[116] - c44 * source[126]
549                   + c44 * source[128] - c47 * source[48] + c47 * source[50]
550                   + c46 * source[60] - c46 * source[62] - c47 * source[60]
551                   + c47 * source[62] + c46 * source[72] - c46 * source[74];
552     target[36] =  c49 * source[115] - c48 * source[127] - c51 * source[49]
553                   + c50 * source[61] - c51 * source[61] + c50 * source[73];
554     target[37] =  c49 * source[117] - c48 * source[129] - c51 * source[51]
555                   + c50 * source[63] - c51 * source[63] + c50 * source[75];
556     target[38] =  c49 * source[118] - c48 * source[130] - c51 * source[52]
557                   + c50 * source[64] - c51 * source[64] + c50 * source[76];
558     target[39] =  c54 * source[119] - c55 * source[114] - c55 * source[116]
559                   - c52 * source[131] + c53 * source[126] + c53 * source[128]
560                   - c58 * source[53] + c59 * source[48] + c59 * source[50]
561                   + c56 * source[65] - c57 * source[60] - c57 * source[62]
562                   - c58 * source[65] + c59 * source[60] + c59 * source[62]
563                   + c56 * source[77] - c57 * source[72] - c57 * source[74];
564     target[40] =  c44 * source[132] - c44 * source[134] - c44 * source[144]
565                   + c44 * source[146] - c44 * source[78] + c44 * source[80]
566                   + c44 * source[90] - c44 * source[92] - c44 * source[90]
567                   + c44 * source[92] + c44 * source[102] - c44 * source[104]
568                   + c60 * source[0] - c60 * source[2] - c60 * source[12]
569                   + c60 * source[14] + c61 * source[12] - c61 * source[14]
570                   - c61 * source[24] + c61 * source[26] + c60 * source[24]
571                   - c60 * source[26] - c60 * source[36] + c60 * source[38];
572     target[41] =  c48 * source[133] - c48 * source[145] - c48 * source[79]
573                   + c48 * source[91] - c48 * source[91] + c48 * source[103]
574                   + c61 * source[1] - c61 * source[13] + c62 * source[13]
575                   - c62 * source[25] + c61 * source[25] - c61 * source[37];
576     target[42] =  c48 * source[135] - c48 * source[147] - c48 * source[81]
577                   + c48 * source[93] - c48 * source[93] + c48 * source[105]
578                   + c61 * source[3] - c61 * source[15] + c62 * source[15]
579                   - c62 * source[27] + c61 * source[27] - c61 * source[39];
580     target[43] =  c48 * source[136] - c48 * source[148] - c48 * source[82]
581                   + c48 * source[94] - c48 * source[94] + c48 * source[106]
582                   + c61 * source[4] - c61 * source[16] + c62 * source[16]
583                   - c62 * source[28] + c61 * source[28] - c61 * source[40];
584     target[44] =  c52 * source[137] - c53 * source[132] - c53 * source[134]
585                   - c52 * source[149] + c53 * source[144] + c53 * source[146]
586                   - c52 * source[83] + c53 * source[78] + c53 * source[80]
587                   + c52 * source[95] - c53 * source[90] - c53 * source[92]
588                   - c52 * source[95] + c53 * source[90] + c53 * source[92]
589                   + c52 * source[107] - c53 * source[102] - c53 * source[104]
590                   + c63 * source[5] - c64 * source[0] - c64 * source[2]
591                   - c63 * source[17] + c64 * source[12] + c64 * source[14]
592                   + c65 * source[17] - c63 * source[12] - c63 * source[14]
593                   - c65 * source[29] + c63 * source[24] + c63 * source[26]
594                   + c63 * source[29] - c64 * source[24] - c64 * source[26]
595                   - c63 * source[41] + c64 * source[36] + c64 * source[38];
596     target[45] =  c48 * source[138] - c48 * source[140] - c48 * source[84]
597                   + c48 * source[86] - c48 * source[96] + c48 * source[98]
598                   + c61 * source[6] - c61 * source[8] + c62 * source[18]
599                   - c62 * source[20] + c61 * source[30] - c61 * source[32];
600     target[46] =  c66 * source[139] - c66 * source[85] - c66 * source[97]
601                   + c62 * source[7] + c67 * source[19] + c62 * source[31];
602     target[47] =  c66 * source[141] - c66 * source[87] - c66 * source[99]
603                   + c62 * source[9] + c67 * source[21] + c62 * source[33];
604     target[48] =  c66 * source[142] - c66 * source[88] - c66 * source[100]
605                   + c62 * source[10] + c67 * source[22] + c62 * source[34];
606     target[49] =  c68 * source[143] - c52 * source[138] - c52 * source[140]
607                   - c68 * source[89] + c52 * source[84] + c52 * source[86]
608                   - c68 * source[101] + c52 * source[96] + c52 * source[98]
609                   + c65 * source[11] - c63 * source[6] - c63 * source[8]
610                   + c69 * source[23] - c65 * source[18] - c65 * source[20]
611                   + c65 * source[35] - c63 * source[30] - c63 * source[32];
612     target[50] =  c70 * source[150] - c70 * source[152] - c41 * source[108]
613                   + c41 * source[110] - c41 * source[120] + c41 * source[122]
614                   + c29 * source[42] - c29 * source[44] + c28 * source[54]
615                   - c28 * source[56] + c29 * source[66] - c29 * source[68];
616     target[51] =  c71 * source[151] - c40 * source[109] - c40 * source[121]
617                   + c28 * source[43] + c41 * source[55] + c28 * source[67];
618     target[52] =  c71 * source[153] - c40 * source[111] - c40 * source[123]
619                   + c28 * source[45] + c41 * source[57] + c28 * source[69];
620     target[53] =  c71 * source[154] - c40 * source[112] - c40 * source[124]
621                   + c28 * source[46] + c41 * source[58] + c28 * source[70];
622     target[54] =  c72 * source[155] - c73 * source[150] - c73 * source[152]
623                   - c74 * source[113] + c75 * source[108] + c75 * source[110]
624                   - c74 * source[125] + c75 * source[120] + c75 * source[122]
625                   + c76 * source[47] - c77 * source[42] - c77 * source[44]
626                   + c75 * source[59] - c76 * source[54] - c76 * source[56]
627                   + c76 * source[71] - c77 * source[66] - c77 * source[68];
628     target[55] =  c70 * source[156] - c70 * source[158] - c41 * source[114]
629                   + c41 * source[116] - c41 * source[126] + c41 * source[128]
630                   + c29 * source[48] - c29 * source[50] + c28 * source[60]
631                   - c28 * source[62] + c29 * source[72] - c29 * source[74];
632     target[56] =  c71 * source[157] - c40 * source[115] - c40 * source[127]
633                   + c28 * source[49] + c41 * source[61] + c28 * source[73];
634     target[57] =  c71 * source[159] - c40 * source[117] - c40 * source[129]
635                   + c28 * source[51] + c41 * source[63] + c28 * source[75];
636     target[58] =  c71 * source[160] - c40 * source[118] - c40 * source[130]
637                   + c28 * source[52] + c41 * source[64] + c28 * source[76];
638     target[59] =  c72 * source[161] - c73 * source[156] - c73 * source[158]
639                   - c74 * source[119] + c75 * source[114] + c75 * source[116]
640                   - c74 * source[131] + c75 * source[126] + c75 * source[128]
641                   + c76 * source[53] - c77 * source[48] - c77 * source[50]
642                   + c75 * source[65] - c76 * source[60] - c76 * source[62]
643                   + c76 * source[77] - c77 * source[72] - c77 * source[74];
644     target[60] =  c78 * source[162] - c78 * source[164] - c79 * source[132]
645                   + c79 * source[134] - c79 * source[144] + c79 * source[146]
646                   + c80 * source[78] - c80 * source[80] + c81 * source[90]
647                   - c81 * source[92] + c80 * source[102] - c80 * source[104]
648                   - c82 * source[0] + c82 * source[2] - c83 * source[12]
649                   + c83 * source[14] - c83 * source[24] + c83 * source[26]
650                   - c82 * source[36] + c82 * source[38];
651     target[61] =  c84 * source[163] - c85 * source[133] - c85 * source[145]
652                   + c81 * source[79] + c86 * source[91] + c81 * source[103]
653                   - c87 * source[1] - c88 * source[13] - c88 * source[25]
654                   - c87 * source[37];
655     target[62] =  c84 * source[165] - c85 * source[135] - c85 * source[147]
656                   + c81 * source[81] + c86 * source[93] + c81 * source[105]
657                   - c87 * source[3] - c88 * source[15] - c88 * source[27]
658                   - c87 * source[39];
659     target[63] =  c84 * source[166] - c85 * source[136] - c85 * source[148]
660                   + c81 * source[82] + c86 * source[94] + c81 * source[106]
661                   - c87 * source[4] - c88 * source[16] - c88 * source[28]
662                   - c87 * source[40];
663     target[64] =  source[167] - c89 * source[162] - c89 * source[164]
664                   - c90 * source[137] + c91 * source[132] + c91 * source[134]
665                   - c90 * source[149] + c91 * source[144] + c91 * source[146]
666                   + c92 * source[83] - c93 * source[78] - c93 * source[80]
667                   + c94 * source[95] - c92 * source[90] - c92 * source[92]
668                   + c92 * source[107] - c93 * source[102] - c93 * source[104]
669                   - c95 * source[5] + c96 * source[0] + c96 * source[2]
670                   - c97 * source[17] + c98 * source[12] + c98 * source[14]
671                   - c97 * source[29] + c98 * source[24] + c98 * source[26]
672                   - c95 * source[41] + c96 * source[36] + c96 * source[38];
673   }
674 }
675 
676