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_k_k_h_p(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__k_k_h_p)8 int ostei_k_k_h_p(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__k_k_h_p)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__k_k_h_p);
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__k_s_h_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__k_s_i_s = work + (SIMINT_NSHELL_SIMD * 756);
31 double * const INT__l_s_h_s = work + (SIMINT_NSHELL_SIMD * 1764);
32 double * const INT__l_s_i_s = work + (SIMINT_NSHELL_SIMD * 2709);
33 double * const INT__m_s_h_s = work + (SIMINT_NSHELL_SIMD * 3969);
34 double * const INT__m_s_i_s = work + (SIMINT_NSHELL_SIMD * 5124);
35 double * const INT__n_s_h_s = work + (SIMINT_NSHELL_SIMD * 6664);
36 double * const INT__n_s_i_s = work + (SIMINT_NSHELL_SIMD * 8050);
37 double * const INT__o_s_h_s = work + (SIMINT_NSHELL_SIMD * 9898);
38 double * const INT__o_s_i_s = work + (SIMINT_NSHELL_SIMD * 11536);
39 double * const INT__q_s_h_s = work + (SIMINT_NSHELL_SIMD * 13720);
40 double * const INT__q_s_i_s = work + (SIMINT_NSHELL_SIMD * 15631);
41 double * const INT__r_s_h_s = work + (SIMINT_NSHELL_SIMD * 18179);
42 double * const INT__r_s_i_s = work + (SIMINT_NSHELL_SIMD * 20384);
43 double * const INT__t_s_h_s = work + (SIMINT_NSHELL_SIMD * 23324);
44 double * const INT__t_s_i_s = work + (SIMINT_NSHELL_SIMD * 25844);
45 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*29204);
46 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
47 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 21;
48 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 81;
49 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 195;
50 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 303;
51 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 483;
52 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 663;
53 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 963;
54 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 1218;
55 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 1488;
56 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 1938;
57 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 2538;
58 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 2874;
59 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 3252;
60 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 3882;
61 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 4722;
62 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 5667;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 6087;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 6591;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 7431;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 8551;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 9811;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 10987;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 11491;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 12139;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 13219;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 14659;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 16279;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 17791;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 18799;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 19384;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 20194;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 21544;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 23344;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 25369;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 27259;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 28519;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 29179;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 30169;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 31819;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 34019;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 36494;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 38804;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_s_s = primwork + 40344;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_p_s = primwork + 41070;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_d_s = primwork + 42258;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_f_s = primwork + 44238;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_g_s = primwork + 46878;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_h_s = primwork + 49848;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_i_s = primwork + 52620;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_s_s = primwork + 54468;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_p_s = primwork + 55248;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_d_s = primwork + 56652;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_f_s = primwork + 58992;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_g_s = primwork + 62112;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_h_s = primwork + 65622;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_i_s = primwork + 68898;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_s_s = primwork + 71082;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_p_s = primwork + 71901;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_d_s = primwork + 73539;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_f_s = primwork + 76269;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_g_s = primwork + 79909;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_h_s = primwork + 84004;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_i_s = primwork + 87826;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_s_s = primwork + 90374;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_p_s = primwork + 91214;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_d_s = primwork + 93104;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_f_s = primwork + 96254;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_g_s = primwork + 100454;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_h_s = primwork + 105179;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_i_s = primwork + 109589;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_s_s = primwork + 112529;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_p_s = primwork + 113369;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_d_s = primwork + 115529;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_f_s = primwork + 119129;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_g_s = primwork + 123929;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_h_s = primwork + 129329;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_i_s = primwork + 134369;
124 double * const hrrwork = (double *)(primwork + 137729);
125 double * const HRR_INT__k_p_h_s = hrrwork + 0;
126 double * const HRR_INT__k_p_i_s = hrrwork + 2268;
127 double * const HRR_INT__k_d_h_s = hrrwork + 5292;
128 double * const HRR_INT__k_d_i_s = hrrwork + 9828;
129 double * const HRR_INT__k_f_h_s = hrrwork + 15876;
130 double * const HRR_INT__k_f_i_s = hrrwork + 23436;
131 double * const HRR_INT__k_g_h_s = hrrwork + 33516;
132 double * const HRR_INT__k_g_i_s = hrrwork + 44856;
133 double * const HRR_INT__k_h_h_s = hrrwork + 59976;
134 double * const HRR_INT__k_h_i_s = hrrwork + 75852;
135 double * const HRR_INT__k_i_h_s = hrrwork + 97020;
136 double * const HRR_INT__k_i_i_s = hrrwork + 118188;
137 double * const HRR_INT__k_k_h_s = hrrwork + 146412;
138 double * const HRR_INT__k_k_i_s = hrrwork + 173628;
139 double * const HRR_INT__l_p_h_s = hrrwork + 209916;
140 double * const HRR_INT__l_p_i_s = hrrwork + 212751;
141 double * const HRR_INT__l_d_h_s = hrrwork + 216531;
142 double * const HRR_INT__l_d_i_s = hrrwork + 222201;
143 double * const HRR_INT__l_f_h_s = hrrwork + 229761;
144 double * const HRR_INT__l_f_i_s = hrrwork + 239211;
145 double * const HRR_INT__l_g_h_s = hrrwork + 251811;
146 double * const HRR_INT__l_g_i_s = hrrwork + 265986;
147 double * const HRR_INT__l_h_h_s = hrrwork + 284886;
148 double * const HRR_INT__l_h_i_s = hrrwork + 304731;
149 double * const HRR_INT__l_i_h_s = hrrwork + 331191;
150 double * const HRR_INT__l_i_i_s = hrrwork + 357651;
151 double * const HRR_INT__m_p_h_s = hrrwork + 392931;
152 double * const HRR_INT__m_p_i_s = hrrwork + 396396;
153 double * const HRR_INT__m_d_h_s = hrrwork + 401016;
154 double * const HRR_INT__m_d_i_s = hrrwork + 407946;
155 double * const HRR_INT__m_f_h_s = hrrwork + 417186;
156 double * const HRR_INT__m_f_i_s = hrrwork + 428736;
157 double * const HRR_INT__m_g_h_s = hrrwork + 444136;
158 double * const HRR_INT__m_g_i_s = hrrwork + 461461;
159 double * const HRR_INT__m_h_h_s = hrrwork + 484561;
160 double * const HRR_INT__m_h_i_s = hrrwork + 508816;
161 double * const HRR_INT__n_p_h_s = hrrwork + 541156;
162 double * const HRR_INT__n_p_i_s = hrrwork + 545314;
163 double * const HRR_INT__n_d_h_s = hrrwork + 550858;
164 double * const HRR_INT__n_d_i_s = hrrwork + 559174;
165 double * const HRR_INT__n_f_h_s = hrrwork + 570262;
166 double * const HRR_INT__n_f_i_s = hrrwork + 584122;
167 double * const HRR_INT__n_g_h_s = hrrwork + 602602;
168 double * const HRR_INT__n_g_i_s = hrrwork + 623392;
169 double * const HRR_INT__o_p_h_s = hrrwork + 651112;
170 double * const HRR_INT__o_p_i_s = hrrwork + 656026;
171 double * const HRR_INT__o_d_h_s = hrrwork + 662578;
172 double * const HRR_INT__o_d_i_s = hrrwork + 672406;
173 double * const HRR_INT__o_f_h_s = hrrwork + 685510;
174 double * const HRR_INT__o_f_i_s = hrrwork + 701890;
175 double * const HRR_INT__q_p_h_s = hrrwork + 723730;
176 double * const HRR_INT__q_p_i_s = hrrwork + 729463;
177 double * const HRR_INT__q_d_h_s = hrrwork + 737107;
178 double * const HRR_INT__q_d_i_s = hrrwork + 748573;
179 double * const HRR_INT__r_p_h_s = hrrwork + 763861;
180 double * const HRR_INT__r_p_i_s = hrrwork + 770476;
181
182
183 // Create constants
184 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
185 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
186 const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
187 const SIMINT_DBLTYPE const_12 = SIMINT_DBLSET1(12);
188 const SIMINT_DBLTYPE const_13 = SIMINT_DBLSET1(13);
189 const SIMINT_DBLTYPE const_14 = SIMINT_DBLSET1(14);
190 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
191 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
192 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
193 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
194 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
195 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
196 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
197 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
198 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
199
200
201 ////////////////////////////////////////
202 // Loop over shells and primitives
203 ////////////////////////////////////////
204
205 real_abcd = 0;
206 istart = 0;
207 for(ab = 0; ab < P.nshell12_clip; ++ab)
208 {
209 const int iend = istart + P.nprim12[ab];
210
211 cd = 0;
212 jstart = 0;
213
214 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
215 {
216 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
217 int jend = jstart;
218 for(i = 0; i < nshellbatch; i++)
219 jend += Q.nprim12[cd+i];
220
221 // Clear the beginning of the workspace (where we are accumulating integrals)
222 memset(work, 0, SIMINT_NSHELL_SIMD * 29204 * sizeof(double));
223 abcd = 0;
224
225
226 for(i = istart; i < iend; ++i)
227 {
228 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
229
230 if(check_screen)
231 {
232 // Skip this whole thing if always insignificant
233 if((P.screen[i] * Q.screen_max) < screen_tol)
234 continue;
235 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
236 }
237
238 icd = 0;
239 iprimcd = 0;
240 nprim_icd = Q.nprim12[cd];
241 double * restrict PRIM_PTR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
242 double * restrict PRIM_PTR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
243 double * restrict PRIM_PTR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
244 double * restrict PRIM_PTR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
245 double * restrict PRIM_PTR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
246 double * restrict PRIM_PTR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
247 double * restrict PRIM_PTR_INT__n_s_h_s = INT__n_s_h_s + abcd * 1386;
248 double * restrict PRIM_PTR_INT__n_s_i_s = INT__n_s_i_s + abcd * 1848;
249 double * restrict PRIM_PTR_INT__o_s_h_s = INT__o_s_h_s + abcd * 1638;
250 double * restrict PRIM_PTR_INT__o_s_i_s = INT__o_s_i_s + abcd * 2184;
251 double * restrict PRIM_PTR_INT__q_s_h_s = INT__q_s_h_s + abcd * 1911;
252 double * restrict PRIM_PTR_INT__q_s_i_s = INT__q_s_i_s + abcd * 2548;
253 double * restrict PRIM_PTR_INT__r_s_h_s = INT__r_s_h_s + abcd * 2205;
254 double * restrict PRIM_PTR_INT__r_s_i_s = INT__r_s_i_s + abcd * 2940;
255 double * restrict PRIM_PTR_INT__t_s_h_s = INT__t_s_h_s + abcd * 2520;
256 double * restrict PRIM_PTR_INT__t_s_i_s = INT__t_s_i_s + abcd * 3360;
257
258
259
260 // Load these one per loop over i
261 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
262 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
263 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
264
265 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
266
267 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
268 {
269 // calculate the shell offsets
270 // these are the offset from the shell pointed to by cd
271 // for each element
272 int shelloffsets[SIMINT_SIMD_LEN] = {0};
273 int lastoffset = 0;
274 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
275
276 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
277 {
278 // Handle if the first element of the vector is a new shell
279 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
280 {
281 nprim_icd += Q.nprim12[cd + (++icd)];
282 PRIM_PTR_INT__k_s_h_s += 756;
283 PRIM_PTR_INT__k_s_i_s += 1008;
284 PRIM_PTR_INT__l_s_h_s += 945;
285 PRIM_PTR_INT__l_s_i_s += 1260;
286 PRIM_PTR_INT__m_s_h_s += 1155;
287 PRIM_PTR_INT__m_s_i_s += 1540;
288 PRIM_PTR_INT__n_s_h_s += 1386;
289 PRIM_PTR_INT__n_s_i_s += 1848;
290 PRIM_PTR_INT__o_s_h_s += 1638;
291 PRIM_PTR_INT__o_s_i_s += 2184;
292 PRIM_PTR_INT__q_s_h_s += 1911;
293 PRIM_PTR_INT__q_s_i_s += 2548;
294 PRIM_PTR_INT__r_s_h_s += 2205;
295 PRIM_PTR_INT__r_s_i_s += 2940;
296 PRIM_PTR_INT__t_s_h_s += 2520;
297 PRIM_PTR_INT__t_s_i_s += 3360;
298 }
299 iprimcd++;
300 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
301 {
302 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
303 {
304 shelloffsets[n] = shelloffsets[n-1] + 1;
305 lastoffset++;
306 nprim_icd += Q.nprim12[cd + (++icd)];
307 }
308 else
309 shelloffsets[n] = shelloffsets[n-1];
310 iprimcd++;
311 }
312 }
313 else
314 iprimcd += SIMINT_SIMD_LEN;
315
316 // Do we have to compute this vector (or has it been screened out)?
317 // (not_screened != 0 means we have to do this vector)
318 if(check_screen)
319 {
320 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
321 if(vmax < screen_tol)
322 {
323 PRIM_PTR_INT__k_s_h_s += lastoffset*756;
324 PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
325 PRIM_PTR_INT__l_s_h_s += lastoffset*945;
326 PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
327 PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
328 PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
329 PRIM_PTR_INT__n_s_h_s += lastoffset*1386;
330 PRIM_PTR_INT__n_s_i_s += lastoffset*1848;
331 PRIM_PTR_INT__o_s_h_s += lastoffset*1638;
332 PRIM_PTR_INT__o_s_i_s += lastoffset*2184;
333 PRIM_PTR_INT__q_s_h_s += lastoffset*1911;
334 PRIM_PTR_INT__q_s_i_s += lastoffset*2548;
335 PRIM_PTR_INT__r_s_h_s += lastoffset*2205;
336 PRIM_PTR_INT__r_s_i_s += lastoffset*2940;
337 PRIM_PTR_INT__t_s_h_s += lastoffset*2520;
338 PRIM_PTR_INT__t_s_i_s += lastoffset*3360;
339 continue;
340 }
341 }
342
343 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
344 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
345 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
346 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
347
348
349 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
350 SIMINT_DBLTYPE PQ[3];
351 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
352 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
353 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
354 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
355 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
356 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
357
358 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
359 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
360 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
361 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
362 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
363 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
364 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
365
366 // NOTE: Minus sign!
367 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
368 SIMINT_DBLTYPE aop_PQ[3];
369 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
370 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
371 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
372
373 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
374 SIMINT_DBLTYPE aoq_PQ[3];
375 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
376 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
377 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
378 // Put a minus sign here so we don't have to in RR routines
379 a_over_q = SIMINT_NEG(a_over_q);
380
381
382 //////////////////////////////////////////////
383 // Fjt function section
384 // Maximum v value: 20
385 //////////////////////////////////////////////
386 // The parameter to the Fjt function
387 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
388
389
390 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
391
392
393 boys_F_split(PRIM_INT__s_s_s_s, F_x, 20);
394 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
395 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
396 for(n = 0; n <= 20; n++)
397 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
398
399 //////////////////////////////////////////////
400 // Primitive integrals: Vertical recurrance
401 //////////////////////////////////////////////
402
403 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
404 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
405 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
406 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
407 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
408 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
409 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
410 const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
411 const SIMINT_DBLTYPE vrr_const_9_over_2p = SIMINT_MUL(const_9, one_over_2p);
412 const SIMINT_DBLTYPE vrr_const_10_over_2p = SIMINT_MUL(const_10, one_over_2p);
413 const SIMINT_DBLTYPE vrr_const_11_over_2p = SIMINT_MUL(const_11, one_over_2p);
414 const SIMINT_DBLTYPE vrr_const_12_over_2p = SIMINT_MUL(const_12, one_over_2p);
415 const SIMINT_DBLTYPE vrr_const_13_over_2p = SIMINT_MUL(const_13, one_over_2p);
416 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
417 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
418 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
419 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
420 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
421 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
422 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
423 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
424 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
425 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
426 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
427 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
428 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
429 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
430 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
431 const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
432 const SIMINT_DBLTYPE vrr_const_12_over_2pq = SIMINT_MUL(const_12, one_over_2pq);
433 const SIMINT_DBLTYPE vrr_const_13_over_2pq = SIMINT_MUL(const_13, one_over_2pq);
434 const SIMINT_DBLTYPE vrr_const_14_over_2pq = SIMINT_MUL(const_14, one_over_2pq);
435
436
437
438 // Forming PRIM_INT__p_s_s_s[20 * 3];
439 for(n = 0; n < 20; ++n) // loop over orders of auxiliary function
440 {
441
442 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
443 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]);
444
445 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
446 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]);
447
448 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
449 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]);
450
451 }
452
453
454
455 // Forming PRIM_INT__d_s_s_s[19 * 6];
456 for(n = 0; n < 19; ++n) // loop over orders of auxiliary function
457 {
458
459 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
460 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 0]);
461 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 0]);
462
463 PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
464 PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 1]);
465
466 PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
467 PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 2]);
468
469 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
470 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_s_s[n * 6 + 3]);
471 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 3]);
472
473 PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
474 PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_s_s[n * 6 + 4]);
475
476 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
477 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_s_s[n * 6 + 5]);
478 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 5]);
479
480 }
481
482
483
484 // Forming PRIM_INT__f_s_s_s[18 * 10];
485 for(n = 0; n < 18; ++n) // loop over orders of auxiliary function
486 {
487
488 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
489 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 0]);
490 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__f_s_s_s[n * 10 + 0]);
491
492 PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
493 PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 1]);
494
495 PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
496 PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 2]);
497
498 PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
499 PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 3]);
500
501 PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
502 PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__f_s_s_s[n * 10 + 4]);
503
504 PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
505 PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 5]);
506
507 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
508 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 6]);
509 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__f_s_s_s[n * 10 + 6]);
510
511 PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
512 PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 7]);
513
514 PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
515 PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 8]);
516
517 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
518 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 9]);
519 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__f_s_s_s[n * 10 + 9]);
520
521 }
522
523
524 VRR_I_g_s_s_s(
525 PRIM_INT__g_s_s_s,
526 PRIM_INT__f_s_s_s,
527 PRIM_INT__d_s_s_s,
528 P_PA,
529 a_over_p,
530 aop_PQ,
531 one_over_2p,
532 17);
533
534
535 VRR_I_h_s_s_s(
536 PRIM_INT__h_s_s_s,
537 PRIM_INT__g_s_s_s,
538 PRIM_INT__f_s_s_s,
539 P_PA,
540 a_over_p,
541 aop_PQ,
542 one_over_2p,
543 16);
544
545
546 ostei_general_vrr1_I(6, 15,
547 one_over_2p, a_over_p, aop_PQ, P_PA,
548 PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
549
550
551 ostei_general_vrr1_I(7, 14,
552 one_over_2p, a_over_p, aop_PQ, P_PA,
553 PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
554
555
556 ostei_general_vrr_K(7, 0, 1, 0, 6,
557 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
558 PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
559
560
561 ostei_general_vrr_K(6, 0, 1, 0, 6,
562 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
563 PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
564
565
566 ostei_general_vrr_K(7, 0, 2, 0, 5,
567 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
568 PRIM_INT__k_s_p_s, PRIM_INT__k_s_s_s, NULL, PRIM_INT__i_s_p_s, NULL, PRIM_INT__k_s_d_s);
569
570
571 ostei_general_vrr_K(5, 0, 1, 0, 6,
572 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
573 PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
574
575
576 ostei_general_vrr_K(6, 0, 2, 0, 5,
577 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
578 PRIM_INT__i_s_p_s, PRIM_INT__i_s_s_s, NULL, PRIM_INT__h_s_p_s, NULL, PRIM_INT__i_s_d_s);
579
580
581 ostei_general_vrr_K(7, 0, 3, 0, 4,
582 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
583 PRIM_INT__k_s_d_s, PRIM_INT__k_s_p_s, NULL, PRIM_INT__i_s_d_s, NULL, PRIM_INT__k_s_f_s);
584
585
586 VRR_K_g_s_p_s(
587 PRIM_INT__g_s_p_s,
588 PRIM_INT__g_s_s_s,
589 PRIM_INT__f_s_s_s,
590 Q_PA,
591 aoq_PQ,
592 one_over_2pq,
593 6);
594
595
596 ostei_general_vrr_K(5, 0, 2, 0, 5,
597 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
598 PRIM_INT__h_s_p_s, PRIM_INT__h_s_s_s, NULL, PRIM_INT__g_s_p_s, NULL, PRIM_INT__h_s_d_s);
599
600
601 ostei_general_vrr_K(6, 0, 3, 0, 4,
602 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
603 PRIM_INT__i_s_d_s, PRIM_INT__i_s_p_s, NULL, PRIM_INT__h_s_d_s, NULL, PRIM_INT__i_s_f_s);
604
605
606 ostei_general_vrr_K(7, 0, 4, 0, 3,
607 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
608 PRIM_INT__k_s_f_s, PRIM_INT__k_s_d_s, NULL, PRIM_INT__i_s_f_s, NULL, PRIM_INT__k_s_g_s);
609
610
611 VRR_K_f_s_p_s(
612 PRIM_INT__f_s_p_s,
613 PRIM_INT__f_s_s_s,
614 PRIM_INT__d_s_s_s,
615 Q_PA,
616 aoq_PQ,
617 one_over_2pq,
618 6);
619
620
621 ostei_general_vrr_K(4, 0, 2, 0, 5,
622 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
623 PRIM_INT__g_s_p_s, PRIM_INT__g_s_s_s, NULL, PRIM_INT__f_s_p_s, NULL, PRIM_INT__g_s_d_s);
624
625
626 ostei_general_vrr_K(5, 0, 3, 0, 4,
627 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
628 PRIM_INT__h_s_d_s, PRIM_INT__h_s_p_s, NULL, PRIM_INT__g_s_d_s, NULL, PRIM_INT__h_s_f_s);
629
630
631 ostei_general_vrr_K(6, 0, 4, 0, 3,
632 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
633 PRIM_INT__i_s_f_s, PRIM_INT__i_s_d_s, NULL, PRIM_INT__h_s_f_s, NULL, PRIM_INT__i_s_g_s);
634
635
636 ostei_general_vrr_K(7, 0, 5, 0, 2,
637 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
638 PRIM_INT__k_s_g_s, PRIM_INT__k_s_f_s, NULL, PRIM_INT__i_s_g_s, NULL, PRIM_INT__k_s_h_s);
639
640
641
642 // Forming PRIM_INT__d_s_p_s[6 * 18];
643 for(n = 0; n < 6; ++n) // loop over orders of auxiliary function
644 {
645
646 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
647 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
648 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
649
650 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
651 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 1]);
652
653 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
654 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 2]);
655
656 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
657 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 3]);
658 PRIM_INT__d_s_p_s[n * 18 + 3] = 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 + 3]);
659
660 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
661 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 4]);
662 PRIM_INT__d_s_p_s[n * 18 + 4] = 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 + 4]);
663
664 PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
665 PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 5]);
666
667 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
668 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 6]);
669 PRIM_INT__d_s_p_s[n * 18 + 6] = 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 + 6]);
670
671 PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
672 PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 7]);
673
674 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
675 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 8]);
676 PRIM_INT__d_s_p_s[n * 18 + 8] = 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 + 8]);
677
678 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
679 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 9]);
680
681 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
682 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 10]);
683 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_p_s[n * 18 + 10]);
684
685 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
686 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 11]);
687
688 PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
689 PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 12]);
690
691 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
692 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 13]);
693 PRIM_INT__d_s_p_s[n * 18 + 13] = 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 + 13]);
694
695 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
696 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 14]);
697 PRIM_INT__d_s_p_s[n * 18 + 14] = 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 + 14]);
698
699 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
700 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 15]);
701
702 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
703 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 16]);
704
705 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
706 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 17]);
707 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_p_s[n * 18 + 17]);
708
709 }
710
711
712 VRR_K_f_s_d_s(
713 PRIM_INT__f_s_d_s,
714 PRIM_INT__f_s_p_s,
715 PRIM_INT__f_s_s_s,
716 PRIM_INT__d_s_p_s,
717 Q_PA,
718 a_over_q,
719 aoq_PQ,
720 one_over_2pq,
721 one_over_2q,
722 5);
723
724
725 ostei_general_vrr_K(4, 0, 3, 0, 4,
726 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
727 PRIM_INT__g_s_d_s, PRIM_INT__g_s_p_s, NULL, PRIM_INT__f_s_d_s, NULL, PRIM_INT__g_s_f_s);
728
729
730 ostei_general_vrr_K(5, 0, 4, 0, 3,
731 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
732 PRIM_INT__h_s_f_s, PRIM_INT__h_s_d_s, NULL, PRIM_INT__g_s_f_s, NULL, PRIM_INT__h_s_g_s);
733
734
735 ostei_general_vrr_K(6, 0, 5, 0, 2,
736 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
737 PRIM_INT__i_s_g_s, PRIM_INT__i_s_f_s, NULL, PRIM_INT__h_s_g_s, NULL, PRIM_INT__i_s_h_s);
738
739
740 ostei_general_vrr_K(7, 0, 6, 0, 1,
741 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
742 PRIM_INT__k_s_h_s, PRIM_INT__k_s_g_s, NULL, PRIM_INT__i_s_h_s, NULL, PRIM_INT__k_s_i_s);
743
744
745 ostei_general_vrr1_I(8, 13,
746 one_over_2p, a_over_p, aop_PQ, P_PA,
747 PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
748
749
750 ostei_general_vrr_K(8, 0, 1, 0, 6,
751 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
752 PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
753
754
755 ostei_general_vrr_K(8, 0, 2, 0, 5,
756 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
757 PRIM_INT__l_s_p_s, PRIM_INT__l_s_s_s, NULL, PRIM_INT__k_s_p_s, NULL, PRIM_INT__l_s_d_s);
758
759
760 ostei_general_vrr_K(8, 0, 3, 0, 4,
761 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
762 PRIM_INT__l_s_d_s, PRIM_INT__l_s_p_s, NULL, PRIM_INT__k_s_d_s, NULL, PRIM_INT__l_s_f_s);
763
764
765 ostei_general_vrr_K(8, 0, 4, 0, 3,
766 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
767 PRIM_INT__l_s_f_s, PRIM_INT__l_s_d_s, NULL, PRIM_INT__k_s_f_s, NULL, PRIM_INT__l_s_g_s);
768
769
770 ostei_general_vrr_K(8, 0, 5, 0, 2,
771 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
772 PRIM_INT__l_s_g_s, PRIM_INT__l_s_f_s, NULL, PRIM_INT__k_s_g_s, NULL, PRIM_INT__l_s_h_s);
773
774
775 ostei_general_vrr_K(8, 0, 6, 0, 1,
776 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
777 PRIM_INT__l_s_h_s, PRIM_INT__l_s_g_s, NULL, PRIM_INT__k_s_h_s, NULL, PRIM_INT__l_s_i_s);
778
779
780 ostei_general_vrr1_I(9, 12,
781 one_over_2p, a_over_p, aop_PQ, P_PA,
782 PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
783
784
785 ostei_general_vrr_K(9, 0, 1, 0, 6,
786 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
787 PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
788
789
790 ostei_general_vrr_K(9, 0, 2, 0, 5,
791 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
792 PRIM_INT__m_s_p_s, PRIM_INT__m_s_s_s, NULL, PRIM_INT__l_s_p_s, NULL, PRIM_INT__m_s_d_s);
793
794
795 ostei_general_vrr_K(9, 0, 3, 0, 4,
796 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
797 PRIM_INT__m_s_d_s, PRIM_INT__m_s_p_s, NULL, PRIM_INT__l_s_d_s, NULL, PRIM_INT__m_s_f_s);
798
799
800 ostei_general_vrr_K(9, 0, 4, 0, 3,
801 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
802 PRIM_INT__m_s_f_s, PRIM_INT__m_s_d_s, NULL, PRIM_INT__l_s_f_s, NULL, PRIM_INT__m_s_g_s);
803
804
805 ostei_general_vrr_K(9, 0, 5, 0, 2,
806 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
807 PRIM_INT__m_s_g_s, PRIM_INT__m_s_f_s, NULL, PRIM_INT__l_s_g_s, NULL, PRIM_INT__m_s_h_s);
808
809
810 ostei_general_vrr_K(9, 0, 6, 0, 1,
811 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
812 PRIM_INT__m_s_h_s, PRIM_INT__m_s_g_s, NULL, PRIM_INT__l_s_h_s, NULL, PRIM_INT__m_s_i_s);
813
814
815 ostei_general_vrr1_I(10, 11,
816 one_over_2p, a_over_p, aop_PQ, P_PA,
817 PRIM_INT__m_s_s_s, PRIM_INT__l_s_s_s, PRIM_INT__n_s_s_s);
818
819
820 ostei_general_vrr_K(10, 0, 1, 0, 6,
821 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
822 PRIM_INT__n_s_s_s, NULL, NULL, PRIM_INT__m_s_s_s, NULL, PRIM_INT__n_s_p_s);
823
824
825 ostei_general_vrr_K(10, 0, 2, 0, 5,
826 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
827 PRIM_INT__n_s_p_s, PRIM_INT__n_s_s_s, NULL, PRIM_INT__m_s_p_s, NULL, PRIM_INT__n_s_d_s);
828
829
830 ostei_general_vrr_K(10, 0, 3, 0, 4,
831 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
832 PRIM_INT__n_s_d_s, PRIM_INT__n_s_p_s, NULL, PRIM_INT__m_s_d_s, NULL, PRIM_INT__n_s_f_s);
833
834
835 ostei_general_vrr_K(10, 0, 4, 0, 3,
836 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
837 PRIM_INT__n_s_f_s, PRIM_INT__n_s_d_s, NULL, PRIM_INT__m_s_f_s, NULL, PRIM_INT__n_s_g_s);
838
839
840 ostei_general_vrr_K(10, 0, 5, 0, 2,
841 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
842 PRIM_INT__n_s_g_s, PRIM_INT__n_s_f_s, NULL, PRIM_INT__m_s_g_s, NULL, PRIM_INT__n_s_h_s);
843
844
845 ostei_general_vrr_K(10, 0, 6, 0, 1,
846 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
847 PRIM_INT__n_s_h_s, PRIM_INT__n_s_g_s, NULL, PRIM_INT__m_s_h_s, NULL, PRIM_INT__n_s_i_s);
848
849
850 ostei_general_vrr1_I(11, 10,
851 one_over_2p, a_over_p, aop_PQ, P_PA,
852 PRIM_INT__n_s_s_s, PRIM_INT__m_s_s_s, PRIM_INT__o_s_s_s);
853
854
855 ostei_general_vrr_K(11, 0, 1, 0, 6,
856 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
857 PRIM_INT__o_s_s_s, NULL, NULL, PRIM_INT__n_s_s_s, NULL, PRIM_INT__o_s_p_s);
858
859
860 ostei_general_vrr_K(11, 0, 2, 0, 5,
861 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
862 PRIM_INT__o_s_p_s, PRIM_INT__o_s_s_s, NULL, PRIM_INT__n_s_p_s, NULL, PRIM_INT__o_s_d_s);
863
864
865 ostei_general_vrr_K(11, 0, 3, 0, 4,
866 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
867 PRIM_INT__o_s_d_s, PRIM_INT__o_s_p_s, NULL, PRIM_INT__n_s_d_s, NULL, PRIM_INT__o_s_f_s);
868
869
870 ostei_general_vrr_K(11, 0, 4, 0, 3,
871 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
872 PRIM_INT__o_s_f_s, PRIM_INT__o_s_d_s, NULL, PRIM_INT__n_s_f_s, NULL, PRIM_INT__o_s_g_s);
873
874
875 ostei_general_vrr_K(11, 0, 5, 0, 2,
876 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
877 PRIM_INT__o_s_g_s, PRIM_INT__o_s_f_s, NULL, PRIM_INT__n_s_g_s, NULL, PRIM_INT__o_s_h_s);
878
879
880 ostei_general_vrr_K(11, 0, 6, 0, 1,
881 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
882 PRIM_INT__o_s_h_s, PRIM_INT__o_s_g_s, NULL, PRIM_INT__n_s_h_s, NULL, PRIM_INT__o_s_i_s);
883
884
885 ostei_general_vrr1_I(12, 9,
886 one_over_2p, a_over_p, aop_PQ, P_PA,
887 PRIM_INT__o_s_s_s, PRIM_INT__n_s_s_s, PRIM_INT__q_s_s_s);
888
889
890 ostei_general_vrr_K(12, 0, 1, 0, 6,
891 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
892 PRIM_INT__q_s_s_s, NULL, NULL, PRIM_INT__o_s_s_s, NULL, PRIM_INT__q_s_p_s);
893
894
895 ostei_general_vrr_K(12, 0, 2, 0, 5,
896 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
897 PRIM_INT__q_s_p_s, PRIM_INT__q_s_s_s, NULL, PRIM_INT__o_s_p_s, NULL, PRIM_INT__q_s_d_s);
898
899
900 ostei_general_vrr_K(12, 0, 3, 0, 4,
901 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
902 PRIM_INT__q_s_d_s, PRIM_INT__q_s_p_s, NULL, PRIM_INT__o_s_d_s, NULL, PRIM_INT__q_s_f_s);
903
904
905 ostei_general_vrr_K(12, 0, 4, 0, 3,
906 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
907 PRIM_INT__q_s_f_s, PRIM_INT__q_s_d_s, NULL, PRIM_INT__o_s_f_s, NULL, PRIM_INT__q_s_g_s);
908
909
910 ostei_general_vrr_K(12, 0, 5, 0, 2,
911 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
912 PRIM_INT__q_s_g_s, PRIM_INT__q_s_f_s, NULL, PRIM_INT__o_s_g_s, NULL, PRIM_INT__q_s_h_s);
913
914
915 ostei_general_vrr_K(12, 0, 6, 0, 1,
916 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
917 PRIM_INT__q_s_h_s, PRIM_INT__q_s_g_s, NULL, PRIM_INT__o_s_h_s, NULL, PRIM_INT__q_s_i_s);
918
919
920 ostei_general_vrr1_I(13, 8,
921 one_over_2p, a_over_p, aop_PQ, P_PA,
922 PRIM_INT__q_s_s_s, PRIM_INT__o_s_s_s, PRIM_INT__r_s_s_s);
923
924
925 ostei_general_vrr_K(13, 0, 1, 0, 6,
926 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
927 PRIM_INT__r_s_s_s, NULL, NULL, PRIM_INT__q_s_s_s, NULL, PRIM_INT__r_s_p_s);
928
929
930 ostei_general_vrr_K(13, 0, 2, 0, 5,
931 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
932 PRIM_INT__r_s_p_s, PRIM_INT__r_s_s_s, NULL, PRIM_INT__q_s_p_s, NULL, PRIM_INT__r_s_d_s);
933
934
935 ostei_general_vrr_K(13, 0, 3, 0, 4,
936 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
937 PRIM_INT__r_s_d_s, PRIM_INT__r_s_p_s, NULL, PRIM_INT__q_s_d_s, NULL, PRIM_INT__r_s_f_s);
938
939
940 ostei_general_vrr_K(13, 0, 4, 0, 3,
941 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
942 PRIM_INT__r_s_f_s, PRIM_INT__r_s_d_s, NULL, PRIM_INT__q_s_f_s, NULL, PRIM_INT__r_s_g_s);
943
944
945 ostei_general_vrr_K(13, 0, 5, 0, 2,
946 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
947 PRIM_INT__r_s_g_s, PRIM_INT__r_s_f_s, NULL, PRIM_INT__q_s_g_s, NULL, PRIM_INT__r_s_h_s);
948
949
950 ostei_general_vrr_K(13, 0, 6, 0, 1,
951 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
952 PRIM_INT__r_s_h_s, PRIM_INT__r_s_g_s, NULL, PRIM_INT__q_s_h_s, NULL, PRIM_INT__r_s_i_s);
953
954
955 ostei_general_vrr1_I(14, 7,
956 one_over_2p, a_over_p, aop_PQ, P_PA,
957 PRIM_INT__r_s_s_s, PRIM_INT__q_s_s_s, PRIM_INT__t_s_s_s);
958
959
960 ostei_general_vrr_K(14, 0, 1, 0, 6,
961 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
962 PRIM_INT__t_s_s_s, NULL, NULL, PRIM_INT__r_s_s_s, NULL, PRIM_INT__t_s_p_s);
963
964
965 ostei_general_vrr_K(14, 0, 2, 0, 5,
966 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
967 PRIM_INT__t_s_p_s, PRIM_INT__t_s_s_s, NULL, PRIM_INT__r_s_p_s, NULL, PRIM_INT__t_s_d_s);
968
969
970 ostei_general_vrr_K(14, 0, 3, 0, 4,
971 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
972 PRIM_INT__t_s_d_s, PRIM_INT__t_s_p_s, NULL, PRIM_INT__r_s_d_s, NULL, PRIM_INT__t_s_f_s);
973
974
975 ostei_general_vrr_K(14, 0, 4, 0, 3,
976 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
977 PRIM_INT__t_s_f_s, PRIM_INT__t_s_d_s, NULL, PRIM_INT__r_s_f_s, NULL, PRIM_INT__t_s_g_s);
978
979
980 ostei_general_vrr_K(14, 0, 5, 0, 2,
981 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
982 PRIM_INT__t_s_g_s, PRIM_INT__t_s_f_s, NULL, PRIM_INT__r_s_g_s, NULL, PRIM_INT__t_s_h_s);
983
984
985 ostei_general_vrr_K(14, 0, 6, 0, 1,
986 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
987 PRIM_INT__t_s_h_s, PRIM_INT__t_s_g_s, NULL, PRIM_INT__r_s_h_s, NULL, PRIM_INT__t_s_i_s);
988
989
990
991
992 ////////////////////////////////////
993 // Accumulate contracted integrals
994 ////////////////////////////////////
995 if(lastoffset == 0)
996 {
997 contract_all(756, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
998 contract_all(1008, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
999 contract_all(945, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1000 contract_all(1260, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1001 contract_all(1155, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1002 contract_all(1540, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1003 contract_all(1386, PRIM_INT__n_s_h_s, PRIM_PTR_INT__n_s_h_s);
1004 contract_all(1848, PRIM_INT__n_s_i_s, PRIM_PTR_INT__n_s_i_s);
1005 contract_all(1638, PRIM_INT__o_s_h_s, PRIM_PTR_INT__o_s_h_s);
1006 contract_all(2184, PRIM_INT__o_s_i_s, PRIM_PTR_INT__o_s_i_s);
1007 contract_all(1911, PRIM_INT__q_s_h_s, PRIM_PTR_INT__q_s_h_s);
1008 contract_all(2548, PRIM_INT__q_s_i_s, PRIM_PTR_INT__q_s_i_s);
1009 contract_all(2205, PRIM_INT__r_s_h_s, PRIM_PTR_INT__r_s_h_s);
1010 contract_all(2940, PRIM_INT__r_s_i_s, PRIM_PTR_INT__r_s_i_s);
1011 contract_all(2520, PRIM_INT__t_s_h_s, PRIM_PTR_INT__t_s_h_s);
1012 contract_all(3360, PRIM_INT__t_s_i_s, PRIM_PTR_INT__t_s_i_s);
1013 }
1014 else
1015 {
1016 contract(756, shelloffsets, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1017 contract(1008, shelloffsets, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1018 contract(945, shelloffsets, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1019 contract(1260, shelloffsets, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1020 contract(1155, shelloffsets, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1021 contract(1540, shelloffsets, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1022 contract(1386, shelloffsets, PRIM_INT__n_s_h_s, PRIM_PTR_INT__n_s_h_s);
1023 contract(1848, shelloffsets, PRIM_INT__n_s_i_s, PRIM_PTR_INT__n_s_i_s);
1024 contract(1638, shelloffsets, PRIM_INT__o_s_h_s, PRIM_PTR_INT__o_s_h_s);
1025 contract(2184, shelloffsets, PRIM_INT__o_s_i_s, PRIM_PTR_INT__o_s_i_s);
1026 contract(1911, shelloffsets, PRIM_INT__q_s_h_s, PRIM_PTR_INT__q_s_h_s);
1027 contract(2548, shelloffsets, PRIM_INT__q_s_i_s, PRIM_PTR_INT__q_s_i_s);
1028 contract(2205, shelloffsets, PRIM_INT__r_s_h_s, PRIM_PTR_INT__r_s_h_s);
1029 contract(2940, shelloffsets, PRIM_INT__r_s_i_s, PRIM_PTR_INT__r_s_i_s);
1030 contract(2520, shelloffsets, PRIM_INT__t_s_h_s, PRIM_PTR_INT__t_s_h_s);
1031 contract(3360, shelloffsets, PRIM_INT__t_s_i_s, PRIM_PTR_INT__t_s_i_s);
1032 PRIM_PTR_INT__k_s_h_s += lastoffset*756;
1033 PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
1034 PRIM_PTR_INT__l_s_h_s += lastoffset*945;
1035 PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
1036 PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
1037 PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
1038 PRIM_PTR_INT__n_s_h_s += lastoffset*1386;
1039 PRIM_PTR_INT__n_s_i_s += lastoffset*1848;
1040 PRIM_PTR_INT__o_s_h_s += lastoffset*1638;
1041 PRIM_PTR_INT__o_s_i_s += lastoffset*2184;
1042 PRIM_PTR_INT__q_s_h_s += lastoffset*1911;
1043 PRIM_PTR_INT__q_s_i_s += lastoffset*2548;
1044 PRIM_PTR_INT__r_s_h_s += lastoffset*2205;
1045 PRIM_PTR_INT__r_s_i_s += lastoffset*2940;
1046 PRIM_PTR_INT__t_s_h_s += lastoffset*2520;
1047 PRIM_PTR_INT__t_s_i_s += lastoffset*3360;
1048 }
1049
1050 } // close loop over j
1051 } // close loop over i
1052
1053 //Advance to the next batch
1054 jstart = SIMINT_SIMD_ROUND(jend);
1055
1056 //////////////////////////////////////////////
1057 // Contracted integrals: Horizontal recurrance
1058 //////////////////////////////////////////////
1059
1060
1061 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1062
1063
1064 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1065 {
1066 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1067
1068 // set up HRR pointers
1069 double const * restrict HRR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
1070 double const * restrict HRR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
1071 double const * restrict HRR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
1072 double const * restrict HRR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
1073 double const * restrict HRR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
1074 double const * restrict HRR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
1075 double const * restrict HRR_INT__n_s_h_s = INT__n_s_h_s + abcd * 1386;
1076 double const * restrict HRR_INT__n_s_i_s = INT__n_s_i_s + abcd * 1848;
1077 double const * restrict HRR_INT__o_s_h_s = INT__o_s_h_s + abcd * 1638;
1078 double const * restrict HRR_INT__o_s_i_s = INT__o_s_i_s + abcd * 2184;
1079 double const * restrict HRR_INT__q_s_h_s = INT__q_s_h_s + abcd * 1911;
1080 double const * restrict HRR_INT__q_s_i_s = INT__q_s_i_s + abcd * 2548;
1081 double const * restrict HRR_INT__r_s_h_s = INT__r_s_h_s + abcd * 2205;
1082 double const * restrict HRR_INT__r_s_i_s = INT__r_s_i_s + abcd * 2940;
1083 double const * restrict HRR_INT__t_s_h_s = INT__t_s_h_s + abcd * 2520;
1084 double const * restrict HRR_INT__t_s_i_s = INT__t_s_i_s + abcd * 3360;
1085 double * restrict HRR_INT__k_k_h_p = INT__k_k_h_p + real_abcd * 81648;
1086
1087 // form INT__k_p_h_s
1088 ostei_general_hrr_J(7, 1, 5, 0, hAB, HRR_INT__l_s_h_s, HRR_INT__k_s_h_s, HRR_INT__k_p_h_s);
1089
1090 // form INT__k_p_i_s
1091 ostei_general_hrr_J(7, 1, 6, 0, hAB, HRR_INT__l_s_i_s, HRR_INT__k_s_i_s, HRR_INT__k_p_i_s);
1092
1093 // form INT__l_p_h_s
1094 ostei_general_hrr_J(8, 1, 5, 0, hAB, HRR_INT__m_s_h_s, HRR_INT__l_s_h_s, HRR_INT__l_p_h_s);
1095
1096 // form INT__l_p_i_s
1097 ostei_general_hrr_J(8, 1, 6, 0, hAB, HRR_INT__m_s_i_s, HRR_INT__l_s_i_s, HRR_INT__l_p_i_s);
1098
1099 // form INT__m_p_h_s
1100 ostei_general_hrr_J(9, 1, 5, 0, hAB, HRR_INT__n_s_h_s, HRR_INT__m_s_h_s, HRR_INT__m_p_h_s);
1101
1102 // form INT__m_p_i_s
1103 ostei_general_hrr_J(9, 1, 6, 0, hAB, HRR_INT__n_s_i_s, HRR_INT__m_s_i_s, HRR_INT__m_p_i_s);
1104
1105 // form INT__n_p_h_s
1106 ostei_general_hrr_J(10, 1, 5, 0, hAB, HRR_INT__o_s_h_s, HRR_INT__n_s_h_s, HRR_INT__n_p_h_s);
1107
1108 // form INT__n_p_i_s
1109 ostei_general_hrr_J(10, 1, 6, 0, hAB, HRR_INT__o_s_i_s, HRR_INT__n_s_i_s, HRR_INT__n_p_i_s);
1110
1111 // form INT__o_p_h_s
1112 ostei_general_hrr_J(11, 1, 5, 0, hAB, HRR_INT__q_s_h_s, HRR_INT__o_s_h_s, HRR_INT__o_p_h_s);
1113
1114 // form INT__o_p_i_s
1115 ostei_general_hrr_J(11, 1, 6, 0, hAB, HRR_INT__q_s_i_s, HRR_INT__o_s_i_s, HRR_INT__o_p_i_s);
1116
1117 // form INT__q_p_h_s
1118 ostei_general_hrr_J(12, 1, 5, 0, hAB, HRR_INT__r_s_h_s, HRR_INT__q_s_h_s, HRR_INT__q_p_h_s);
1119
1120 // form INT__q_p_i_s
1121 ostei_general_hrr_J(12, 1, 6, 0, hAB, HRR_INT__r_s_i_s, HRR_INT__q_s_i_s, HRR_INT__q_p_i_s);
1122
1123 // form INT__r_p_h_s
1124 ostei_general_hrr_J(13, 1, 5, 0, hAB, HRR_INT__t_s_h_s, HRR_INT__r_s_h_s, HRR_INT__r_p_h_s);
1125
1126 // form INT__r_p_i_s
1127 ostei_general_hrr_J(13, 1, 6, 0, hAB, HRR_INT__t_s_i_s, HRR_INT__r_s_i_s, HRR_INT__r_p_i_s);
1128
1129 // form INT__k_d_h_s
1130 ostei_general_hrr_J(7, 2, 5, 0, hAB, HRR_INT__l_p_h_s, HRR_INT__k_p_h_s, HRR_INT__k_d_h_s);
1131
1132 // form INT__k_d_i_s
1133 ostei_general_hrr_J(7, 2, 6, 0, hAB, HRR_INT__l_p_i_s, HRR_INT__k_p_i_s, HRR_INT__k_d_i_s);
1134
1135 // form INT__l_d_h_s
1136 ostei_general_hrr_J(8, 2, 5, 0, hAB, HRR_INT__m_p_h_s, HRR_INT__l_p_h_s, HRR_INT__l_d_h_s);
1137
1138 // form INT__l_d_i_s
1139 ostei_general_hrr_J(8, 2, 6, 0, hAB, HRR_INT__m_p_i_s, HRR_INT__l_p_i_s, HRR_INT__l_d_i_s);
1140
1141 // form INT__m_d_h_s
1142 ostei_general_hrr_J(9, 2, 5, 0, hAB, HRR_INT__n_p_h_s, HRR_INT__m_p_h_s, HRR_INT__m_d_h_s);
1143
1144 // form INT__m_d_i_s
1145 ostei_general_hrr_J(9, 2, 6, 0, hAB, HRR_INT__n_p_i_s, HRR_INT__m_p_i_s, HRR_INT__m_d_i_s);
1146
1147 // form INT__n_d_h_s
1148 ostei_general_hrr_J(10, 2, 5, 0, hAB, HRR_INT__o_p_h_s, HRR_INT__n_p_h_s, HRR_INT__n_d_h_s);
1149
1150 // form INT__n_d_i_s
1151 ostei_general_hrr_J(10, 2, 6, 0, hAB, HRR_INT__o_p_i_s, HRR_INT__n_p_i_s, HRR_INT__n_d_i_s);
1152
1153 // form INT__o_d_h_s
1154 ostei_general_hrr_J(11, 2, 5, 0, hAB, HRR_INT__q_p_h_s, HRR_INT__o_p_h_s, HRR_INT__o_d_h_s);
1155
1156 // form INT__o_d_i_s
1157 ostei_general_hrr_J(11, 2, 6, 0, hAB, HRR_INT__q_p_i_s, HRR_INT__o_p_i_s, HRR_INT__o_d_i_s);
1158
1159 // form INT__q_d_h_s
1160 ostei_general_hrr_J(12, 2, 5, 0, hAB, HRR_INT__r_p_h_s, HRR_INT__q_p_h_s, HRR_INT__q_d_h_s);
1161
1162 // form INT__q_d_i_s
1163 ostei_general_hrr_J(12, 2, 6, 0, hAB, HRR_INT__r_p_i_s, HRR_INT__q_p_i_s, HRR_INT__q_d_i_s);
1164
1165 // form INT__k_f_h_s
1166 ostei_general_hrr_J(7, 3, 5, 0, hAB, HRR_INT__l_d_h_s, HRR_INT__k_d_h_s, HRR_INT__k_f_h_s);
1167
1168 // form INT__k_f_i_s
1169 ostei_general_hrr_J(7, 3, 6, 0, hAB, HRR_INT__l_d_i_s, HRR_INT__k_d_i_s, HRR_INT__k_f_i_s);
1170
1171 // form INT__l_f_h_s
1172 ostei_general_hrr_J(8, 3, 5, 0, hAB, HRR_INT__m_d_h_s, HRR_INT__l_d_h_s, HRR_INT__l_f_h_s);
1173
1174 // form INT__l_f_i_s
1175 ostei_general_hrr_J(8, 3, 6, 0, hAB, HRR_INT__m_d_i_s, HRR_INT__l_d_i_s, HRR_INT__l_f_i_s);
1176
1177 // form INT__m_f_h_s
1178 ostei_general_hrr_J(9, 3, 5, 0, hAB, HRR_INT__n_d_h_s, HRR_INT__m_d_h_s, HRR_INT__m_f_h_s);
1179
1180 // form INT__m_f_i_s
1181 ostei_general_hrr_J(9, 3, 6, 0, hAB, HRR_INT__n_d_i_s, HRR_INT__m_d_i_s, HRR_INT__m_f_i_s);
1182
1183 // form INT__n_f_h_s
1184 ostei_general_hrr_J(10, 3, 5, 0, hAB, HRR_INT__o_d_h_s, HRR_INT__n_d_h_s, HRR_INT__n_f_h_s);
1185
1186 // form INT__n_f_i_s
1187 ostei_general_hrr_J(10, 3, 6, 0, hAB, HRR_INT__o_d_i_s, HRR_INT__n_d_i_s, HRR_INT__n_f_i_s);
1188
1189 // form INT__o_f_h_s
1190 ostei_general_hrr_J(11, 3, 5, 0, hAB, HRR_INT__q_d_h_s, HRR_INT__o_d_h_s, HRR_INT__o_f_h_s);
1191
1192 // form INT__o_f_i_s
1193 ostei_general_hrr_J(11, 3, 6, 0, hAB, HRR_INT__q_d_i_s, HRR_INT__o_d_i_s, HRR_INT__o_f_i_s);
1194
1195 // form INT__k_g_h_s
1196 ostei_general_hrr_J(7, 4, 5, 0, hAB, HRR_INT__l_f_h_s, HRR_INT__k_f_h_s, HRR_INT__k_g_h_s);
1197
1198 // form INT__k_g_i_s
1199 ostei_general_hrr_J(7, 4, 6, 0, hAB, HRR_INT__l_f_i_s, HRR_INT__k_f_i_s, HRR_INT__k_g_i_s);
1200
1201 // form INT__l_g_h_s
1202 ostei_general_hrr_J(8, 4, 5, 0, hAB, HRR_INT__m_f_h_s, HRR_INT__l_f_h_s, HRR_INT__l_g_h_s);
1203
1204 // form INT__l_g_i_s
1205 ostei_general_hrr_J(8, 4, 6, 0, hAB, HRR_INT__m_f_i_s, HRR_INT__l_f_i_s, HRR_INT__l_g_i_s);
1206
1207 // form INT__m_g_h_s
1208 ostei_general_hrr_J(9, 4, 5, 0, hAB, HRR_INT__n_f_h_s, HRR_INT__m_f_h_s, HRR_INT__m_g_h_s);
1209
1210 // form INT__m_g_i_s
1211 ostei_general_hrr_J(9, 4, 6, 0, hAB, HRR_INT__n_f_i_s, HRR_INT__m_f_i_s, HRR_INT__m_g_i_s);
1212
1213 // form INT__n_g_h_s
1214 ostei_general_hrr_J(10, 4, 5, 0, hAB, HRR_INT__o_f_h_s, HRR_INT__n_f_h_s, HRR_INT__n_g_h_s);
1215
1216 // form INT__n_g_i_s
1217 ostei_general_hrr_J(10, 4, 6, 0, hAB, HRR_INT__o_f_i_s, HRR_INT__n_f_i_s, HRR_INT__n_g_i_s);
1218
1219 // form INT__k_h_h_s
1220 ostei_general_hrr_J(7, 5, 5, 0, hAB, HRR_INT__l_g_h_s, HRR_INT__k_g_h_s, HRR_INT__k_h_h_s);
1221
1222 // form INT__k_h_i_s
1223 ostei_general_hrr_J(7, 5, 6, 0, hAB, HRR_INT__l_g_i_s, HRR_INT__k_g_i_s, HRR_INT__k_h_i_s);
1224
1225 // form INT__l_h_h_s
1226 ostei_general_hrr_J(8, 5, 5, 0, hAB, HRR_INT__m_g_h_s, HRR_INT__l_g_h_s, HRR_INT__l_h_h_s);
1227
1228 // form INT__l_h_i_s
1229 ostei_general_hrr_J(8, 5, 6, 0, hAB, HRR_INT__m_g_i_s, HRR_INT__l_g_i_s, HRR_INT__l_h_i_s);
1230
1231 // form INT__m_h_h_s
1232 ostei_general_hrr_J(9, 5, 5, 0, hAB, HRR_INT__n_g_h_s, HRR_INT__m_g_h_s, HRR_INT__m_h_h_s);
1233
1234 // form INT__m_h_i_s
1235 ostei_general_hrr_J(9, 5, 6, 0, hAB, HRR_INT__n_g_i_s, HRR_INT__m_g_i_s, HRR_INT__m_h_i_s);
1236
1237 // form INT__k_i_h_s
1238 ostei_general_hrr_J(7, 6, 5, 0, hAB, HRR_INT__l_h_h_s, HRR_INT__k_h_h_s, HRR_INT__k_i_h_s);
1239
1240 // form INT__k_i_i_s
1241 ostei_general_hrr_J(7, 6, 6, 0, hAB, HRR_INT__l_h_i_s, HRR_INT__k_h_i_s, HRR_INT__k_i_i_s);
1242
1243 // form INT__l_i_h_s
1244 ostei_general_hrr_J(8, 6, 5, 0, hAB, HRR_INT__m_h_h_s, HRR_INT__l_h_h_s, HRR_INT__l_i_h_s);
1245
1246 // form INT__l_i_i_s
1247 ostei_general_hrr_J(8, 6, 6, 0, hAB, HRR_INT__m_h_i_s, HRR_INT__l_h_i_s, HRR_INT__l_i_i_s);
1248
1249 // form INT__k_k_h_s
1250 ostei_general_hrr_J(7, 7, 5, 0, hAB, HRR_INT__l_i_h_s, HRR_INT__k_i_h_s, HRR_INT__k_k_h_s);
1251
1252 // form INT__k_k_i_s
1253 ostei_general_hrr_J(7, 7, 6, 0, hAB, HRR_INT__l_i_i_s, HRR_INT__k_i_i_s, HRR_INT__k_k_i_s);
1254
1255 // form INT__k_k_h_p
1256 ostei_general_hrr_L(7, 7, 5, 1, hCD, HRR_INT__k_k_i_s, HRR_INT__k_k_h_s, HRR_INT__k_k_h_p);
1257
1258
1259 } // close HRR loop
1260
1261
1262 } // close loop cdbatch
1263
1264 istart = iend;
1265 } // close loop over ab
1266
1267 return P.nshell12_clip * Q.nshell12_clip;
1268 }
1269
ostei_k_k_p_h(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__k_k_p_h)1270 int ostei_k_k_p_h(struct simint_multi_shellpair const P,
1271 struct simint_multi_shellpair const Q,
1272 double screen_tol,
1273 double * const restrict work,
1274 double * const restrict INT__k_k_p_h)
1275 {
1276 double Q_AB[3*Q.nshell12];
1277 struct simint_multi_shellpair Q_tmp = Q;
1278 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1279 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1280 Q_tmp.AB_x = Q_AB;
1281 Q_tmp.AB_y = Q_AB + Q.nshell12;
1282 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1283
1284 for(int i = 0; i < Q.nshell12; i++)
1285 {
1286 Q_tmp.AB_x[i] = -Q.AB_x[i];
1287 Q_tmp.AB_y[i] = -Q.AB_y[i];
1288 Q_tmp.AB_z[i] = -Q.AB_z[i];
1289 }
1290
1291 int ret = ostei_k_k_h_p(P, Q_tmp, screen_tol, work, INT__k_k_p_h);
1292 double buffer[81648] SIMINT_ALIGN_ARRAY_DBL;
1293
1294 for(int q = 0; q < ret; q++)
1295 {
1296 int idx = 0;
1297 for(int a = 0; a < 36; ++a)
1298 for(int b = 0; b < 36; ++b)
1299 for(int c = 0; c < 3; ++c)
1300 for(int d = 0; d < 21; ++d)
1301 buffer[idx++] = INT__k_k_p_h[q*81648+a*2268+b*63+d*3+c];
1302
1303 memcpy(INT__k_k_p_h+q*81648, buffer, 81648*sizeof(double));
1304 }
1305
1306 return ret;
1307 }
1308
1309