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_d_h_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__k_d_h_g)8 int ostei_k_d_h_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__k_d_h_g)
13 {
14 
15     SIMINT_ASSUME_ALIGN_DBL(work);
16     SIMINT_ASSUME_ALIGN_DBL(INT__k_d_h_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__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__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 1764);
32     double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 3060);
33     double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 4680);
34     double * const INT__l_s_h_s = work + (SIMINT_NSHELL_SIMD * 6660);
35     double * const INT__l_s_i_s = work + (SIMINT_NSHELL_SIMD * 7605);
36     double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 8865);
37     double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 10485);
38     double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 12510);
39     double * const INT__m_s_h_s = work + (SIMINT_NSHELL_SIMD * 14985);
40     double * const INT__m_s_i_s = work + (SIMINT_NSHELL_SIMD * 16140);
41     double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 17680);
42     double * const INT__m_s_l_s = work + (SIMINT_NSHELL_SIMD * 19660);
43     double * const INT__m_s_m_s = work + (SIMINT_NSHELL_SIMD * 22135);
44     SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*25160);
45     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
46     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 19;
47     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 46;
48     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 94;
49     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 148;
50     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 229;
51     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 373;
52     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 583;
53     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 685;
54     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 847;
55     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 1135;
56     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 1555;
57     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 2095;
58     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 2255;
59     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 2525;
60     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 3005;
61     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 3705;
62     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 4605;
63     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 5655;
64     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 5880;
65     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 6285;
66     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 7005;
67     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 8055;
68     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 9405;
69     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 10980;
70     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 12660;
71     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 12954;
72     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 13521;
73     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 14529;
74     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 15999;
75     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 17889;
76     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 20094;
77     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 22446;
78     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 24714;
79     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 25078;
80     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 25834;
81     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 27178;
82     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 29138;
83     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 31658;
84     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 34598;
85     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 37734;
86     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 40758;
87     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 43278;
88     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 43710;
89     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 44682;
90     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 46410;
91     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 48930;
92     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 52170;
93     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 55950;
94     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 59982;
95     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 63870;
96     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 67110;
97     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 69090;
98     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 69585;
99     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 70800;
100     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 72960;
101     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 76110;
102     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 80160;
103     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 84885;
104     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 89925;
105     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 94785;
106     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 98835;
107     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 101310;
108     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 101860;
109     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 103345;
110     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 105985;
111     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 109835;
112     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 114785;
113     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 120560;
114     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 126720;
115     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_l_s = primwork + 132660;
116     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_m_s = primwork + 137610;
117     double * const hrrwork = (double *)(primwork + 140635);
118     double * const HRR_INT__k_p_h_s = hrrwork + 0;
119     double * const HRR_INT__k_p_i_s = hrrwork + 2268;
120     double * const HRR_INT__k_p_k_s = hrrwork + 5292;
121     double * const HRR_INT__k_p_l_s = hrrwork + 9180;
122     double * const HRR_INT__k_p_m_s = hrrwork + 14040;
123     double * const HRR_INT__k_d_h_s = hrrwork + 19980;
124     double * const HRR_INT__k_d_h_p = hrrwork + 24516;
125     double * const HRR_INT__k_d_h_d = hrrwork + 38124;
126     double * const HRR_INT__k_d_h_f = hrrwork + 65340;
127     double * const HRR_INT__k_d_i_s = hrrwork + 110700;
128     double * const HRR_INT__k_d_i_p = hrrwork + 116748;
129     double * const HRR_INT__k_d_i_d = hrrwork + 134892;
130     double * const HRR_INT__k_d_i_f = hrrwork + 171180;
131     double * const HRR_INT__k_d_k_s = hrrwork + 231660;
132     double * const HRR_INT__k_d_k_p = hrrwork + 239436;
133     double * const HRR_INT__k_d_k_d = hrrwork + 262764;
134     double * const HRR_INT__k_d_l_s = hrrwork + 309420;
135     double * const HRR_INT__k_d_l_p = hrrwork + 319140;
136     double * const HRR_INT__k_d_m_s = hrrwork + 348300;
137     double * const HRR_INT__l_p_h_s = hrrwork + 360180;
138     double * const HRR_INT__l_p_i_s = hrrwork + 363015;
139     double * const HRR_INT__l_p_k_s = hrrwork + 366795;
140     double * const HRR_INT__l_p_l_s = hrrwork + 371655;
141     double * const HRR_INT__l_p_m_s = hrrwork + 377730;
142 
143 
144     // Create constants
145     const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
146     const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
147     const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
148     const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
149     const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
150     const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
151     const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
152     const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
153     const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
154     const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
155 
156 
157     ////////////////////////////////////////
158     // Loop over shells and primitives
159     ////////////////////////////////////////
160 
161     real_abcd = 0;
162     istart = 0;
163     for(ab = 0; ab < P.nshell12_clip; ++ab)
164     {
165         const int iend = istart + P.nprim12[ab];
166 
167         cd = 0;
168         jstart = 0;
169 
170         for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
171         {
172             const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
173             int jend = jstart;
174             for(i = 0; i < nshellbatch; i++)
175                 jend += Q.nprim12[cd+i];
176 
177             // Clear the beginning of the workspace (where we are accumulating integrals)
178             memset(work, 0, SIMINT_NSHELL_SIMD * 25160 * sizeof(double));
179             abcd = 0;
180 
181 
182             for(i = istart; i < iend; ++i)
183             {
184                 SIMINT_DBLTYPE bra_screen_max;  // only used if check_screen
185 
186                 if(check_screen)
187                 {
188                     // Skip this whole thing if always insignificant
189                     if((P.screen[i] * Q.screen_max) < screen_tol)
190                         continue;
191                     bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
192                 }
193 
194                 icd = 0;
195                 iprimcd = 0;
196                 nprim_icd = Q.nprim12[cd];
197                 double * restrict PRIM_PTR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
198                 double * restrict PRIM_PTR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
199                 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
200                 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
201                 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
202                 double * restrict PRIM_PTR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
203                 double * restrict PRIM_PTR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
204                 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
205                 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
206                 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
207                 double * restrict PRIM_PTR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
208                 double * restrict PRIM_PTR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
209                 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
210                 double * restrict PRIM_PTR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
211                 double * restrict PRIM_PTR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
212 
213 
214 
215                 // Load these one per loop over i
216                 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
217                 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
218                 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
219 
220                 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
221 
222                 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
223                 {
224                     // calculate the shell offsets
225                     // these are the offset from the shell pointed to by cd
226                     // for each element
227                     int shelloffsets[SIMINT_SIMD_LEN] = {0};
228                     int lastoffset = 0;
229                     const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
230 
231                     if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
232                     {
233                         // Handle if the first element of the vector is a new shell
234                         if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
235                         {
236                             nprim_icd += Q.nprim12[cd + (++icd)];
237                             PRIM_PTR_INT__k_s_h_s += 756;
238                             PRIM_PTR_INT__k_s_i_s += 1008;
239                             PRIM_PTR_INT__k_s_k_s += 1296;
240                             PRIM_PTR_INT__k_s_l_s += 1620;
241                             PRIM_PTR_INT__k_s_m_s += 1980;
242                             PRIM_PTR_INT__l_s_h_s += 945;
243                             PRIM_PTR_INT__l_s_i_s += 1260;
244                             PRIM_PTR_INT__l_s_k_s += 1620;
245                             PRIM_PTR_INT__l_s_l_s += 2025;
246                             PRIM_PTR_INT__l_s_m_s += 2475;
247                             PRIM_PTR_INT__m_s_h_s += 1155;
248                             PRIM_PTR_INT__m_s_i_s += 1540;
249                             PRIM_PTR_INT__m_s_k_s += 1980;
250                             PRIM_PTR_INT__m_s_l_s += 2475;
251                             PRIM_PTR_INT__m_s_m_s += 3025;
252                         }
253                         iprimcd++;
254                         for(n = 1; n < SIMINT_SIMD_LEN; ++n)
255                         {
256                             if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
257                             {
258                                 shelloffsets[n] = shelloffsets[n-1] + 1;
259                                 lastoffset++;
260                                 nprim_icd += Q.nprim12[cd + (++icd)];
261                             }
262                             else
263                                 shelloffsets[n] = shelloffsets[n-1];
264                             iprimcd++;
265                         }
266                     }
267                     else
268                         iprimcd += SIMINT_SIMD_LEN;
269 
270                     // Do we have to compute this vector (or has it been screened out)?
271                     // (not_screened != 0 means we have to do this vector)
272                     if(check_screen)
273                     {
274                         const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
275                         if(vmax < screen_tol)
276                         {
277                             PRIM_PTR_INT__k_s_h_s += lastoffset*756;
278                             PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
279                             PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
280                             PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
281                             PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
282                             PRIM_PTR_INT__l_s_h_s += lastoffset*945;
283                             PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
284                             PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
285                             PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
286                             PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
287                             PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
288                             PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
289                             PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
290                             PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
291                             PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
292                             continue;
293                         }
294                     }
295 
296                     const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
297                     const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
298                     const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
299                     const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
300 
301 
302                     /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
303                     SIMINT_DBLTYPE PQ[3];
304                     PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
305                     PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
306                     PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
307                     SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
308                     R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
309                     R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
310 
311                     const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
312                     const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
313                     const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
314                     const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
315                     const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
316                     const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
317                     const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
318 
319                     // NOTE: Minus sign!
320                     const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
321                     SIMINT_DBLTYPE aop_PQ[3];
322                     aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
323                     aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
324                     aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
325 
326                     SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
327                     SIMINT_DBLTYPE aoq_PQ[3];
328                     aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
329                     aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
330                     aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
331                     // Put a minus sign here so we don't have to in RR routines
332                     a_over_q = SIMINT_NEG(a_over_q);
333 
334 
335                     //////////////////////////////////////////////
336                     // Fjt function section
337                     // Maximum v value: 18
338                     //////////////////////////////////////////////
339                     // The parameter to the Fjt function
340                     const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
341 
342 
343                     const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
344 
345 
346                     boys_F_split(PRIM_INT__s_s_s_s, F_x, 18);
347                     SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
348                     prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
349                     for(n = 0; n <= 18; n++)
350                         PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
351 
352                     //////////////////////////////////////////////
353                     // Primitive integrals: Vertical recurrance
354                     //////////////////////////////////////////////
355 
356                     const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
357                     const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
358                     const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
359                     const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
360                     const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
361                     const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
362                     const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
363                     const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
364                     const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
365                     const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
366                     const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
367                     const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
368                     const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
369                     const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
370                     const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
371                     const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
372                     const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
373                     const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
374                     const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
375                     const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
376                     const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
377                     const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
378                     const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
379                     const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
380                     const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
381 
382 
383 
384                     // Forming PRIM_INT__p_s_s_s[18 * 3];
385                     for(n = 0; n < 18; ++n)  // loop over orders of auxiliary function
386                     {
387 
388                         PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
389                         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]);
390 
391                         PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
392                         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]);
393 
394                         PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
395                         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]);
396 
397                     }
398 
399 
400 
401                     // Forming PRIM_INT__d_s_s_s[17 * 6];
402                     for(n = 0; n < 17; ++n)  // loop over orders of auxiliary function
403                     {
404 
405                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
406                         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]);
407                         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]);
408 
409                         PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
410                         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]);
411 
412                         PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
413                         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]);
414 
415                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
416                         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]);
417                         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]);
418 
419                         PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
420                         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]);
421 
422                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
423                         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]);
424                         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]);
425 
426                     }
427 
428 
429 
430                     // Forming PRIM_INT__f_s_s_s[16 * 10];
431                     for(n = 0; n < 16; ++n)  // loop over orders of auxiliary function
432                     {
433 
434                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
435                         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]);
436                         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]);
437 
438                         PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
439                         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]);
440 
441                         PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
442                         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]);
443 
444                         PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
445                         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]);
446 
447                         PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
448                         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]);
449 
450                         PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
451                         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]);
452 
453                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
454                         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]);
455                         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]);
456 
457                         PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
458                         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]);
459 
460                         PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
461                         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]);
462 
463                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
464                         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]);
465                         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]);
466 
467                     }
468 
469 
470                     VRR_I_g_s_s_s(
471                             PRIM_INT__g_s_s_s,
472                             PRIM_INT__f_s_s_s,
473                             PRIM_INT__d_s_s_s,
474                             P_PA,
475                             a_over_p,
476                             aop_PQ,
477                             one_over_2p,
478                             15);
479 
480 
481                     VRR_I_h_s_s_s(
482                             PRIM_INT__h_s_s_s,
483                             PRIM_INT__g_s_s_s,
484                             PRIM_INT__f_s_s_s,
485                             P_PA,
486                             a_over_p,
487                             aop_PQ,
488                             one_over_2p,
489                             14);
490 
491 
492                     ostei_general_vrr1_I(6, 13,
493                             one_over_2p, a_over_p, aop_PQ, P_PA,
494                             PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
495 
496 
497                     ostei_general_vrr1_I(7, 12,
498                             one_over_2p, a_over_p, aop_PQ, P_PA,
499                             PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
500 
501 
502                     ostei_general_vrr_K(7, 0, 1, 0, 9,
503                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
504                             PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
505 
506 
507                     ostei_general_vrr_K(6, 0, 1, 0, 9,
508                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
509                             PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
510 
511 
512                     ostei_general_vrr_K(7, 0, 2, 0, 8,
513                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
514                             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);
515 
516 
517                     ostei_general_vrr_K(5, 0, 1, 0, 9,
518                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
519                             PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
520 
521 
522                     ostei_general_vrr_K(6, 0, 2, 0, 8,
523                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
524                             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);
525 
526 
527                     ostei_general_vrr_K(7, 0, 3, 0, 7,
528                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
529                             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);
530 
531 
532                     VRR_K_g_s_p_s(
533                             PRIM_INT__g_s_p_s,
534                             PRIM_INT__g_s_s_s,
535                             PRIM_INT__f_s_s_s,
536                             Q_PA,
537                             aoq_PQ,
538                             one_over_2pq,
539                             9);
540 
541 
542                     ostei_general_vrr_K(5, 0, 2, 0, 8,
543                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
544                             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);
545 
546 
547                     ostei_general_vrr_K(6, 0, 3, 0, 7,
548                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
549                             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);
550 
551 
552                     ostei_general_vrr_K(7, 0, 4, 0, 6,
553                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
554                             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);
555 
556 
557                     VRR_K_f_s_p_s(
558                             PRIM_INT__f_s_p_s,
559                             PRIM_INT__f_s_s_s,
560                             PRIM_INT__d_s_s_s,
561                             Q_PA,
562                             aoq_PQ,
563                             one_over_2pq,
564                             9);
565 
566 
567                     ostei_general_vrr_K(4, 0, 2, 0, 8,
568                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
569                             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);
570 
571 
572                     ostei_general_vrr_K(5, 0, 3, 0, 7,
573                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
574                             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);
575 
576 
577                     ostei_general_vrr_K(6, 0, 4, 0, 6,
578                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
579                             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);
580 
581 
582                     ostei_general_vrr_K(7, 0, 5, 0, 5,
583                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
584                             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);
585 
586 
587 
588                     // Forming PRIM_INT__d_s_p_s[9 * 18];
589                     for(n = 0; n < 9; ++n)  // loop over orders of auxiliary function
590                     {
591 
592                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
593                         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]);
594                         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]);
595 
596                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
597                         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]);
598 
599                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
600                         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]);
601 
602                         PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
603                         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]);
604                         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]);
605 
606                         PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
607                         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]);
608                         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]);
609 
610                         PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
611                         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]);
612 
613                         PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
614                         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]);
615                         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]);
616 
617                         PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
618                         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]);
619 
620                         PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
621                         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]);
622                         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]);
623 
624                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
625                         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]);
626 
627                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
628                         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]);
629                         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]);
630 
631                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
632                         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]);
633 
634                         PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
635                         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]);
636 
637                         PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
638                         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]);
639                         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]);
640 
641                         PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
642                         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]);
643                         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]);
644 
645                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
646                         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]);
647 
648                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
649                         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]);
650 
651                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
652                         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]);
653                         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]);
654 
655                     }
656 
657 
658                     VRR_K_f_s_d_s(
659                             PRIM_INT__f_s_d_s,
660                             PRIM_INT__f_s_p_s,
661                             PRIM_INT__f_s_s_s,
662                             PRIM_INT__d_s_p_s,
663                             Q_PA,
664                             a_over_q,
665                             aoq_PQ,
666                             one_over_2pq,
667                             one_over_2q,
668                             8);
669 
670 
671                     ostei_general_vrr_K(4, 0, 3, 0, 7,
672                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
673                             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);
674 
675 
676                     ostei_general_vrr_K(5, 0, 4, 0, 6,
677                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
678                             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);
679 
680 
681                     ostei_general_vrr_K(6, 0, 5, 0, 5,
682                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
683                             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);
684 
685 
686                     ostei_general_vrr_K(7, 0, 6, 0, 4,
687                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
688                             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);
689 
690 
691                     ostei_general_vrr1_I(8, 11,
692                             one_over_2p, a_over_p, aop_PQ, P_PA,
693                             PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
694 
695 
696                     ostei_general_vrr_K(8, 0, 1, 0, 9,
697                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
698                             PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
699 
700 
701                     ostei_general_vrr_K(8, 0, 2, 0, 8,
702                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
703                             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);
704 
705 
706                     ostei_general_vrr_K(8, 0, 3, 0, 7,
707                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
708                             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);
709 
710 
711                     ostei_general_vrr_K(8, 0, 4, 0, 6,
712                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
713                             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);
714 
715 
716                     ostei_general_vrr_K(8, 0, 5, 0, 5,
717                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
718                             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);
719 
720 
721 
722                     // Forming PRIM_INT__p_s_p_s[9 * 9];
723                     for(n = 0; n < 9; ++n)  // loop over orders of auxiliary function
724                     {
725 
726                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
727                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 0]);
728                         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]);
729 
730                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
731                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 1]);
732 
733                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
734                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 2]);
735 
736                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 1]);
737                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 3]);
738 
739                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
740                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 4]);
741                         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]);
742 
743                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
744                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 5]);
745 
746                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 2]);
747                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 6]);
748 
749                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 2]);
750                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 7]);
751 
752                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
753                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 8]);
754                         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]);
755 
756                     }
757 
758 
759                     VRR_K_d_s_d_s(
760                             PRIM_INT__d_s_d_s,
761                             PRIM_INT__d_s_p_s,
762                             PRIM_INT__d_s_s_s,
763                             PRIM_INT__p_s_p_s,
764                             Q_PA,
765                             a_over_q,
766                             aoq_PQ,
767                             one_over_2pq,
768                             one_over_2q,
769                             8);
770 
771 
772                     ostei_general_vrr_K(3, 0, 3, 0, 7,
773                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
774                             PRIM_INT__f_s_d_s, PRIM_INT__f_s_p_s, NULL, PRIM_INT__d_s_d_s, NULL, PRIM_INT__f_s_f_s);
775 
776 
777                     ostei_general_vrr_K(4, 0, 4, 0, 6,
778                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
779                             PRIM_INT__g_s_f_s, PRIM_INT__g_s_d_s, NULL, PRIM_INT__f_s_f_s, NULL, PRIM_INT__g_s_g_s);
780 
781 
782                     ostei_general_vrr_K(5, 0, 5, 0, 5,
783                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
784                             PRIM_INT__h_s_g_s, PRIM_INT__h_s_f_s, NULL, PRIM_INT__g_s_g_s, NULL, PRIM_INT__h_s_h_s);
785 
786 
787                     ostei_general_vrr_K(6, 0, 6, 0, 4,
788                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
789                             PRIM_INT__i_s_h_s, PRIM_INT__i_s_g_s, NULL, PRIM_INT__h_s_h_s, NULL, PRIM_INT__i_s_i_s);
790 
791 
792                     ostei_general_vrr_K(7, 0, 7, 0, 3,
793                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
794                             PRIM_INT__k_s_i_s, PRIM_INT__k_s_h_s, NULL, PRIM_INT__i_s_i_s, NULL, PRIM_INT__k_s_k_s);
795 
796 
797                     ostei_general_vrr_K(8, 0, 6, 0, 4,
798                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
799                             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);
800 
801 
802                     ostei_general_vrr1_I(9, 10,
803                             one_over_2p, a_over_p, aop_PQ, P_PA,
804                             PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
805 
806 
807                     ostei_general_vrr_K(9, 0, 1, 0, 9,
808                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
809                             PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
810 
811 
812                     ostei_general_vrr_K(9, 0, 2, 0, 8,
813                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
814                             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);
815 
816 
817                     ostei_general_vrr_K(9, 0, 3, 0, 7,
818                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
819                             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);
820 
821 
822                     ostei_general_vrr_K(9, 0, 4, 0, 6,
823                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
824                             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);
825 
826 
827                     ostei_general_vrr_K(9, 0, 5, 0, 5,
828                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
829                             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);
830 
831 
832 
833                     // Forming PRIM_INT__s_s_p_s[9 * 3];
834                     for(n = 0; n < 9; ++n)  // loop over orders of auxiliary function
835                     {
836 
837                         PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
838                         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]);
839 
840                         PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
841                         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]);
842 
843                         PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
844                         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]);
845 
846                     }
847 
848 
849 
850                     // Forming PRIM_INT__p_s_d_s[8 * 18];
851                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
852                     {
853 
854                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
855                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
856                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 0]);
857                         PRIM_INT__p_s_d_s[n * 18 + 0] = 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 + 0]);
858 
859                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 1]);
860                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 1], PRIM_INT__p_s_d_s[n * 18 + 3]);
861                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 3]);
862 
863                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 2]);
864                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 2], PRIM_INT__p_s_d_s[n * 18 + 5]);
865                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 5]);
866 
867                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 3]);
868                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 3], PRIM_INT__p_s_d_s[n * 18 + 6]);
869                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 6]);
870 
871                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
872                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 4], PRIM_INT__p_s_d_s[n * 18 + 9]);
873                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 9]);
874                         PRIM_INT__p_s_d_s[n * 18 + 9] = 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 + 9]);
875 
876                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 5]);
877                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 5], PRIM_INT__p_s_d_s[n * 18 + 11]);
878                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 11]);
879 
880                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 6]);
881                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 6], PRIM_INT__p_s_d_s[n * 18 + 12]);
882                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 12]);
883 
884                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 7]);
885                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 7], PRIM_INT__p_s_d_s[n * 18 + 15]);
886                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 15]);
887 
888                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
889                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 8], PRIM_INT__p_s_d_s[n * 18 + 17]);
890                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 17]);
891                         PRIM_INT__p_s_d_s[n * 18 + 17] = 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 + 17]);
892 
893                     }
894 
895 
896                     VRR_K_d_s_f_s(
897                             PRIM_INT__d_s_f_s,
898                             PRIM_INT__d_s_d_s,
899                             PRIM_INT__d_s_p_s,
900                             PRIM_INT__p_s_d_s,
901                             Q_PA,
902                             a_over_q,
903                             aoq_PQ,
904                             one_over_2pq,
905                             one_over_2q,
906                             7);
907 
908 
909                     ostei_general_vrr_K(3, 0, 4, 0, 6,
910                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
911                             PRIM_INT__f_s_f_s, PRIM_INT__f_s_d_s, NULL, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_g_s);
912 
913 
914                     ostei_general_vrr_K(4, 0, 5, 0, 5,
915                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
916                             PRIM_INT__g_s_g_s, PRIM_INT__g_s_f_s, NULL, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_h_s);
917 
918 
919                     ostei_general_vrr_K(5, 0, 6, 0, 4,
920                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
921                             PRIM_INT__h_s_h_s, PRIM_INT__h_s_g_s, NULL, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_i_s);
922 
923 
924                     ostei_general_vrr_K(6, 0, 7, 0, 3,
925                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
926                             PRIM_INT__i_s_i_s, PRIM_INT__i_s_h_s, NULL, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_k_s);
927 
928 
929                     ostei_general_vrr_K(7, 0, 8, 0, 2,
930                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
931                             PRIM_INT__k_s_k_s, PRIM_INT__k_s_i_s, NULL, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_l_s);
932 
933 
934                     ostei_general_vrr_K(8, 0, 7, 0, 3,
935                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
936                             PRIM_INT__l_s_i_s, PRIM_INT__l_s_h_s, NULL, PRIM_INT__k_s_i_s, NULL, PRIM_INT__l_s_k_s);
937 
938 
939                     ostei_general_vrr_K(9, 0, 6, 0, 4,
940                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
941                             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);
942 
943 
944 
945                     // Forming PRIM_INT__s_s_d_s[8 * 6];
946                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
947                     {
948 
949                         PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
950                         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]);
951                         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]);
952 
953                         PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
954                         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]);
955                         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]);
956 
957                         PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
958                         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]);
959                         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]);
960 
961                     }
962 
963 
964                     VRR_K_p_s_f_s(
965                             PRIM_INT__p_s_f_s,
966                             PRIM_INT__p_s_d_s,
967                             PRIM_INT__p_s_p_s,
968                             PRIM_INT__s_s_d_s,
969                             Q_PA,
970                             a_over_q,
971                             aoq_PQ,
972                             one_over_2pq,
973                             one_over_2q,
974                             7);
975 
976 
977                     ostei_general_vrr_K(2, 0, 4, 0, 6,
978                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
979                             PRIM_INT__d_s_f_s, PRIM_INT__d_s_d_s, NULL, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_g_s);
980 
981 
982                     ostei_general_vrr_K(3, 0, 5, 0, 5,
983                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
984                             PRIM_INT__f_s_g_s, PRIM_INT__f_s_f_s, NULL, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_h_s);
985 
986 
987                     ostei_general_vrr_K(4, 0, 6, 0, 4,
988                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
989                             PRIM_INT__g_s_h_s, PRIM_INT__g_s_g_s, NULL, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_i_s);
990 
991 
992                     ostei_general_vrr_K(5, 0, 7, 0, 3,
993                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
994                             PRIM_INT__h_s_i_s, PRIM_INT__h_s_h_s, NULL, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_k_s);
995 
996 
997                     ostei_general_vrr_K(6, 0, 8, 0, 2,
998                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
999                             PRIM_INT__i_s_k_s, PRIM_INT__i_s_i_s, NULL, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_l_s);
1000 
1001 
1002                     ostei_general_vrr_K(7, 0, 9, 0, 1,
1003                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1004                             PRIM_INT__k_s_l_s, PRIM_INT__k_s_k_s, NULL, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_m_s);
1005 
1006 
1007                     ostei_general_vrr_K(8, 0, 8, 0, 2,
1008                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1009                             PRIM_INT__l_s_k_s, PRIM_INT__l_s_i_s, NULL, PRIM_INT__k_s_k_s, NULL, PRIM_INT__l_s_l_s);
1010 
1011 
1012                     ostei_general_vrr_K(9, 0, 7, 0, 3,
1013                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1014                             PRIM_INT__m_s_i_s, PRIM_INT__m_s_h_s, NULL, PRIM_INT__l_s_i_s, NULL, PRIM_INT__m_s_k_s);
1015 
1016 
1017                     ostei_general_vrr_K(8, 0, 9, 0, 1,
1018                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1019                             PRIM_INT__l_s_l_s, PRIM_INT__l_s_k_s, NULL, PRIM_INT__k_s_l_s, NULL, PRIM_INT__l_s_m_s);
1020 
1021 
1022                     ostei_general_vrr_K(9, 0, 8, 0, 2,
1023                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1024                             PRIM_INT__m_s_k_s, PRIM_INT__m_s_i_s, NULL, PRIM_INT__l_s_k_s, NULL, PRIM_INT__m_s_l_s);
1025 
1026 
1027                     ostei_general_vrr_K(9, 0, 9, 0, 1,
1028                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1029                             PRIM_INT__m_s_l_s, PRIM_INT__m_s_k_s, NULL, PRIM_INT__l_s_l_s, NULL, PRIM_INT__m_s_m_s);
1030 
1031 
1032 
1033 
1034                     ////////////////////////////////////
1035                     // Accumulate contracted integrals
1036                     ////////////////////////////////////
1037                     if(lastoffset == 0)
1038                     {
1039                         contract_all(756, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1040                         contract_all(1008, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1041                         contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1042                         contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1043                         contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1044                         contract_all(945, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1045                         contract_all(1260, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1046                         contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1047                         contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1048                         contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1049                         contract_all(1155, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1050                         contract_all(1540, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1051                         contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1052                         contract_all(2475, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1053                         contract_all(3025, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1054                     }
1055                     else
1056                     {
1057                         contract(756, shelloffsets, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1058                         contract(1008, shelloffsets, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1059                         contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1060                         contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1061                         contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1062                         contract(945, shelloffsets, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1063                         contract(1260, shelloffsets, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1064                         contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1065                         contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1066                         contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1067                         contract(1155, shelloffsets, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1068                         contract(1540, shelloffsets, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1069                         contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1070                         contract(2475, shelloffsets, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1071                         contract(3025, shelloffsets, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1072                         PRIM_PTR_INT__k_s_h_s += lastoffset*756;
1073                         PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
1074                         PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1075                         PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1076                         PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1077                         PRIM_PTR_INT__l_s_h_s += lastoffset*945;
1078                         PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
1079                         PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1080                         PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1081                         PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1082                         PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
1083                         PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
1084                         PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1085                         PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
1086                         PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
1087                     }
1088 
1089                 }  // close loop over j
1090             }  // close loop over i
1091 
1092             //Advance to the next batch
1093             jstart = SIMINT_SIMD_ROUND(jend);
1094 
1095             //////////////////////////////////////////////
1096             // Contracted integrals: Horizontal recurrance
1097             //////////////////////////////////////////////
1098 
1099 
1100             const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1101 
1102 
1103             for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1104             {
1105                 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1106 
1107                 // set up HRR pointers
1108                 double const * restrict HRR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
1109                 double const * restrict HRR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
1110                 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1111                 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1112                 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1113                 double const * restrict HRR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
1114                 double const * restrict HRR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
1115                 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1116                 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1117                 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1118                 double const * restrict HRR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
1119                 double const * restrict HRR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
1120                 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1121                 double const * restrict HRR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
1122                 double const * restrict HRR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
1123                 double * restrict HRR_INT__k_d_h_g = INT__k_d_h_g + real_abcd * 68040;
1124 
1125                 // form INT__k_p_h_s
1126                 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);
1127 
1128                 // form INT__k_p_i_s
1129                 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);
1130 
1131                 // form INT__k_p_k_s
1132                 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);
1133 
1134                 // form INT__k_p_l_s
1135                 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);
1136 
1137                 // form INT__k_p_m_s
1138                 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);
1139 
1140                 // form INT__l_p_h_s
1141                 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);
1142 
1143                 // form INT__l_p_i_s
1144                 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);
1145 
1146                 // form INT__l_p_k_s
1147                 ostei_general_hrr_J(8, 1, 7, 0, hAB, HRR_INT__m_s_k_s, HRR_INT__l_s_k_s, HRR_INT__l_p_k_s);
1148 
1149                 // form INT__l_p_l_s
1150                 ostei_general_hrr_J(8, 1, 8, 0, hAB, HRR_INT__m_s_l_s, HRR_INT__l_s_l_s, HRR_INT__l_p_l_s);
1151 
1152                 // form INT__l_p_m_s
1153                 ostei_general_hrr_J(8, 1, 9, 0, hAB, HRR_INT__m_s_m_s, HRR_INT__l_s_m_s, HRR_INT__l_p_m_s);
1154 
1155                 // form INT__k_d_h_s
1156                 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);
1157 
1158                 // form INT__k_d_i_s
1159                 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);
1160 
1161                 // form INT__k_d_k_s
1162                 ostei_general_hrr_J(7, 2, 7, 0, hAB, HRR_INT__l_p_k_s, HRR_INT__k_p_k_s, HRR_INT__k_d_k_s);
1163 
1164                 // form INT__k_d_l_s
1165                 ostei_general_hrr_J(7, 2, 8, 0, hAB, HRR_INT__l_p_l_s, HRR_INT__k_p_l_s, HRR_INT__k_d_l_s);
1166 
1167                 // form INT__k_d_m_s
1168                 ostei_general_hrr_J(7, 2, 9, 0, hAB, HRR_INT__l_p_m_s, HRR_INT__k_p_m_s, HRR_INT__k_d_m_s);
1169 
1170                 // form INT__k_d_h_p
1171                 ostei_general_hrr_L(7, 2, 5, 1, hCD, HRR_INT__k_d_i_s, HRR_INT__k_d_h_s, HRR_INT__k_d_h_p);
1172 
1173                 // form INT__k_d_i_p
1174                 ostei_general_hrr_L(7, 2, 6, 1, hCD, HRR_INT__k_d_k_s, HRR_INT__k_d_i_s, HRR_INT__k_d_i_p);
1175 
1176                 // form INT__k_d_k_p
1177                 ostei_general_hrr_L(7, 2, 7, 1, hCD, HRR_INT__k_d_l_s, HRR_INT__k_d_k_s, HRR_INT__k_d_k_p);
1178 
1179                 // form INT__k_d_l_p
1180                 ostei_general_hrr_L(7, 2, 8, 1, hCD, HRR_INT__k_d_m_s, HRR_INT__k_d_l_s, HRR_INT__k_d_l_p);
1181 
1182                 // form INT__k_d_h_d
1183                 ostei_general_hrr_L(7, 2, 5, 2, hCD, HRR_INT__k_d_i_p, HRR_INT__k_d_h_p, HRR_INT__k_d_h_d);
1184 
1185                 // form INT__k_d_i_d
1186                 ostei_general_hrr_L(7, 2, 6, 2, hCD, HRR_INT__k_d_k_p, HRR_INT__k_d_i_p, HRR_INT__k_d_i_d);
1187 
1188                 // form INT__k_d_k_d
1189                 ostei_general_hrr_L(7, 2, 7, 2, hCD, HRR_INT__k_d_l_p, HRR_INT__k_d_k_p, HRR_INT__k_d_k_d);
1190 
1191                 // form INT__k_d_h_f
1192                 ostei_general_hrr_L(7, 2, 5, 3, hCD, HRR_INT__k_d_i_d, HRR_INT__k_d_h_d, HRR_INT__k_d_h_f);
1193 
1194                 // form INT__k_d_i_f
1195                 ostei_general_hrr_L(7, 2, 6, 3, hCD, HRR_INT__k_d_k_d, HRR_INT__k_d_i_d, HRR_INT__k_d_i_f);
1196 
1197                 // form INT__k_d_h_g
1198                 ostei_general_hrr_L(7, 2, 5, 4, hCD, HRR_INT__k_d_i_f, HRR_INT__k_d_h_f, HRR_INT__k_d_h_g);
1199 
1200 
1201             }  // close HRR loop
1202 
1203 
1204         }   // close loop cdbatch
1205 
1206         istart = iend;
1207     }  // close loop over ab
1208 
1209     return P.nshell12_clip * Q.nshell12_clip;
1210 }
1211 
ostei_d_k_h_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__d_k_h_g)1212 int ostei_d_k_h_g(struct simint_multi_shellpair const P,
1213                   struct simint_multi_shellpair const Q,
1214                   double screen_tol,
1215                   double * const restrict work,
1216                   double * const restrict INT__d_k_h_g)
1217 {
1218     double P_AB[3*P.nshell12];
1219     struct simint_multi_shellpair P_tmp = P;
1220     P_tmp.PA_x = P.PB_x;  P_tmp.PA_y = P.PB_y;  P_tmp.PA_z = P.PB_z;
1221     P_tmp.PB_x = P.PA_x;  P_tmp.PB_y = P.PA_y;  P_tmp.PB_z = P.PA_z;
1222     P_tmp.AB_x = P_AB;
1223     P_tmp.AB_y = P_AB + P.nshell12;
1224     P_tmp.AB_z = P_AB + 2*P.nshell12;
1225 
1226     for(int i = 0; i < P.nshell12; i++)
1227     {
1228         P_tmp.AB_x[i] = -P.AB_x[i];
1229         P_tmp.AB_y[i] = -P.AB_y[i];
1230         P_tmp.AB_z[i] = -P.AB_z[i];
1231     }
1232 
1233     int ret = ostei_k_d_h_g(P_tmp, Q, screen_tol, work, INT__d_k_h_g);
1234     double buffer[68040] SIMINT_ALIGN_ARRAY_DBL;
1235 
1236     for(int q = 0; q < ret; q++)
1237     {
1238         int idx = 0;
1239         for(int a = 0; a < 6; ++a)
1240         for(int b = 0; b < 36; ++b)
1241         for(int c = 0; c < 21; ++c)
1242         for(int d = 0; d < 15; ++d)
1243             buffer[idx++] = INT__d_k_h_g[q*68040+b*1890+a*315+c*15+d];
1244 
1245         memcpy(INT__d_k_h_g+q*68040, buffer, 68040*sizeof(double));
1246     }
1247 
1248     return ret;
1249 }
1250 
ostei_k_d_g_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_d_g_h)1251 int ostei_k_d_g_h(struct simint_multi_shellpair const P,
1252                   struct simint_multi_shellpair const Q,
1253                   double screen_tol,
1254                   double * const restrict work,
1255                   double * const restrict INT__k_d_g_h)
1256 {
1257     double Q_AB[3*Q.nshell12];
1258     struct simint_multi_shellpair Q_tmp = Q;
1259     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1260     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1261     Q_tmp.AB_x = Q_AB;
1262     Q_tmp.AB_y = Q_AB + Q.nshell12;
1263     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1264 
1265     for(int i = 0; i < Q.nshell12; i++)
1266     {
1267         Q_tmp.AB_x[i] = -Q.AB_x[i];
1268         Q_tmp.AB_y[i] = -Q.AB_y[i];
1269         Q_tmp.AB_z[i] = -Q.AB_z[i];
1270     }
1271 
1272     int ret = ostei_k_d_h_g(P, Q_tmp, screen_tol, work, INT__k_d_g_h);
1273     double buffer[68040] SIMINT_ALIGN_ARRAY_DBL;
1274 
1275     for(int q = 0; q < ret; q++)
1276     {
1277         int idx = 0;
1278         for(int a = 0; a < 36; ++a)
1279         for(int b = 0; b < 6; ++b)
1280         for(int c = 0; c < 15; ++c)
1281         for(int d = 0; d < 21; ++d)
1282             buffer[idx++] = INT__k_d_g_h[q*68040+a*1890+b*315+d*15+c];
1283 
1284         memcpy(INT__k_d_g_h+q*68040, buffer, 68040*sizeof(double));
1285     }
1286 
1287     return ret;
1288 }
1289 
ostei_d_k_g_h(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__d_k_g_h)1290 int ostei_d_k_g_h(struct simint_multi_shellpair const P,
1291                   struct simint_multi_shellpair const Q,
1292                   double screen_tol,
1293                   double * const restrict work,
1294                   double * const restrict INT__d_k_g_h)
1295 {
1296     double P_AB[3*P.nshell12];
1297     struct simint_multi_shellpair P_tmp = P;
1298     P_tmp.PA_x = P.PB_x;  P_tmp.PA_y = P.PB_y;  P_tmp.PA_z = P.PB_z;
1299     P_tmp.PB_x = P.PA_x;  P_tmp.PB_y = P.PA_y;  P_tmp.PB_z = P.PA_z;
1300     P_tmp.AB_x = P_AB;
1301     P_tmp.AB_y = P_AB + P.nshell12;
1302     P_tmp.AB_z = P_AB + 2*P.nshell12;
1303 
1304     for(int i = 0; i < P.nshell12; i++)
1305     {
1306         P_tmp.AB_x[i] = -P.AB_x[i];
1307         P_tmp.AB_y[i] = -P.AB_y[i];
1308         P_tmp.AB_z[i] = -P.AB_z[i];
1309     }
1310 
1311     double Q_AB[3*Q.nshell12];
1312     struct simint_multi_shellpair Q_tmp = Q;
1313     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1314     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1315     Q_tmp.AB_x = Q_AB;
1316     Q_tmp.AB_y = Q_AB + Q.nshell12;
1317     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1318 
1319     for(int i = 0; i < Q.nshell12; i++)
1320     {
1321         Q_tmp.AB_x[i] = -Q.AB_x[i];
1322         Q_tmp.AB_y[i] = -Q.AB_y[i];
1323         Q_tmp.AB_z[i] = -Q.AB_z[i];
1324     }
1325 
1326     int ret = ostei_k_d_h_g(P_tmp, Q_tmp, screen_tol, work, INT__d_k_g_h);
1327     double buffer[68040] SIMINT_ALIGN_ARRAY_DBL;
1328 
1329     for(int q = 0; q < ret; q++)
1330     {
1331         int idx = 0;
1332         for(int a = 0; a < 6; ++a)
1333         for(int b = 0; b < 36; ++b)
1334         for(int c = 0; c < 15; ++c)
1335         for(int d = 0; d < 21; ++d)
1336             buffer[idx++] = INT__d_k_g_h[q*68040+b*1890+a*315+d*15+c];
1337 
1338         memcpy(INT__d_k_g_h+q*68040, buffer, 68040*sizeof(double));
1339     }
1340 
1341     return ret;
1342 }
1343 
1344