1 #include "simint/boys/boys.h"
2 #include "simint/ostei/gen/ostei_generated.h"
3 #include "simint/vectorization/vectorization.h"
4 #include <math.h>
5 #include <string.h>
6
7
ostei_g_g_k_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_g_k_g)8 int ostei_g_g_k_g(struct simint_multi_shellpair const P,
9 struct simint_multi_shellpair const Q,
10 double screen_tol,
11 double * const restrict work,
12 double * const restrict INT__g_g_k_g)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__g_g_k_g);
17 int ab, cd, abcd;
18 int istart, jstart;
19 int iprimcd, nprim_icd, icd;
20 const int check_screen = (screen_tol > 0.0);
21 int i, j;
22 int n;
23 int not_screened;
24 int real_abcd;
25 int iket;
26 int ibra;
27
28 // partition workspace
29 double * const INT__g_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__g_s_l_s = work + (SIMINT_NSHELL_SIMD * 540);
31 double * const INT__g_s_m_s = work + (SIMINT_NSHELL_SIMD * 1215);
32 double * const INT__g_s_n_s = work + (SIMINT_NSHELL_SIMD * 2040);
33 double * const INT__g_s_o_s = work + (SIMINT_NSHELL_SIMD * 3030);
34 double * const INT__h_s_k_s = work + (SIMINT_NSHELL_SIMD * 4200);
35 double * const INT__h_s_l_s = work + (SIMINT_NSHELL_SIMD * 4956);
36 double * const INT__h_s_m_s = work + (SIMINT_NSHELL_SIMD * 5901);
37 double * const INT__h_s_n_s = work + (SIMINT_NSHELL_SIMD * 7056);
38 double * const INT__h_s_o_s = work + (SIMINT_NSHELL_SIMD * 8442);
39 double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 10080);
40 double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 11088);
41 double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 12348);
42 double * const INT__i_s_n_s = work + (SIMINT_NSHELL_SIMD * 13888);
43 double * const INT__i_s_o_s = work + (SIMINT_NSHELL_SIMD * 15736);
44 double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 17920);
45 double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 19216);
46 double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 20836);
47 double * const INT__k_s_n_s = work + (SIMINT_NSHELL_SIMD * 22816);
48 double * const INT__k_s_o_s = work + (SIMINT_NSHELL_SIMD * 25192);
49 double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 28000);
50 double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 29620);
51 double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 31645);
52 double * const INT__l_s_n_s = work + (SIMINT_NSHELL_SIMD * 34120);
53 double * const INT__l_s_o_s = work + (SIMINT_NSHELL_SIMD * 37090);
54 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*40600);
55 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
56 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 20;
57 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 77;
58 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 185;
59 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 355;
60 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_h_s = primwork + 595;
61 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_i_s = primwork + 910;
62 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_k_s = primwork + 1302;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_l_s = primwork + 1770;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_m_s = primwork + 2310;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_n_s = primwork + 2915;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_o_s = primwork + 3575;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 4277;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 4301;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 4373;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 4517;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 4757;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 5117;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_i_s = primwork + 5621;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_k_s = primwork + 6293;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_l_s = primwork + 7157;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_m_s = primwork + 8237;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_n_s = primwork + 9557;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_o_s = primwork + 11141;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 13013;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 13139;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 13391;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 13811;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 14441;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 15323;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_k_s = primwork + 16499;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_l_s = primwork + 18011;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_m_s = primwork + 19901;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_n_s = primwork + 22211;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_o_s = primwork + 24983;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 28259;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 28619;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 29219;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 30119;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 31379;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 33059;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_l_s = primwork + 35219;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_m_s = primwork + 37919;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_n_s = primwork + 41219;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_o_s = primwork + 45179;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 49859;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 50609;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 51734;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 53309;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 55409;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 58109;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_m_s = primwork + 61484;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_n_s = primwork + 65609;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_o_s = primwork + 70559;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 76409;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 77669;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 79433;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 81785;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 84809;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 88589;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_n_s = primwork + 93209;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_o_s = primwork + 98753;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 105305;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 107069;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 109421;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 112445;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 116225;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_n_s = primwork + 120845;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_o_s = primwork + 126389;
124 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 132941;
125 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 134957;
126 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 137549;
127 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 140789;
128 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_n_s = primwork + 144749;
129 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_o_s = primwork + 149501;
130 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 155117;
131 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 156737;
132 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 158762;
133 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_n_s = primwork + 161237;
134 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_o_s = primwork + 164207;
135 double * const hrrwork = (double *)(primwork + 167717);
136 double * const HRR_INT__g_p_k_s = hrrwork + 0;
137 double * const HRR_INT__g_p_l_s = hrrwork + 1620;
138 double * const HRR_INT__g_p_m_s = hrrwork + 3645;
139 double * const HRR_INT__g_p_n_s = hrrwork + 6120;
140 double * const HRR_INT__g_p_o_s = hrrwork + 9090;
141 double * const HRR_INT__g_d_k_s = hrrwork + 12600;
142 double * const HRR_INT__g_d_l_s = hrrwork + 15840;
143 double * const HRR_INT__g_d_m_s = hrrwork + 19890;
144 double * const HRR_INT__g_d_n_s = hrrwork + 24840;
145 double * const HRR_INT__g_d_o_s = hrrwork + 30780;
146 double * const HRR_INT__g_f_k_s = hrrwork + 37800;
147 double * const HRR_INT__g_f_l_s = hrrwork + 43200;
148 double * const HRR_INT__g_f_m_s = hrrwork + 49950;
149 double * const HRR_INT__g_f_n_s = hrrwork + 58200;
150 double * const HRR_INT__g_f_o_s = hrrwork + 68100;
151 double * const HRR_INT__g_g_k_s = hrrwork + 79800;
152 double * const HRR_INT__g_g_k_p = hrrwork + 87900;
153 double * const HRR_INT__g_g_k_d = hrrwork + 112200;
154 double * const HRR_INT__g_g_k_f = hrrwork + 160800;
155 double * const HRR_INT__g_g_l_s = hrrwork + 241800;
156 double * const HRR_INT__g_g_l_p = hrrwork + 251925;
157 double * const HRR_INT__g_g_l_d = hrrwork + 282300;
158 double * const HRR_INT__g_g_l_f = hrrwork + 343050;
159 double * const HRR_INT__g_g_m_s = hrrwork + 444300;
160 double * const HRR_INT__g_g_m_p = hrrwork + 456675;
161 double * const HRR_INT__g_g_m_d = hrrwork + 493800;
162 double * const HRR_INT__g_g_n_s = hrrwork + 568050;
163 double * const HRR_INT__g_g_n_p = hrrwork + 582900;
164 double * const HRR_INT__g_g_o_s = hrrwork + 627450;
165 double * const HRR_INT__h_p_k_s = hrrwork + 645000;
166 double * const HRR_INT__h_p_l_s = hrrwork + 647268;
167 double * const HRR_INT__h_p_m_s = hrrwork + 650103;
168 double * const HRR_INT__h_p_n_s = hrrwork + 653568;
169 double * const HRR_INT__h_p_o_s = hrrwork + 657726;
170 double * const HRR_INT__h_d_k_s = hrrwork + 662640;
171 double * const HRR_INT__h_d_l_s = hrrwork + 667176;
172 double * const HRR_INT__h_d_m_s = hrrwork + 672846;
173 double * const HRR_INT__h_d_n_s = hrrwork + 679776;
174 double * const HRR_INT__h_d_o_s = hrrwork + 688092;
175 double * const HRR_INT__h_f_k_s = hrrwork + 697920;
176 double * const HRR_INT__h_f_l_s = hrrwork + 705480;
177 double * const HRR_INT__h_f_m_s = hrrwork + 714930;
178 double * const HRR_INT__h_f_n_s = hrrwork + 726480;
179 double * const HRR_INT__h_f_o_s = hrrwork + 740340;
180 double * const HRR_INT__i_p_k_s = hrrwork + 756720;
181 double * const HRR_INT__i_p_l_s = hrrwork + 759744;
182 double * const HRR_INT__i_p_m_s = hrrwork + 763524;
183 double * const HRR_INT__i_p_n_s = hrrwork + 768144;
184 double * const HRR_INT__i_p_o_s = hrrwork + 773688;
185 double * const HRR_INT__i_d_k_s = hrrwork + 780240;
186 double * const HRR_INT__i_d_l_s = hrrwork + 786288;
187 double * const HRR_INT__i_d_m_s = hrrwork + 793848;
188 double * const HRR_INT__i_d_n_s = hrrwork + 803088;
189 double * const HRR_INT__i_d_o_s = hrrwork + 814176;
190 double * const HRR_INT__k_p_k_s = hrrwork + 827280;
191 double * const HRR_INT__k_p_l_s = hrrwork + 831168;
192 double * const HRR_INT__k_p_m_s = hrrwork + 836028;
193 double * const HRR_INT__k_p_n_s = hrrwork + 841968;
194 double * const HRR_INT__k_p_o_s = hrrwork + 849096;
195
196
197 // Create constants
198 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
199 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
200 const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
201 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
202 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
203 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
204 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
205 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
206 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
207 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
208 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
209 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
210
211
212 ////////////////////////////////////////
213 // Loop over shells and primitives
214 ////////////////////////////////////////
215
216 real_abcd = 0;
217 istart = 0;
218 for(ab = 0; ab < P.nshell12_clip; ++ab)
219 {
220 const int iend = istart + P.nprim12[ab];
221
222 cd = 0;
223 jstart = 0;
224
225 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
226 {
227 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
228 int jend = jstart;
229 for(i = 0; i < nshellbatch; i++)
230 jend += Q.nprim12[cd+i];
231
232 // Clear the beginning of the workspace (where we are accumulating integrals)
233 memset(work, 0, SIMINT_NSHELL_SIMD * 40600 * sizeof(double));
234 abcd = 0;
235
236
237 for(i = istart; i < iend; ++i)
238 {
239 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
240
241 if(check_screen)
242 {
243 // Skip this whole thing if always insignificant
244 if((P.screen[i] * Q.screen_max) < screen_tol)
245 continue;
246 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
247 }
248
249 icd = 0;
250 iprimcd = 0;
251 nprim_icd = Q.nprim12[cd];
252 double * restrict PRIM_PTR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
253 double * restrict PRIM_PTR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
254 double * restrict PRIM_PTR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
255 double * restrict PRIM_PTR_INT__g_s_n_s = INT__g_s_n_s + abcd * 990;
256 double * restrict PRIM_PTR_INT__g_s_o_s = INT__g_s_o_s + abcd * 1170;
257 double * restrict PRIM_PTR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
258 double * restrict PRIM_PTR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
259 double * restrict PRIM_PTR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
260 double * restrict PRIM_PTR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
261 double * restrict PRIM_PTR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
262 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
263 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
264 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
265 double * restrict PRIM_PTR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
266 double * restrict PRIM_PTR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
267 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
268 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
269 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
270 double * restrict PRIM_PTR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
271 double * restrict PRIM_PTR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
272 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
273 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
274 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
275 double * restrict PRIM_PTR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
276 double * restrict PRIM_PTR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
277
278
279
280 // Load these one per loop over i
281 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
282 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
283 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
284
285 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
286
287 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
288 {
289 // calculate the shell offsets
290 // these are the offset from the shell pointed to by cd
291 // for each element
292 int shelloffsets[SIMINT_SIMD_LEN] = {0};
293 int lastoffset = 0;
294 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
295
296 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
297 {
298 // Handle if the first element of the vector is a new shell
299 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
300 {
301 nprim_icd += Q.nprim12[cd + (++icd)];
302 PRIM_PTR_INT__g_s_k_s += 540;
303 PRIM_PTR_INT__g_s_l_s += 675;
304 PRIM_PTR_INT__g_s_m_s += 825;
305 PRIM_PTR_INT__g_s_n_s += 990;
306 PRIM_PTR_INT__g_s_o_s += 1170;
307 PRIM_PTR_INT__h_s_k_s += 756;
308 PRIM_PTR_INT__h_s_l_s += 945;
309 PRIM_PTR_INT__h_s_m_s += 1155;
310 PRIM_PTR_INT__h_s_n_s += 1386;
311 PRIM_PTR_INT__h_s_o_s += 1638;
312 PRIM_PTR_INT__i_s_k_s += 1008;
313 PRIM_PTR_INT__i_s_l_s += 1260;
314 PRIM_PTR_INT__i_s_m_s += 1540;
315 PRIM_PTR_INT__i_s_n_s += 1848;
316 PRIM_PTR_INT__i_s_o_s += 2184;
317 PRIM_PTR_INT__k_s_k_s += 1296;
318 PRIM_PTR_INT__k_s_l_s += 1620;
319 PRIM_PTR_INT__k_s_m_s += 1980;
320 PRIM_PTR_INT__k_s_n_s += 2376;
321 PRIM_PTR_INT__k_s_o_s += 2808;
322 PRIM_PTR_INT__l_s_k_s += 1620;
323 PRIM_PTR_INT__l_s_l_s += 2025;
324 PRIM_PTR_INT__l_s_m_s += 2475;
325 PRIM_PTR_INT__l_s_n_s += 2970;
326 PRIM_PTR_INT__l_s_o_s += 3510;
327 }
328 iprimcd++;
329 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
330 {
331 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
332 {
333 shelloffsets[n] = shelloffsets[n-1] + 1;
334 lastoffset++;
335 nprim_icd += Q.nprim12[cd + (++icd)];
336 }
337 else
338 shelloffsets[n] = shelloffsets[n-1];
339 iprimcd++;
340 }
341 }
342 else
343 iprimcd += SIMINT_SIMD_LEN;
344
345 // Do we have to compute this vector (or has it been screened out)?
346 // (not_screened != 0 means we have to do this vector)
347 if(check_screen)
348 {
349 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
350 if(vmax < screen_tol)
351 {
352 PRIM_PTR_INT__g_s_k_s += lastoffset*540;
353 PRIM_PTR_INT__g_s_l_s += lastoffset*675;
354 PRIM_PTR_INT__g_s_m_s += lastoffset*825;
355 PRIM_PTR_INT__g_s_n_s += lastoffset*990;
356 PRIM_PTR_INT__g_s_o_s += lastoffset*1170;
357 PRIM_PTR_INT__h_s_k_s += lastoffset*756;
358 PRIM_PTR_INT__h_s_l_s += lastoffset*945;
359 PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
360 PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
361 PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
362 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
363 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
364 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
365 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
366 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
367 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
368 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
369 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
370 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
371 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
372 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
373 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
374 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
375 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
376 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
377 continue;
378 }
379 }
380
381 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
382 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
383 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
384 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
385
386
387 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
388 SIMINT_DBLTYPE PQ[3];
389 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
390 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
391 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
392 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
393 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
394 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
395
396 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
397 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
398 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
399 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
400 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
401 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
402 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
403
404 // NOTE: Minus sign!
405 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
406 SIMINT_DBLTYPE aop_PQ[3];
407 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
408 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
409 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
410
411 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
412 SIMINT_DBLTYPE aoq_PQ[3];
413 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
414 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
415 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
416 // Put a minus sign here so we don't have to in RR routines
417 a_over_q = SIMINT_NEG(a_over_q);
418
419
420 //////////////////////////////////////////////
421 // Fjt function section
422 // Maximum v value: 19
423 //////////////////////////////////////////////
424 // The parameter to the Fjt function
425 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
426
427
428 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
429
430
431 boys_F_split(PRIM_INT__s_s_s_s, F_x, 19);
432 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
433 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
434 for(n = 0; n <= 19; n++)
435 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
436
437 //////////////////////////////////////////////
438 // Primitive integrals: Vertical recurrance
439 //////////////////////////////////////////////
440
441 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
442 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
443 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
444 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
445 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
446 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
447 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
448 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
449 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
450 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
451 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
452 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
453 const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
454 const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
455 const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
456 const SIMINT_DBLTYPE vrr_const_9_over_2q = SIMINT_MUL(const_9, one_over_2q);
457 const SIMINT_DBLTYPE vrr_const_10_over_2q = SIMINT_MUL(const_10, one_over_2q);
458 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
459 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
460 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
461 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
462 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
463 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
464 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
465 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
466 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
467 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
468 const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
469
470
471
472 // Forming PRIM_INT__s_s_p_s[19 * 3];
473 for(n = 0; n < 19; ++n) // loop over orders of auxiliary function
474 {
475
476 PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
477 PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]);
478
479 PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
480 PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_p_s[n * 3 + 1]);
481
482 PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
483 PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_p_s[n * 3 + 2]);
484
485 }
486
487
488
489 // Forming PRIM_INT__s_s_d_s[18 * 6];
490 for(n = 0; n < 18; ++n) // loop over orders of auxiliary function
491 {
492
493 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
494 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 0]);
495 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 0]);
496
497 PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
498 PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 1]);
499
500 PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
501 PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 2]);
502
503 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
504 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_d_s[n * 6 + 3]);
505 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 3]);
506
507 PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
508 PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_d_s[n * 6 + 4]);
509
510 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
511 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_d_s[n * 6 + 5]);
512 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 5]);
513
514 }
515
516
517
518 // Forming PRIM_INT__s_s_f_s[17 * 10];
519 for(n = 0; n < 17; ++n) // loop over orders of auxiliary function
520 {
521
522 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
523 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 0]);
524 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__s_s_f_s[n * 10 + 0]);
525
526 PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
527 PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 1]);
528
529 PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
530 PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 2]);
531
532 PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
533 PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 3]);
534
535 PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
536 PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__s_s_f_s[n * 10 + 4]);
537
538 PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
539 PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 5]);
540
541 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
542 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 6]);
543 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__s_s_f_s[n * 10 + 6]);
544
545 PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
546 PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 7]);
547
548 PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
549 PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 8]);
550
551 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
552 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 9]);
553 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__s_s_f_s[n * 10 + 9]);
554
555 }
556
557
558 VRR_K_s_s_g_s(
559 PRIM_INT__s_s_g_s,
560 PRIM_INT__s_s_f_s,
561 PRIM_INT__s_s_d_s,
562 Q_PA,
563 a_over_q,
564 aoq_PQ,
565 one_over_2q,
566 16);
567
568
569 VRR_K_s_s_h_s(
570 PRIM_INT__s_s_h_s,
571 PRIM_INT__s_s_g_s,
572 PRIM_INT__s_s_f_s,
573 Q_PA,
574 a_over_q,
575 aoq_PQ,
576 one_over_2q,
577 15);
578
579
580 ostei_general_vrr1_K(6, 14,
581 one_over_2q, a_over_q, aoq_PQ, Q_PA,
582 PRIM_INT__s_s_h_s, PRIM_INT__s_s_g_s, PRIM_INT__s_s_i_s);
583
584
585 ostei_general_vrr1_K(7, 13,
586 one_over_2q, a_over_q, aoq_PQ, Q_PA,
587 PRIM_INT__s_s_i_s, PRIM_INT__s_s_h_s, PRIM_INT__s_s_k_s);
588
589
590 ostei_general_vrr_I(1, 0, 7, 0, 8,
591 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
592 PRIM_INT__s_s_k_s, NULL, NULL, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_k_s);
593
594
595 ostei_general_vrr_I(1, 0, 6, 0, 8,
596 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
597 PRIM_INT__s_s_i_s, NULL, NULL, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_i_s);
598
599
600 ostei_general_vrr_I(2, 0, 7, 0, 7,
601 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
602 PRIM_INT__p_s_k_s, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_i_s, NULL, PRIM_INT__d_s_k_s);
603
604
605 ostei_general_vrr_I(1, 0, 5, 0, 8,
606 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
607 PRIM_INT__s_s_h_s, NULL, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
608
609
610 ostei_general_vrr_I(2, 0, 6, 0, 7,
611 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
612 PRIM_INT__p_s_i_s, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_h_s, NULL, PRIM_INT__d_s_i_s);
613
614
615 ostei_general_vrr_I(3, 0, 7, 0, 6,
616 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
617 PRIM_INT__d_s_k_s, PRIM_INT__p_s_k_s, NULL, PRIM_INT__d_s_i_s, NULL, PRIM_INT__f_s_k_s);
618
619
620 VRR_I_p_s_g_s(
621 PRIM_INT__p_s_g_s,
622 PRIM_INT__s_s_g_s,
623 PRIM_INT__s_s_f_s,
624 P_PA,
625 aop_PQ,
626 one_over_2pq,
627 8);
628
629
630 ostei_general_vrr_I(2, 0, 5, 0, 7,
631 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
632 PRIM_INT__p_s_h_s, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_g_s, NULL, PRIM_INT__d_s_h_s);
633
634
635 ostei_general_vrr_I(3, 0, 6, 0, 6,
636 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
637 PRIM_INT__d_s_i_s, PRIM_INT__p_s_i_s, NULL, PRIM_INT__d_s_h_s, NULL, PRIM_INT__f_s_i_s);
638
639
640 ostei_general_vrr_I(4, 0, 7, 0, 5,
641 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
642 PRIM_INT__f_s_k_s, PRIM_INT__d_s_k_s, NULL, PRIM_INT__f_s_i_s, NULL, PRIM_INT__g_s_k_s);
643
644
645 ostei_general_vrr1_K(8, 12,
646 one_over_2q, a_over_q, aoq_PQ, Q_PA,
647 PRIM_INT__s_s_k_s, PRIM_INT__s_s_i_s, PRIM_INT__s_s_l_s);
648
649
650 ostei_general_vrr_I(1, 0, 8, 0, 8,
651 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
652 PRIM_INT__s_s_l_s, NULL, NULL, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_l_s);
653
654
655 ostei_general_vrr_I(2, 0, 8, 0, 7,
656 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
657 PRIM_INT__p_s_l_s, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_k_s, NULL, PRIM_INT__d_s_l_s);
658
659
660 ostei_general_vrr_I(3, 0, 8, 0, 6,
661 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
662 PRIM_INT__d_s_l_s, PRIM_INT__p_s_l_s, NULL, PRIM_INT__d_s_k_s, NULL, PRIM_INT__f_s_l_s);
663
664
665 ostei_general_vrr_I(4, 0, 8, 0, 5,
666 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
667 PRIM_INT__f_s_l_s, PRIM_INT__d_s_l_s, NULL, PRIM_INT__f_s_k_s, NULL, PRIM_INT__g_s_l_s);
668
669
670 VRR_I_p_s_f_s(
671 PRIM_INT__p_s_f_s,
672 PRIM_INT__s_s_f_s,
673 PRIM_INT__s_s_d_s,
674 P_PA,
675 aop_PQ,
676 one_over_2pq,
677 8);
678
679
680 ostei_general_vrr_I(2, 0, 4, 0, 7,
681 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
682 PRIM_INT__p_s_g_s, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_g_s);
683
684
685 ostei_general_vrr_I(3, 0, 5, 0, 6,
686 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
687 PRIM_INT__d_s_h_s, PRIM_INT__p_s_h_s, NULL, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_h_s);
688
689
690 ostei_general_vrr_I(4, 0, 6, 0, 5,
691 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
692 PRIM_INT__f_s_i_s, PRIM_INT__d_s_i_s, NULL, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_i_s);
693
694
695 ostei_general_vrr_I(5, 0, 7, 0, 4,
696 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
697 PRIM_INT__g_s_k_s, PRIM_INT__f_s_k_s, NULL, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_k_s);
698
699
700 ostei_general_vrr1_K(9, 11,
701 one_over_2q, a_over_q, aoq_PQ, Q_PA,
702 PRIM_INT__s_s_l_s, PRIM_INT__s_s_k_s, PRIM_INT__s_s_m_s);
703
704
705 ostei_general_vrr_I(1, 0, 9, 0, 8,
706 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
707 PRIM_INT__s_s_m_s, NULL, NULL, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_m_s);
708
709
710 ostei_general_vrr_I(2, 0, 9, 0, 7,
711 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
712 PRIM_INT__p_s_m_s, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_l_s, NULL, PRIM_INT__d_s_m_s);
713
714
715 ostei_general_vrr_I(3, 0, 9, 0, 6,
716 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
717 PRIM_INT__d_s_m_s, PRIM_INT__p_s_m_s, NULL, PRIM_INT__d_s_l_s, NULL, PRIM_INT__f_s_m_s);
718
719
720 ostei_general_vrr_I(4, 0, 9, 0, 5,
721 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
722 PRIM_INT__f_s_m_s, PRIM_INT__d_s_m_s, NULL, PRIM_INT__f_s_l_s, NULL, PRIM_INT__g_s_m_s);
723
724
725 ostei_general_vrr_I(5, 0, 8, 0, 4,
726 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
727 PRIM_INT__g_s_l_s, PRIM_INT__f_s_l_s, NULL, PRIM_INT__g_s_k_s, NULL, PRIM_INT__h_s_l_s);
728
729
730
731 // Forming PRIM_INT__p_s_d_s[8 * 18];
732 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
733 {
734
735 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
736 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
737 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
738
739 PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 1]);
740 PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 1]);
741 PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_d_s[n * 18 + 1]);
742
743 PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 2]);
744 PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 2]);
745 PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_d_s[n * 18 + 2]);
746
747 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
748 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 3]);
749
750 PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 4]);
751 PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 4]);
752
753 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
754 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 5]);
755
756 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
757 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 6]);
758
759 PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 1]);
760 PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 7]);
761 PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_d_s[n * 18 + 7]);
762
763 PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 2]);
764 PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 8]);
765
766 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
767 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 9]);
768 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_d_s[n * 18 + 9]);
769
770 PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 4]);
771 PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 10]);
772 PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_d_s[n * 18 + 10]);
773
774 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
775 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 11]);
776
777 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
778 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 12]);
779
780 PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
781 PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 13]);
782
783 PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 2]);
784 PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 14]);
785 PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_d_s[n * 18 + 14]);
786
787 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
788 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 15]);
789
790 PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 4]);
791 PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 16]);
792 PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_d_s[n * 18 + 16]);
793
794 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
795 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 17]);
796 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_d_s[n * 18 + 17]);
797
798 }
799
800
801 VRR_I_d_s_f_s(
802 PRIM_INT__d_s_f_s,
803 PRIM_INT__p_s_f_s,
804 PRIM_INT__s_s_f_s,
805 PRIM_INT__p_s_d_s,
806 P_PA,
807 a_over_p,
808 aop_PQ,
809 one_over_2p,
810 one_over_2pq,
811 7);
812
813
814 ostei_general_vrr_I(3, 0, 4, 0, 6,
815 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
816 PRIM_INT__d_s_g_s, PRIM_INT__p_s_g_s, NULL, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_g_s);
817
818
819 ostei_general_vrr_I(4, 0, 5, 0, 5,
820 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
821 PRIM_INT__f_s_h_s, PRIM_INT__d_s_h_s, NULL, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_h_s);
822
823
824 ostei_general_vrr_I(5, 0, 6, 0, 4,
825 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
826 PRIM_INT__g_s_i_s, PRIM_INT__f_s_i_s, NULL, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_i_s);
827
828
829 ostei_general_vrr_I(6, 0, 7, 0, 3,
830 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
831 PRIM_INT__h_s_k_s, PRIM_INT__g_s_k_s, NULL, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_k_s);
832
833
834 ostei_general_vrr1_K(10, 10,
835 one_over_2q, a_over_q, aoq_PQ, Q_PA,
836 PRIM_INT__s_s_m_s, PRIM_INT__s_s_l_s, PRIM_INT__s_s_n_s);
837
838
839 ostei_general_vrr_I(1, 0, 10, 0, 8,
840 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
841 PRIM_INT__s_s_n_s, NULL, NULL, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_n_s);
842
843
844 ostei_general_vrr_I(2, 0, 10, 0, 7,
845 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
846 PRIM_INT__p_s_n_s, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_m_s, NULL, PRIM_INT__d_s_n_s);
847
848
849 ostei_general_vrr_I(3, 0, 10, 0, 6,
850 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
851 PRIM_INT__d_s_n_s, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_m_s, NULL, PRIM_INT__f_s_n_s);
852
853
854 ostei_general_vrr_I(4, 0, 10, 0, 5,
855 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
856 PRIM_INT__f_s_n_s, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_m_s, NULL, PRIM_INT__g_s_n_s);
857
858
859 ostei_general_vrr_I(5, 0, 9, 0, 4,
860 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
861 PRIM_INT__g_s_m_s, PRIM_INT__f_s_m_s, NULL, PRIM_INT__g_s_l_s, NULL, PRIM_INT__h_s_m_s);
862
863
864 ostei_general_vrr_I(6, 0, 8, 0, 3,
865 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
866 PRIM_INT__h_s_l_s, PRIM_INT__g_s_l_s, NULL, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_l_s);
867
868
869
870 // Forming PRIM_INT__p_s_p_s[8 * 9];
871 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
872 {
873
874 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
875 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 0]);
876 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_p_s[n * 9 + 0]);
877
878 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 1]);
879 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 1]);
880
881 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 2]);
882 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 2]);
883
884 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
885 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 3]);
886
887 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
888 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 4]);
889 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_p_s[n * 9 + 4]);
890
891 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 2]);
892 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 5]);
893
894 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
895 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 6]);
896
897 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
898 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 7]);
899
900 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
901 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 8]);
902 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_p_s[n * 9 + 8]);
903
904 }
905
906
907 VRR_I_d_s_d_s(
908 PRIM_INT__d_s_d_s,
909 PRIM_INT__p_s_d_s,
910 PRIM_INT__s_s_d_s,
911 PRIM_INT__p_s_p_s,
912 P_PA,
913 a_over_p,
914 aop_PQ,
915 one_over_2p,
916 one_over_2pq,
917 7);
918
919
920 ostei_general_vrr_I(3, 0, 3, 0, 6,
921 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
922 PRIM_INT__d_s_f_s, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_d_s, NULL, PRIM_INT__f_s_f_s);
923
924
925 ostei_general_vrr_I(4, 0, 4, 0, 5,
926 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
927 PRIM_INT__f_s_g_s, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_f_s, NULL, PRIM_INT__g_s_g_s);
928
929
930 ostei_general_vrr_I(5, 0, 5, 0, 4,
931 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
932 PRIM_INT__g_s_h_s, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_g_s, NULL, PRIM_INT__h_s_h_s);
933
934
935 ostei_general_vrr_I(6, 0, 6, 0, 3,
936 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
937 PRIM_INT__h_s_i_s, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_h_s, NULL, PRIM_INT__i_s_i_s);
938
939
940 ostei_general_vrr_I(7, 0, 7, 0, 2,
941 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
942 PRIM_INT__i_s_k_s, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_i_s, NULL, PRIM_INT__k_s_k_s);
943
944
945 ostei_general_vrr1_K(11, 9,
946 one_over_2q, a_over_q, aoq_PQ, Q_PA,
947 PRIM_INT__s_s_n_s, PRIM_INT__s_s_m_s, PRIM_INT__s_s_o_s);
948
949
950 ostei_general_vrr_I(1, 0, 11, 0, 8,
951 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
952 PRIM_INT__s_s_o_s, NULL, NULL, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_o_s);
953
954
955 ostei_general_vrr_I(2, 0, 11, 0, 7,
956 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
957 PRIM_INT__p_s_o_s, PRIM_INT__s_s_o_s, NULL, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_o_s);
958
959
960 ostei_general_vrr_I(3, 0, 11, 0, 6,
961 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
962 PRIM_INT__d_s_o_s, PRIM_INT__p_s_o_s, NULL, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_o_s);
963
964
965 ostei_general_vrr_I(4, 0, 11, 0, 5,
966 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
967 PRIM_INT__f_s_o_s, PRIM_INT__d_s_o_s, NULL, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_o_s);
968
969
970 ostei_general_vrr_I(5, 0, 10, 0, 4,
971 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
972 PRIM_INT__g_s_n_s, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_m_s, NULL, PRIM_INT__h_s_n_s);
973
974
975 ostei_general_vrr_I(6, 0, 9, 0, 3,
976 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
977 PRIM_INT__h_s_m_s, PRIM_INT__g_s_m_s, NULL, PRIM_INT__h_s_l_s, NULL, PRIM_INT__i_s_m_s);
978
979
980 ostei_general_vrr_I(7, 0, 8, 0, 2,
981 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
982 PRIM_INT__i_s_l_s, PRIM_INT__h_s_l_s, NULL, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_l_s);
983
984
985
986 // Forming PRIM_INT__p_s_s_s[8 * 3];
987 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
988 {
989
990 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
991 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]);
992
993 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
994 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_s_s[n * 3 + 1]);
995
996 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
997 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__p_s_s_s[n * 3 + 2]);
998
999 }
1000
1001
1002
1003 // Forming PRIM_INT__d_s_p_s[7 * 18];
1004 for(n = 0; n < 7; ++n) // loop over orders of auxiliary function
1005 {
1006
1007 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
1008 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
1009 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 0]);
1010 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
1011
1012 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 1]);
1013 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 1], PRIM_INT__d_s_p_s[n * 18 + 1]);
1014 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 1]);
1015
1016 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 2]);
1017 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 2], PRIM_INT__d_s_p_s[n * 18 + 2]);
1018 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 2]);
1019
1020 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 3]);
1021 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 3], PRIM_INT__d_s_p_s[n * 18 + 9]);
1022 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 9]);
1023
1024 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
1025 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 4], PRIM_INT__d_s_p_s[n * 18 + 10]);
1026 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 10]);
1027 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_p_s[n * 18 + 10]);
1028
1029 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 5]);
1030 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 5], PRIM_INT__d_s_p_s[n * 18 + 11]);
1031 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 11]);
1032
1033 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 6]);
1034 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 6], PRIM_INT__d_s_p_s[n * 18 + 15]);
1035 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 15]);
1036
1037 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 7]);
1038 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 7], PRIM_INT__d_s_p_s[n * 18 + 16]);
1039 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 16]);
1040
1041 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
1042 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 8], PRIM_INT__d_s_p_s[n * 18 + 17]);
1043 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 17]);
1044 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_p_s[n * 18 + 17]);
1045
1046 }
1047
1048
1049 VRR_I_f_s_d_s(
1050 PRIM_INT__f_s_d_s,
1051 PRIM_INT__d_s_d_s,
1052 PRIM_INT__p_s_d_s,
1053 PRIM_INT__d_s_p_s,
1054 P_PA,
1055 a_over_p,
1056 aop_PQ,
1057 one_over_2p,
1058 one_over_2pq,
1059 6);
1060
1061
1062 ostei_general_vrr_I(4, 0, 3, 0, 5,
1063 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1064 PRIM_INT__f_s_f_s, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_d_s, NULL, PRIM_INT__g_s_f_s);
1065
1066
1067 ostei_general_vrr_I(5, 0, 4, 0, 4,
1068 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1069 PRIM_INT__g_s_g_s, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_f_s, NULL, PRIM_INT__h_s_g_s);
1070
1071
1072 ostei_general_vrr_I(6, 0, 5, 0, 3,
1073 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1074 PRIM_INT__h_s_h_s, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_g_s, NULL, PRIM_INT__i_s_h_s);
1075
1076
1077 ostei_general_vrr_I(7, 0, 6, 0, 2,
1078 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1079 PRIM_INT__i_s_i_s, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_h_s, NULL, PRIM_INT__k_s_i_s);
1080
1081
1082 ostei_general_vrr_I(8, 0, 7, 0, 1,
1083 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1084 PRIM_INT__k_s_k_s, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_i_s, NULL, PRIM_INT__l_s_k_s);
1085
1086
1087 ostei_general_vrr_I(5, 0, 11, 0, 4,
1088 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1089 PRIM_INT__g_s_o_s, PRIM_INT__f_s_o_s, NULL, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_o_s);
1090
1091
1092 ostei_general_vrr_I(6, 0, 10, 0, 3,
1093 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1094 PRIM_INT__h_s_n_s, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_n_s);
1095
1096
1097 ostei_general_vrr_I(7, 0, 9, 0, 2,
1098 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1099 PRIM_INT__i_s_m_s, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_m_s);
1100
1101
1102 ostei_general_vrr_I(8, 0, 8, 0, 1,
1103 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1104 PRIM_INT__k_s_l_s, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_k_s, NULL, PRIM_INT__l_s_l_s);
1105
1106
1107 ostei_general_vrr_I(6, 0, 11, 0, 3,
1108 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1109 PRIM_INT__h_s_o_s, PRIM_INT__g_s_o_s, NULL, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_o_s);
1110
1111
1112 ostei_general_vrr_I(7, 0, 10, 0, 2,
1113 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1114 PRIM_INT__i_s_n_s, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_n_s);
1115
1116
1117 ostei_general_vrr_I(8, 0, 9, 0, 1,
1118 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1119 PRIM_INT__k_s_m_s, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_l_s, NULL, PRIM_INT__l_s_m_s);
1120
1121
1122 ostei_general_vrr_I(7, 0, 11, 0, 2,
1123 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1124 PRIM_INT__i_s_o_s, PRIM_INT__h_s_o_s, NULL, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_o_s);
1125
1126
1127 ostei_general_vrr_I(8, 0, 10, 0, 1,
1128 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1129 PRIM_INT__k_s_n_s, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_m_s, NULL, PRIM_INT__l_s_n_s);
1130
1131
1132 ostei_general_vrr_I(8, 0, 11, 0, 1,
1133 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1134 PRIM_INT__k_s_o_s, PRIM_INT__i_s_o_s, NULL, PRIM_INT__k_s_n_s, NULL, PRIM_INT__l_s_o_s);
1135
1136
1137
1138
1139 ////////////////////////////////////
1140 // Accumulate contracted integrals
1141 ////////////////////////////////////
1142 if(lastoffset == 0)
1143 {
1144 contract_all(540, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1145 contract_all(675, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1146 contract_all(825, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1147 contract_all(990, PRIM_INT__g_s_n_s, PRIM_PTR_INT__g_s_n_s);
1148 contract_all(1170, PRIM_INT__g_s_o_s, PRIM_PTR_INT__g_s_o_s);
1149 contract_all(756, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1150 contract_all(945, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1151 contract_all(1155, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1152 contract_all(1386, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1153 contract_all(1638, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1154 contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1155 contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1156 contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1157 contract_all(1848, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1158 contract_all(2184, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1159 contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1160 contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1161 contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1162 contract_all(2376, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1163 contract_all(2808, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1164 contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1165 contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1166 contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1167 contract_all(2970, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1168 contract_all(3510, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1169 }
1170 else
1171 {
1172 contract(540, shelloffsets, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1173 contract(675, shelloffsets, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1174 contract(825, shelloffsets, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1175 contract(990, shelloffsets, PRIM_INT__g_s_n_s, PRIM_PTR_INT__g_s_n_s);
1176 contract(1170, shelloffsets, PRIM_INT__g_s_o_s, PRIM_PTR_INT__g_s_o_s);
1177 contract(756, shelloffsets, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1178 contract(945, shelloffsets, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1179 contract(1155, shelloffsets, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1180 contract(1386, shelloffsets, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1181 contract(1638, shelloffsets, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1182 contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1183 contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1184 contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1185 contract(1848, shelloffsets, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1186 contract(2184, shelloffsets, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1187 contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1188 contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1189 contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1190 contract(2376, shelloffsets, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1191 contract(2808, shelloffsets, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1192 contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1193 contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1194 contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1195 contract(2970, shelloffsets, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1196 contract(3510, shelloffsets, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1197 PRIM_PTR_INT__g_s_k_s += lastoffset*540;
1198 PRIM_PTR_INT__g_s_l_s += lastoffset*675;
1199 PRIM_PTR_INT__g_s_m_s += lastoffset*825;
1200 PRIM_PTR_INT__g_s_n_s += lastoffset*990;
1201 PRIM_PTR_INT__g_s_o_s += lastoffset*1170;
1202 PRIM_PTR_INT__h_s_k_s += lastoffset*756;
1203 PRIM_PTR_INT__h_s_l_s += lastoffset*945;
1204 PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
1205 PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
1206 PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
1207 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1208 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1209 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1210 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
1211 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
1212 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1213 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1214 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1215 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
1216 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
1217 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1218 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1219 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1220 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
1221 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
1222 }
1223
1224 } // close loop over j
1225 } // close loop over i
1226
1227 //Advance to the next batch
1228 jstart = SIMINT_SIMD_ROUND(jend);
1229
1230 //////////////////////////////////////////////
1231 // Contracted integrals: Horizontal recurrance
1232 //////////////////////////////////////////////
1233
1234
1235 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1236
1237
1238 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1239 {
1240 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1241
1242 // set up HRR pointers
1243 double const * restrict HRR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
1244 double const * restrict HRR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
1245 double const * restrict HRR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
1246 double const * restrict HRR_INT__g_s_n_s = INT__g_s_n_s + abcd * 990;
1247 double const * restrict HRR_INT__g_s_o_s = INT__g_s_o_s + abcd * 1170;
1248 double const * restrict HRR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
1249 double const * restrict HRR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
1250 double const * restrict HRR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
1251 double const * restrict HRR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
1252 double const * restrict HRR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
1253 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1254 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1255 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1256 double const * restrict HRR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
1257 double const * restrict HRR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
1258 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1259 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1260 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1261 double const * restrict HRR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
1262 double const * restrict HRR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
1263 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1264 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1265 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1266 double const * restrict HRR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
1267 double const * restrict HRR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
1268 double * restrict HRR_INT__g_g_k_g = INT__g_g_k_g + real_abcd * 121500;
1269
1270 // form INT__g_p_k_s
1271 HRR_J_g_p(
1272 HRR_INT__g_p_k_s,
1273 HRR_INT__g_s_k_s,
1274 HRR_INT__h_s_k_s,
1275 hAB, 36);
1276
1277 // form INT__g_p_l_s
1278 HRR_J_g_p(
1279 HRR_INT__g_p_l_s,
1280 HRR_INT__g_s_l_s,
1281 HRR_INT__h_s_l_s,
1282 hAB, 45);
1283
1284 // form INT__g_p_m_s
1285 HRR_J_g_p(
1286 HRR_INT__g_p_m_s,
1287 HRR_INT__g_s_m_s,
1288 HRR_INT__h_s_m_s,
1289 hAB, 55);
1290
1291 // form INT__g_p_n_s
1292 HRR_J_g_p(
1293 HRR_INT__g_p_n_s,
1294 HRR_INT__g_s_n_s,
1295 HRR_INT__h_s_n_s,
1296 hAB, 66);
1297
1298 // form INT__g_p_o_s
1299 HRR_J_g_p(
1300 HRR_INT__g_p_o_s,
1301 HRR_INT__g_s_o_s,
1302 HRR_INT__h_s_o_s,
1303 hAB, 78);
1304
1305 // form INT__h_p_k_s
1306 ostei_general_hrr_J(5, 1, 7, 0, hAB, HRR_INT__i_s_k_s, HRR_INT__h_s_k_s, HRR_INT__h_p_k_s);
1307
1308 // form INT__h_p_l_s
1309 ostei_general_hrr_J(5, 1, 8, 0, hAB, HRR_INT__i_s_l_s, HRR_INT__h_s_l_s, HRR_INT__h_p_l_s);
1310
1311 // form INT__h_p_m_s
1312 ostei_general_hrr_J(5, 1, 9, 0, hAB, HRR_INT__i_s_m_s, HRR_INT__h_s_m_s, HRR_INT__h_p_m_s);
1313
1314 // form INT__h_p_n_s
1315 ostei_general_hrr_J(5, 1, 10, 0, hAB, HRR_INT__i_s_n_s, HRR_INT__h_s_n_s, HRR_INT__h_p_n_s);
1316
1317 // form INT__h_p_o_s
1318 ostei_general_hrr_J(5, 1, 11, 0, hAB, HRR_INT__i_s_o_s, HRR_INT__h_s_o_s, HRR_INT__h_p_o_s);
1319
1320 // form INT__i_p_k_s
1321 ostei_general_hrr_J(6, 1, 7, 0, hAB, HRR_INT__k_s_k_s, HRR_INT__i_s_k_s, HRR_INT__i_p_k_s);
1322
1323 // form INT__i_p_l_s
1324 ostei_general_hrr_J(6, 1, 8, 0, hAB, HRR_INT__k_s_l_s, HRR_INT__i_s_l_s, HRR_INT__i_p_l_s);
1325
1326 // form INT__i_p_m_s
1327 ostei_general_hrr_J(6, 1, 9, 0, hAB, HRR_INT__k_s_m_s, HRR_INT__i_s_m_s, HRR_INT__i_p_m_s);
1328
1329 // form INT__i_p_n_s
1330 ostei_general_hrr_J(6, 1, 10, 0, hAB, HRR_INT__k_s_n_s, HRR_INT__i_s_n_s, HRR_INT__i_p_n_s);
1331
1332 // form INT__i_p_o_s
1333 ostei_general_hrr_J(6, 1, 11, 0, hAB, HRR_INT__k_s_o_s, HRR_INT__i_s_o_s, HRR_INT__i_p_o_s);
1334
1335 // form INT__k_p_k_s
1336 ostei_general_hrr_J(7, 1, 7, 0, hAB, HRR_INT__l_s_k_s, HRR_INT__k_s_k_s, HRR_INT__k_p_k_s);
1337
1338 // form INT__k_p_l_s
1339 ostei_general_hrr_J(7, 1, 8, 0, hAB, HRR_INT__l_s_l_s, HRR_INT__k_s_l_s, HRR_INT__k_p_l_s);
1340
1341 // form INT__k_p_m_s
1342 ostei_general_hrr_J(7, 1, 9, 0, hAB, HRR_INT__l_s_m_s, HRR_INT__k_s_m_s, HRR_INT__k_p_m_s);
1343
1344 // form INT__k_p_n_s
1345 ostei_general_hrr_J(7, 1, 10, 0, hAB, HRR_INT__l_s_n_s, HRR_INT__k_s_n_s, HRR_INT__k_p_n_s);
1346
1347 // form INT__k_p_o_s
1348 ostei_general_hrr_J(7, 1, 11, 0, hAB, HRR_INT__l_s_o_s, HRR_INT__k_s_o_s, HRR_INT__k_p_o_s);
1349
1350 // form INT__g_d_k_s
1351 ostei_general_hrr_J(4, 2, 7, 0, hAB, HRR_INT__h_p_k_s, HRR_INT__g_p_k_s, HRR_INT__g_d_k_s);
1352
1353 // form INT__g_d_l_s
1354 ostei_general_hrr_J(4, 2, 8, 0, hAB, HRR_INT__h_p_l_s, HRR_INT__g_p_l_s, HRR_INT__g_d_l_s);
1355
1356 // form INT__g_d_m_s
1357 ostei_general_hrr_J(4, 2, 9, 0, hAB, HRR_INT__h_p_m_s, HRR_INT__g_p_m_s, HRR_INT__g_d_m_s);
1358
1359 // form INT__g_d_n_s
1360 ostei_general_hrr_J(4, 2, 10, 0, hAB, HRR_INT__h_p_n_s, HRR_INT__g_p_n_s, HRR_INT__g_d_n_s);
1361
1362 // form INT__g_d_o_s
1363 ostei_general_hrr_J(4, 2, 11, 0, hAB, HRR_INT__h_p_o_s, HRR_INT__g_p_o_s, HRR_INT__g_d_o_s);
1364
1365 // form INT__h_d_k_s
1366 ostei_general_hrr_J(5, 2, 7, 0, hAB, HRR_INT__i_p_k_s, HRR_INT__h_p_k_s, HRR_INT__h_d_k_s);
1367
1368 // form INT__h_d_l_s
1369 ostei_general_hrr_J(5, 2, 8, 0, hAB, HRR_INT__i_p_l_s, HRR_INT__h_p_l_s, HRR_INT__h_d_l_s);
1370
1371 // form INT__h_d_m_s
1372 ostei_general_hrr_J(5, 2, 9, 0, hAB, HRR_INT__i_p_m_s, HRR_INT__h_p_m_s, HRR_INT__h_d_m_s);
1373
1374 // form INT__h_d_n_s
1375 ostei_general_hrr_J(5, 2, 10, 0, hAB, HRR_INT__i_p_n_s, HRR_INT__h_p_n_s, HRR_INT__h_d_n_s);
1376
1377 // form INT__h_d_o_s
1378 ostei_general_hrr_J(5, 2, 11, 0, hAB, HRR_INT__i_p_o_s, HRR_INT__h_p_o_s, HRR_INT__h_d_o_s);
1379
1380 // form INT__i_d_k_s
1381 ostei_general_hrr_J(6, 2, 7, 0, hAB, HRR_INT__k_p_k_s, HRR_INT__i_p_k_s, HRR_INT__i_d_k_s);
1382
1383 // form INT__i_d_l_s
1384 ostei_general_hrr_J(6, 2, 8, 0, hAB, HRR_INT__k_p_l_s, HRR_INT__i_p_l_s, HRR_INT__i_d_l_s);
1385
1386 // form INT__i_d_m_s
1387 ostei_general_hrr_J(6, 2, 9, 0, hAB, HRR_INT__k_p_m_s, HRR_INT__i_p_m_s, HRR_INT__i_d_m_s);
1388
1389 // form INT__i_d_n_s
1390 ostei_general_hrr_J(6, 2, 10, 0, hAB, HRR_INT__k_p_n_s, HRR_INT__i_p_n_s, HRR_INT__i_d_n_s);
1391
1392 // form INT__i_d_o_s
1393 ostei_general_hrr_J(6, 2, 11, 0, hAB, HRR_INT__k_p_o_s, HRR_INT__i_p_o_s, HRR_INT__i_d_o_s);
1394
1395 // form INT__g_f_k_s
1396 ostei_general_hrr_J(4, 3, 7, 0, hAB, HRR_INT__h_d_k_s, HRR_INT__g_d_k_s, HRR_INT__g_f_k_s);
1397
1398 // form INT__g_f_l_s
1399 ostei_general_hrr_J(4, 3, 8, 0, hAB, HRR_INT__h_d_l_s, HRR_INT__g_d_l_s, HRR_INT__g_f_l_s);
1400
1401 // form INT__g_f_m_s
1402 ostei_general_hrr_J(4, 3, 9, 0, hAB, HRR_INT__h_d_m_s, HRR_INT__g_d_m_s, HRR_INT__g_f_m_s);
1403
1404 // form INT__g_f_n_s
1405 ostei_general_hrr_J(4, 3, 10, 0, hAB, HRR_INT__h_d_n_s, HRR_INT__g_d_n_s, HRR_INT__g_f_n_s);
1406
1407 // form INT__g_f_o_s
1408 ostei_general_hrr_J(4, 3, 11, 0, hAB, HRR_INT__h_d_o_s, HRR_INT__g_d_o_s, HRR_INT__g_f_o_s);
1409
1410 // form INT__h_f_k_s
1411 ostei_general_hrr_J(5, 3, 7, 0, hAB, HRR_INT__i_d_k_s, HRR_INT__h_d_k_s, HRR_INT__h_f_k_s);
1412
1413 // form INT__h_f_l_s
1414 ostei_general_hrr_J(5, 3, 8, 0, hAB, HRR_INT__i_d_l_s, HRR_INT__h_d_l_s, HRR_INT__h_f_l_s);
1415
1416 // form INT__h_f_m_s
1417 ostei_general_hrr_J(5, 3, 9, 0, hAB, HRR_INT__i_d_m_s, HRR_INT__h_d_m_s, HRR_INT__h_f_m_s);
1418
1419 // form INT__h_f_n_s
1420 ostei_general_hrr_J(5, 3, 10, 0, hAB, HRR_INT__i_d_n_s, HRR_INT__h_d_n_s, HRR_INT__h_f_n_s);
1421
1422 // form INT__h_f_o_s
1423 ostei_general_hrr_J(5, 3, 11, 0, hAB, HRR_INT__i_d_o_s, HRR_INT__h_d_o_s, HRR_INT__h_f_o_s);
1424
1425 // form INT__g_g_k_s
1426 ostei_general_hrr_J(4, 4, 7, 0, hAB, HRR_INT__h_f_k_s, HRR_INT__g_f_k_s, HRR_INT__g_g_k_s);
1427
1428 // form INT__g_g_l_s
1429 ostei_general_hrr_J(4, 4, 8, 0, hAB, HRR_INT__h_f_l_s, HRR_INT__g_f_l_s, HRR_INT__g_g_l_s);
1430
1431 // form INT__g_g_m_s
1432 ostei_general_hrr_J(4, 4, 9, 0, hAB, HRR_INT__h_f_m_s, HRR_INT__g_f_m_s, HRR_INT__g_g_m_s);
1433
1434 // form INT__g_g_n_s
1435 ostei_general_hrr_J(4, 4, 10, 0, hAB, HRR_INT__h_f_n_s, HRR_INT__g_f_n_s, HRR_INT__g_g_n_s);
1436
1437 // form INT__g_g_o_s
1438 ostei_general_hrr_J(4, 4, 11, 0, hAB, HRR_INT__h_f_o_s, HRR_INT__g_f_o_s, HRR_INT__g_g_o_s);
1439
1440 // form INT__g_g_k_p
1441 ostei_general_hrr_L(4, 4, 7, 1, hCD, HRR_INT__g_g_l_s, HRR_INT__g_g_k_s, HRR_INT__g_g_k_p);
1442
1443 // form INT__g_g_l_p
1444 ostei_general_hrr_L(4, 4, 8, 1, hCD, HRR_INT__g_g_m_s, HRR_INT__g_g_l_s, HRR_INT__g_g_l_p);
1445
1446 // form INT__g_g_m_p
1447 ostei_general_hrr_L(4, 4, 9, 1, hCD, HRR_INT__g_g_n_s, HRR_INT__g_g_m_s, HRR_INT__g_g_m_p);
1448
1449 // form INT__g_g_n_p
1450 ostei_general_hrr_L(4, 4, 10, 1, hCD, HRR_INT__g_g_o_s, HRR_INT__g_g_n_s, HRR_INT__g_g_n_p);
1451
1452 // form INT__g_g_k_d
1453 ostei_general_hrr_L(4, 4, 7, 2, hCD, HRR_INT__g_g_l_p, HRR_INT__g_g_k_p, HRR_INT__g_g_k_d);
1454
1455 // form INT__g_g_l_d
1456 ostei_general_hrr_L(4, 4, 8, 2, hCD, HRR_INT__g_g_m_p, HRR_INT__g_g_l_p, HRR_INT__g_g_l_d);
1457
1458 // form INT__g_g_m_d
1459 ostei_general_hrr_L(4, 4, 9, 2, hCD, HRR_INT__g_g_n_p, HRR_INT__g_g_m_p, HRR_INT__g_g_m_d);
1460
1461 // form INT__g_g_k_f
1462 ostei_general_hrr_L(4, 4, 7, 3, hCD, HRR_INT__g_g_l_d, HRR_INT__g_g_k_d, HRR_INT__g_g_k_f);
1463
1464 // form INT__g_g_l_f
1465 ostei_general_hrr_L(4, 4, 8, 3, hCD, HRR_INT__g_g_m_d, HRR_INT__g_g_l_d, HRR_INT__g_g_l_f);
1466
1467 // form INT__g_g_k_g
1468 ostei_general_hrr_L(4, 4, 7, 4, hCD, HRR_INT__g_g_l_f, HRR_INT__g_g_k_f, HRR_INT__g_g_k_g);
1469
1470
1471 } // close HRR loop
1472
1473
1474 } // close loop cdbatch
1475
1476 istart = iend;
1477 } // close loop over ab
1478
1479 return P.nshell12_clip * Q.nshell12_clip;
1480 }
1481
ostei_g_g_g_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_g_g_k)1482 int ostei_g_g_g_k(struct simint_multi_shellpair const P,
1483 struct simint_multi_shellpair const Q,
1484 double screen_tol,
1485 double * const restrict work,
1486 double * const restrict INT__g_g_g_k)
1487 {
1488 double Q_AB[3*Q.nshell12];
1489 struct simint_multi_shellpair Q_tmp = Q;
1490 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1491 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1492 Q_tmp.AB_x = Q_AB;
1493 Q_tmp.AB_y = Q_AB + Q.nshell12;
1494 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1495
1496 for(int i = 0; i < Q.nshell12; i++)
1497 {
1498 Q_tmp.AB_x[i] = -Q.AB_x[i];
1499 Q_tmp.AB_y[i] = -Q.AB_y[i];
1500 Q_tmp.AB_z[i] = -Q.AB_z[i];
1501 }
1502
1503 int ret = ostei_g_g_k_g(P, Q_tmp, screen_tol, work, INT__g_g_g_k);
1504 double buffer[121500] SIMINT_ALIGN_ARRAY_DBL;
1505
1506 for(int q = 0; q < ret; q++)
1507 {
1508 int idx = 0;
1509 for(int a = 0; a < 15; ++a)
1510 for(int b = 0; b < 15; ++b)
1511 for(int c = 0; c < 15; ++c)
1512 for(int d = 0; d < 36; ++d)
1513 buffer[idx++] = INT__g_g_g_k[q*121500+a*8100+b*540+d*15+c];
1514
1515 memcpy(INT__g_g_g_k+q*121500, buffer, 121500*sizeof(double));
1516 }
1517
1518 return ret;
1519 }
1520
1521