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_k_s(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_k_s)8 int ostei_k_k_k_s(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_k_s)
13 {
14 
15     SIMINT_ASSUME_ALIGN_DBL(work);
16     SIMINT_ASSUME_ALIGN_DBL(INT__k_k_k_s);
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 
27     // partition workspace
28     double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
29     double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 1296);
30     double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 2916);
31     double * const INT__n_s_k_s = work + (SIMINT_NSHELL_SIMD * 4896);
32     double * const INT__o_s_k_s = work + (SIMINT_NSHELL_SIMD * 7272);
33     double * const INT__q_s_k_s = work + (SIMINT_NSHELL_SIMD * 10080);
34     double * const INT__r_s_k_s = work + (SIMINT_NSHELL_SIMD * 13356);
35     double * const INT__t_s_k_s = work + (SIMINT_NSHELL_SIMD * 17136);
36     SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*21456);
37     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
38     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 22;
39     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 85;
40     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 148;
41     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 268;
42     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 394;
43     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 610;
44     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 800;
45     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 1010;
46     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 1370;
47     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 1870;
48     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 2140;
49     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 2455;
50     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 2995;
51     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 3745;
52     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 4645;
53     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 5002;
54     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 5443;
55     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 6199;
56     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 7249;
57     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 8509;
58     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 9832;
59     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 10280;
60     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 10868;
61     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 11876;
62     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 13276;
63     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 14956;
64     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 16720;
65     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 18288;
66     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 18828;
67     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 19584;
68     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 20880;
69     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 22680;
70     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 24840;
71     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 27108;
72     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 29124;
73     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 30420;
74     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 31050;
75     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 31995;
76     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 33615;
77     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 35865;
78     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 38565;
79     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 41400;
80     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 43920;
81     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 45540;
82     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 46255;
83     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 47410;
84     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 49390;
85     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 52140;
86     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 55440;
87     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 58905;
88     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 61985;
89     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_s_s = primwork + 63965;
90     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_p_s = primwork + 64757;
91     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_d_s = primwork + 66143;
92     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_f_s = primwork + 68519;
93     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_g_s = primwork + 71819;
94     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_h_s = primwork + 75779;
95     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_i_s = primwork + 79937;
96     SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_k_s = primwork + 83633;
97     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_s_s = primwork + 86009;
98     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_p_s = primwork + 86867;
99     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_d_s = primwork + 88505;
100     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_f_s = primwork + 91313;
101     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_g_s = primwork + 95213;
102     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_h_s = primwork + 99893;
103     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_i_s = primwork + 104807;
104     SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_k_s = primwork + 109175;
105     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_s_s = primwork + 111983;
106     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_p_s = primwork + 112893;
107     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_d_s = primwork + 114804;
108     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_f_s = primwork + 118080;
109     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_g_s = primwork + 122630;
110     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_h_s = primwork + 128090;
111     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_i_s = primwork + 133823;
112     SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_k_s = primwork + 138919;
113     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_s_s = primwork + 142195;
114     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_p_s = primwork + 143140;
115     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_d_s = primwork + 145345;
116     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_f_s = primwork + 149125;
117     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_g_s = primwork + 154375;
118     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_h_s = primwork + 160675;
119     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_i_s = primwork + 167290;
120     SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_k_s = primwork + 173170;
121     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_s_s = primwork + 176950;
122     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_p_s = primwork + 177910;
123     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_d_s = primwork + 180430;
124     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_f_s = primwork + 184750;
125     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_g_s = primwork + 190750;
126     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_h_s = primwork + 197950;
127     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_i_s = primwork + 205510;
128     SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_k_s = primwork + 212230;
129     double * const hrrwork = (double *)(primwork + 216550);
130     double * const HRR_INT__k_p_k_s = hrrwork + 0;
131     double * const HRR_INT__k_d_k_s = hrrwork + 3888;
132     double * const HRR_INT__k_f_k_s = hrrwork + 11664;
133     double * const HRR_INT__k_g_k_s = hrrwork + 24624;
134     double * const HRR_INT__k_h_k_s = hrrwork + 44064;
135     double * const HRR_INT__k_i_k_s = hrrwork + 71280;
136     double * const HRR_INT__l_p_k_s = hrrwork + 107568;
137     double * const HRR_INT__l_d_k_s = hrrwork + 112428;
138     double * const HRR_INT__l_f_k_s = hrrwork + 122148;
139     double * const HRR_INT__l_g_k_s = hrrwork + 138348;
140     double * const HRR_INT__l_h_k_s = hrrwork + 162648;
141     double * const HRR_INT__l_i_k_s = hrrwork + 196668;
142     double * const HRR_INT__m_p_k_s = hrrwork + 242028;
143     double * const HRR_INT__m_d_k_s = hrrwork + 247968;
144     double * const HRR_INT__m_f_k_s = hrrwork + 259848;
145     double * const HRR_INT__m_g_k_s = hrrwork + 279648;
146     double * const HRR_INT__m_h_k_s = hrrwork + 309348;
147     double * const HRR_INT__n_p_k_s = hrrwork + 350928;
148     double * const HRR_INT__n_d_k_s = hrrwork + 358056;
149     double * const HRR_INT__n_f_k_s = hrrwork + 372312;
150     double * const HRR_INT__n_g_k_s = hrrwork + 396072;
151     double * const HRR_INT__o_p_k_s = hrrwork + 431712;
152     double * const HRR_INT__o_d_k_s = hrrwork + 440136;
153     double * const HRR_INT__o_f_k_s = hrrwork + 456984;
154     double * const HRR_INT__q_p_k_s = hrrwork + 485064;
155     double * const HRR_INT__q_d_k_s = hrrwork + 494892;
156     double * const HRR_INT__r_p_k_s = hrrwork + 514548;
157 
158 
159     // Create constants
160     const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
161     const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
162     const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
163     const SIMINT_DBLTYPE const_12 = SIMINT_DBLSET1(12);
164     const SIMINT_DBLTYPE const_13 = SIMINT_DBLSET1(13);
165     const SIMINT_DBLTYPE const_14 = SIMINT_DBLSET1(14);
166     const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
167     const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
168     const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
169     const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
170     const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
171     const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
172     const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
173     const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
174     const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
175 
176 
177     ////////////////////////////////////////
178     // Loop over shells and primitives
179     ////////////////////////////////////////
180 
181     real_abcd = 0;
182     istart = 0;
183     for(ab = 0; ab < P.nshell12_clip; ++ab)
184     {
185         const int iend = istart + P.nprim12[ab];
186 
187         cd = 0;
188         jstart = 0;
189 
190         for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
191         {
192             const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
193             int jend = jstart;
194             for(i = 0; i < nshellbatch; i++)
195                 jend += Q.nprim12[cd+i];
196 
197             // Clear the beginning of the workspace (where we are accumulating integrals)
198             memset(work, 0, SIMINT_NSHELL_SIMD * 21456 * sizeof(double));
199             abcd = 0;
200 
201 
202             for(i = istart; i < iend; ++i)
203             {
204                 SIMINT_DBLTYPE bra_screen_max;  // only used if check_screen
205 
206                 if(check_screen)
207                 {
208                     // Skip this whole thing if always insignificant
209                     if((P.screen[i] * Q.screen_max) < screen_tol)
210                         continue;
211                     bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
212                 }
213 
214                 icd = 0;
215                 iprimcd = 0;
216                 nprim_icd = Q.nprim12[cd];
217                 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
218                 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
219                 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
220                 double * restrict PRIM_PTR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
221                 double * restrict PRIM_PTR_INT__o_s_k_s = INT__o_s_k_s + abcd * 2808;
222                 double * restrict PRIM_PTR_INT__q_s_k_s = INT__q_s_k_s + abcd * 3276;
223                 double * restrict PRIM_PTR_INT__r_s_k_s = INT__r_s_k_s + abcd * 3780;
224                 double * restrict PRIM_PTR_INT__t_s_k_s = INT__t_s_k_s + abcd * 4320;
225 
226 
227 
228                 // Load these one per loop over i
229                 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
230                 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
231                 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
232 
233                 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
234 
235                 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
236                 {
237                     // calculate the shell offsets
238                     // these are the offset from the shell pointed to by cd
239                     // for each element
240                     int shelloffsets[SIMINT_SIMD_LEN] = {0};
241                     int lastoffset = 0;
242                     const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
243 
244                     if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
245                     {
246                         // Handle if the first element of the vector is a new shell
247                         if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
248                         {
249                             nprim_icd += Q.nprim12[cd + (++icd)];
250                             PRIM_PTR_INT__k_s_k_s += 1296;
251                             PRIM_PTR_INT__l_s_k_s += 1620;
252                             PRIM_PTR_INT__m_s_k_s += 1980;
253                             PRIM_PTR_INT__n_s_k_s += 2376;
254                             PRIM_PTR_INT__o_s_k_s += 2808;
255                             PRIM_PTR_INT__q_s_k_s += 3276;
256                             PRIM_PTR_INT__r_s_k_s += 3780;
257                             PRIM_PTR_INT__t_s_k_s += 4320;
258                         }
259                         iprimcd++;
260                         for(n = 1; n < SIMINT_SIMD_LEN; ++n)
261                         {
262                             if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
263                             {
264                                 shelloffsets[n] = shelloffsets[n-1] + 1;
265                                 lastoffset++;
266                                 nprim_icd += Q.nprim12[cd + (++icd)];
267                             }
268                             else
269                                 shelloffsets[n] = shelloffsets[n-1];
270                             iprimcd++;
271                         }
272                     }
273                     else
274                         iprimcd += SIMINT_SIMD_LEN;
275 
276                     // Do we have to compute this vector (or has it been screened out)?
277                     // (not_screened != 0 means we have to do this vector)
278                     if(check_screen)
279                     {
280                         const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
281                         if(vmax < screen_tol)
282                         {
283                             PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
284                             PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
285                             PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
286                             PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
287                             PRIM_PTR_INT__o_s_k_s += lastoffset*2808;
288                             PRIM_PTR_INT__q_s_k_s += lastoffset*3276;
289                             PRIM_PTR_INT__r_s_k_s += lastoffset*3780;
290                             PRIM_PTR_INT__t_s_k_s += lastoffset*4320;
291                             continue;
292                         }
293                     }
294 
295                     const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
296                     const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
297                     const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
298                     const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
299 
300 
301                     /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
302                     SIMINT_DBLTYPE PQ[3];
303                     PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
304                     PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
305                     PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
306                     SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
307                     R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
308                     R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
309 
310                     const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
311                     const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
312                     const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
313                     const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
314                     const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
315                     const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
316                     const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
317 
318                     // NOTE: Minus sign!
319                     const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
320                     SIMINT_DBLTYPE aop_PQ[3];
321                     aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
322                     aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
323                     aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
324 
325                     SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
326                     SIMINT_DBLTYPE aoq_PQ[3];
327                     aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
328                     aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
329                     aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
330                     // Put a minus sign here so we don't have to in RR routines
331                     a_over_q = SIMINT_NEG(a_over_q);
332 
333 
334                     //////////////////////////////////////////////
335                     // Fjt function section
336                     // Maximum v value: 21
337                     //////////////////////////////////////////////
338                     // The parameter to the Fjt function
339                     const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
340 
341 
342                     const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
343 
344 
345                     boys_F_split(PRIM_INT__s_s_s_s, F_x, 21);
346                     SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
347                     prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
348                     for(n = 0; n <= 21; n++)
349                         PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
350 
351                     //////////////////////////////////////////////
352                     // Primitive integrals: Vertical recurrance
353                     //////////////////////////////////////////////
354 
355                     const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
356                     const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
357                     const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
358                     const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
359                     const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
360                     const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
361                     const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
362                     const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
363                     const SIMINT_DBLTYPE vrr_const_9_over_2p = SIMINT_MUL(const_9, one_over_2p);
364                     const SIMINT_DBLTYPE vrr_const_10_over_2p = SIMINT_MUL(const_10, one_over_2p);
365                     const SIMINT_DBLTYPE vrr_const_11_over_2p = SIMINT_MUL(const_11, one_over_2p);
366                     const SIMINT_DBLTYPE vrr_const_12_over_2p = SIMINT_MUL(const_12, one_over_2p);
367                     const SIMINT_DBLTYPE vrr_const_13_over_2p = SIMINT_MUL(const_13, one_over_2p);
368                     const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
369                     const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
370                     const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
371                     const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
372                     const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
373                     const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
374                     const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
375                     const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
376                     const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
377                     const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
378                     const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
379                     const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
380                     const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
381                     const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
382                     const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
383                     const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
384                     const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
385                     const SIMINT_DBLTYPE vrr_const_12_over_2pq = SIMINT_MUL(const_12, one_over_2pq);
386                     const SIMINT_DBLTYPE vrr_const_13_over_2pq = SIMINT_MUL(const_13, one_over_2pq);
387                     const SIMINT_DBLTYPE vrr_const_14_over_2pq = SIMINT_MUL(const_14, one_over_2pq);
388 
389 
390 
391                     // Forming PRIM_INT__p_s_s_s[21 * 3];
392                     for(n = 0; n < 21; ++n)  // loop over orders of auxiliary function
393                     {
394 
395                         PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
396                         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]);
397 
398                         PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
399                         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]);
400 
401                         PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
402                         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]);
403 
404                     }
405 
406 
407 
408                     // Forming PRIM_INT__d_s_s_s[20 * 6];
409                     for(n = 0; n < 20; ++n)  // loop over orders of auxiliary function
410                     {
411 
412                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
413                         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]);
414                         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]);
415 
416                         PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
417                         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]);
418 
419                         PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
420                         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]);
421 
422                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
423                         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]);
424                         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]);
425 
426                         PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
427                         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]);
428 
429                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
430                         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]);
431                         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]);
432 
433                     }
434 
435 
436 
437                     // Forming PRIM_INT__f_s_s_s[19 * 10];
438                     for(n = 0; n < 19; ++n)  // loop over orders of auxiliary function
439                     {
440 
441                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
442                         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]);
443                         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]);
444 
445                         PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
446                         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]);
447 
448                         PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
449                         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]);
450 
451                         PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
452                         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]);
453 
454                         PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
455                         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]);
456 
457                         PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
458                         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]);
459 
460                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
461                         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]);
462                         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]);
463 
464                         PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
465                         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]);
466 
467                         PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
468                         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]);
469 
470                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
471                         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]);
472                         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]);
473 
474                     }
475 
476 
477                     VRR_I_g_s_s_s(
478                             PRIM_INT__g_s_s_s,
479                             PRIM_INT__f_s_s_s,
480                             PRIM_INT__d_s_s_s,
481                             P_PA,
482                             a_over_p,
483                             aop_PQ,
484                             one_over_2p,
485                             18);
486 
487 
488                     VRR_I_h_s_s_s(
489                             PRIM_INT__h_s_s_s,
490                             PRIM_INT__g_s_s_s,
491                             PRIM_INT__f_s_s_s,
492                             P_PA,
493                             a_over_p,
494                             aop_PQ,
495                             one_over_2p,
496                             17);
497 
498 
499                     ostei_general_vrr1_I(6, 16,
500                             one_over_2p, a_over_p, aop_PQ, P_PA,
501                             PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
502 
503 
504                     ostei_general_vrr1_I(7, 15,
505                             one_over_2p, a_over_p, aop_PQ, P_PA,
506                             PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
507 
508 
509                     ostei_general_vrr_K(7, 0, 1, 0, 7,
510                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
511                             PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
512 
513 
514                     ostei_general_vrr_K(6, 0, 1, 0, 7,
515                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
516                             PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
517 
518 
519                     ostei_general_vrr_K(7, 0, 2, 0, 6,
520                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
521                             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);
522 
523 
524                     ostei_general_vrr_K(5, 0, 1, 0, 7,
525                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
526                             PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
527 
528 
529                     ostei_general_vrr_K(6, 0, 2, 0, 6,
530                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
531                             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);
532 
533 
534                     ostei_general_vrr_K(7, 0, 3, 0, 5,
535                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
536                             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);
537 
538 
539                     VRR_K_g_s_p_s(
540                             PRIM_INT__g_s_p_s,
541                             PRIM_INT__g_s_s_s,
542                             PRIM_INT__f_s_s_s,
543                             Q_PA,
544                             aoq_PQ,
545                             one_over_2pq,
546                             7);
547 
548 
549                     ostei_general_vrr_K(5, 0, 2, 0, 6,
550                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
551                             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);
552 
553 
554                     ostei_general_vrr_K(6, 0, 3, 0, 5,
555                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
556                             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);
557 
558 
559                     ostei_general_vrr_K(7, 0, 4, 0, 4,
560                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
561                             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);
562 
563 
564                     VRR_K_f_s_p_s(
565                             PRIM_INT__f_s_p_s,
566                             PRIM_INT__f_s_s_s,
567                             PRIM_INT__d_s_s_s,
568                             Q_PA,
569                             aoq_PQ,
570                             one_over_2pq,
571                             7);
572 
573 
574                     ostei_general_vrr_K(4, 0, 2, 0, 6,
575                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
576                             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);
577 
578 
579                     ostei_general_vrr_K(5, 0, 3, 0, 5,
580                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
581                             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);
582 
583 
584                     ostei_general_vrr_K(6, 0, 4, 0, 4,
585                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
586                             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);
587 
588 
589                     ostei_general_vrr_K(7, 0, 5, 0, 3,
590                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
591                             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);
592 
593 
594 
595                     // Forming PRIM_INT__d_s_p_s[7 * 18];
596                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
597                     {
598 
599                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
600                         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]);
601                         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]);
602 
603                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
604                         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]);
605 
606                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
607                         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]);
608 
609                         PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
610                         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]);
611                         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]);
612 
613                         PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
614                         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]);
615                         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]);
616 
617                         PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
618                         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]);
619 
620                         PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
621                         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]);
622                         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]);
623 
624                         PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
625                         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]);
626 
627                         PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
628                         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]);
629                         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]);
630 
631                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
632                         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]);
633 
634                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
635                         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]);
636                         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]);
637 
638                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
639                         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]);
640 
641                         PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
642                         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]);
643 
644                         PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
645                         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]);
646                         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]);
647 
648                         PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
649                         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]);
650                         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]);
651 
652                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
653                         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]);
654 
655                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
656                         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]);
657 
658                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
659                         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]);
660                         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]);
661 
662                     }
663 
664 
665                     VRR_K_f_s_d_s(
666                             PRIM_INT__f_s_d_s,
667                             PRIM_INT__f_s_p_s,
668                             PRIM_INT__f_s_s_s,
669                             PRIM_INT__d_s_p_s,
670                             Q_PA,
671                             a_over_q,
672                             aoq_PQ,
673                             one_over_2pq,
674                             one_over_2q,
675                             6);
676 
677 
678                     ostei_general_vrr_K(4, 0, 3, 0, 5,
679                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
680                             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);
681 
682 
683                     ostei_general_vrr_K(5, 0, 4, 0, 4,
684                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
685                             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);
686 
687 
688                     ostei_general_vrr_K(6, 0, 5, 0, 3,
689                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
690                             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);
691 
692 
693                     ostei_general_vrr_K(7, 0, 6, 0, 2,
694                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
695                             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);
696 
697 
698 
699                     // Forming PRIM_INT__p_s_p_s[7 * 9];
700                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
701                     {
702 
703                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
704                         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]);
705                         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]);
706 
707                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
708                         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]);
709 
710                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
711                         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]);
712 
713                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 1]);
714                         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]);
715 
716                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
717                         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]);
718                         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]);
719 
720                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
721                         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]);
722 
723                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 2]);
724                         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]);
725 
726                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 2]);
727                         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]);
728 
729                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
730                         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]);
731                         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]);
732 
733                     }
734 
735 
736                     VRR_K_d_s_d_s(
737                             PRIM_INT__d_s_d_s,
738                             PRIM_INT__d_s_p_s,
739                             PRIM_INT__d_s_s_s,
740                             PRIM_INT__p_s_p_s,
741                             Q_PA,
742                             a_over_q,
743                             aoq_PQ,
744                             one_over_2pq,
745                             one_over_2q,
746                             6);
747 
748 
749                     ostei_general_vrr_K(3, 0, 3, 0, 5,
750                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
751                             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);
752 
753 
754                     ostei_general_vrr_K(4, 0, 4, 0, 4,
755                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
756                             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);
757 
758 
759                     ostei_general_vrr_K(5, 0, 5, 0, 3,
760                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
761                             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);
762 
763 
764                     ostei_general_vrr_K(6, 0, 6, 0, 2,
765                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
766                             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);
767 
768 
769                     ostei_general_vrr_K(7, 0, 7, 0, 1,
770                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
771                             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);
772 
773 
774                     ostei_general_vrr1_I(8, 14,
775                             one_over_2p, a_over_p, aop_PQ, P_PA,
776                             PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
777 
778 
779                     ostei_general_vrr_K(8, 0, 1, 0, 7,
780                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
781                             PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
782 
783 
784                     ostei_general_vrr_K(8, 0, 2, 0, 6,
785                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
786                             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);
787 
788 
789                     ostei_general_vrr_K(8, 0, 3, 0, 5,
790                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
791                             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);
792 
793 
794                     ostei_general_vrr_K(8, 0, 4, 0, 4,
795                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
796                             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);
797 
798 
799                     ostei_general_vrr_K(8, 0, 5, 0, 3,
800                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
801                             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);
802 
803 
804                     ostei_general_vrr_K(8, 0, 6, 0, 2,
805                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
806                             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);
807 
808 
809                     ostei_general_vrr_K(8, 0, 7, 0, 1,
810                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
811                             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);
812 
813 
814                     ostei_general_vrr1_I(9, 13,
815                             one_over_2p, a_over_p, aop_PQ, P_PA,
816                             PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
817 
818 
819                     ostei_general_vrr_K(9, 0, 1, 0, 7,
820                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
821                             PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
822 
823 
824                     ostei_general_vrr_K(9, 0, 2, 0, 6,
825                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
826                             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);
827 
828 
829                     ostei_general_vrr_K(9, 0, 3, 0, 5,
830                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
831                             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);
832 
833 
834                     ostei_general_vrr_K(9, 0, 4, 0, 4,
835                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
836                             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);
837 
838 
839                     ostei_general_vrr_K(9, 0, 5, 0, 3,
840                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
841                             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);
842 
843 
844                     ostei_general_vrr_K(9, 0, 6, 0, 2,
845                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
846                             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);
847 
848 
849                     ostei_general_vrr_K(9, 0, 7, 0, 1,
850                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
851                             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);
852 
853 
854                     ostei_general_vrr1_I(10, 12,
855                             one_over_2p, a_over_p, aop_PQ, P_PA,
856                             PRIM_INT__m_s_s_s, PRIM_INT__l_s_s_s, PRIM_INT__n_s_s_s);
857 
858 
859                     ostei_general_vrr_K(10, 0, 1, 0, 7,
860                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
861                             PRIM_INT__n_s_s_s, NULL, NULL, PRIM_INT__m_s_s_s, NULL, PRIM_INT__n_s_p_s);
862 
863 
864                     ostei_general_vrr_K(10, 0, 2, 0, 6,
865                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
866                             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);
867 
868 
869                     ostei_general_vrr_K(10, 0, 3, 0, 5,
870                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
871                             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);
872 
873 
874                     ostei_general_vrr_K(10, 0, 4, 0, 4,
875                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
876                             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);
877 
878 
879                     ostei_general_vrr_K(10, 0, 5, 0, 3,
880                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
881                             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);
882 
883 
884                     ostei_general_vrr_K(10, 0, 6, 0, 2,
885                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
886                             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);
887 
888 
889                     ostei_general_vrr_K(10, 0, 7, 0, 1,
890                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
891                             PRIM_INT__n_s_i_s, PRIM_INT__n_s_h_s, NULL, PRIM_INT__m_s_i_s, NULL, PRIM_INT__n_s_k_s);
892 
893 
894                     ostei_general_vrr1_I(11, 11,
895                             one_over_2p, a_over_p, aop_PQ, P_PA,
896                             PRIM_INT__n_s_s_s, PRIM_INT__m_s_s_s, PRIM_INT__o_s_s_s);
897 
898 
899                     ostei_general_vrr_K(11, 0, 1, 0, 7,
900                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
901                             PRIM_INT__o_s_s_s, NULL, NULL, PRIM_INT__n_s_s_s, NULL, PRIM_INT__o_s_p_s);
902 
903 
904                     ostei_general_vrr_K(11, 0, 2, 0, 6,
905                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
906                             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);
907 
908 
909                     ostei_general_vrr_K(11, 0, 3, 0, 5,
910                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
911                             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);
912 
913 
914                     ostei_general_vrr_K(11, 0, 4, 0, 4,
915                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
916                             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);
917 
918 
919                     ostei_general_vrr_K(11, 0, 5, 0, 3,
920                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
921                             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);
922 
923 
924                     ostei_general_vrr_K(11, 0, 6, 0, 2,
925                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
926                             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);
927 
928 
929                     ostei_general_vrr_K(11, 0, 7, 0, 1,
930                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
931                             PRIM_INT__o_s_i_s, PRIM_INT__o_s_h_s, NULL, PRIM_INT__n_s_i_s, NULL, PRIM_INT__o_s_k_s);
932 
933 
934                     ostei_general_vrr1_I(12, 10,
935                             one_over_2p, a_over_p, aop_PQ, P_PA,
936                             PRIM_INT__o_s_s_s, PRIM_INT__n_s_s_s, PRIM_INT__q_s_s_s);
937 
938 
939                     ostei_general_vrr_K(12, 0, 1, 0, 7,
940                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
941                             PRIM_INT__q_s_s_s, NULL, NULL, PRIM_INT__o_s_s_s, NULL, PRIM_INT__q_s_p_s);
942 
943 
944                     ostei_general_vrr_K(12, 0, 2, 0, 6,
945                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
946                             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);
947 
948 
949                     ostei_general_vrr_K(12, 0, 3, 0, 5,
950                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
951                             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);
952 
953 
954                     ostei_general_vrr_K(12, 0, 4, 0, 4,
955                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
956                             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);
957 
958 
959                     ostei_general_vrr_K(12, 0, 5, 0, 3,
960                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
961                             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);
962 
963 
964                     ostei_general_vrr_K(12, 0, 6, 0, 2,
965                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
966                             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);
967 
968 
969                     ostei_general_vrr_K(12, 0, 7, 0, 1,
970                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
971                             PRIM_INT__q_s_i_s, PRIM_INT__q_s_h_s, NULL, PRIM_INT__o_s_i_s, NULL, PRIM_INT__q_s_k_s);
972 
973 
974                     ostei_general_vrr1_I(13, 9,
975                             one_over_2p, a_over_p, aop_PQ, P_PA,
976                             PRIM_INT__q_s_s_s, PRIM_INT__o_s_s_s, PRIM_INT__r_s_s_s);
977 
978 
979                     ostei_general_vrr_K(13, 0, 1, 0, 7,
980                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
981                             PRIM_INT__r_s_s_s, NULL, NULL, PRIM_INT__q_s_s_s, NULL, PRIM_INT__r_s_p_s);
982 
983 
984                     ostei_general_vrr_K(13, 0, 2, 0, 6,
985                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
986                             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);
987 
988 
989                     ostei_general_vrr_K(13, 0, 3, 0, 5,
990                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
991                             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);
992 
993 
994                     ostei_general_vrr_K(13, 0, 4, 0, 4,
995                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
996                             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);
997 
998 
999                     ostei_general_vrr_K(13, 0, 5, 0, 3,
1000                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1001                             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);
1002 
1003 
1004                     ostei_general_vrr_K(13, 0, 6, 0, 2,
1005                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1006                             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);
1007 
1008 
1009                     ostei_general_vrr_K(13, 0, 7, 0, 1,
1010                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1011                             PRIM_INT__r_s_i_s, PRIM_INT__r_s_h_s, NULL, PRIM_INT__q_s_i_s, NULL, PRIM_INT__r_s_k_s);
1012 
1013 
1014                     ostei_general_vrr1_I(14, 8,
1015                             one_over_2p, a_over_p, aop_PQ, P_PA,
1016                             PRIM_INT__r_s_s_s, PRIM_INT__q_s_s_s, PRIM_INT__t_s_s_s);
1017 
1018 
1019                     ostei_general_vrr_K(14, 0, 1, 0, 7,
1020                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1021                             PRIM_INT__t_s_s_s, NULL, NULL, PRIM_INT__r_s_s_s, NULL, PRIM_INT__t_s_p_s);
1022 
1023 
1024                     ostei_general_vrr_K(14, 0, 2, 0, 6,
1025                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1026                             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);
1027 
1028 
1029                     ostei_general_vrr_K(14, 0, 3, 0, 5,
1030                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1031                             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);
1032 
1033 
1034                     ostei_general_vrr_K(14, 0, 4, 0, 4,
1035                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1036                             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);
1037 
1038 
1039                     ostei_general_vrr_K(14, 0, 5, 0, 3,
1040                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1041                             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);
1042 
1043 
1044                     ostei_general_vrr_K(14, 0, 6, 0, 2,
1045                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1046                             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);
1047 
1048 
1049                     ostei_general_vrr_K(14, 0, 7, 0, 1,
1050                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1051                             PRIM_INT__t_s_i_s, PRIM_INT__t_s_h_s, NULL, PRIM_INT__r_s_i_s, NULL, PRIM_INT__t_s_k_s);
1052 
1053 
1054 
1055 
1056                     ////////////////////////////////////
1057                     // Accumulate contracted integrals
1058                     ////////////////////////////////////
1059                     if(lastoffset == 0)
1060                     {
1061                         contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1062                         contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1063                         contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1064                         contract_all(2376, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1065                         contract_all(2808, PRIM_INT__o_s_k_s, PRIM_PTR_INT__o_s_k_s);
1066                         contract_all(3276, PRIM_INT__q_s_k_s, PRIM_PTR_INT__q_s_k_s);
1067                         contract_all(3780, PRIM_INT__r_s_k_s, PRIM_PTR_INT__r_s_k_s);
1068                         contract_all(4320, PRIM_INT__t_s_k_s, PRIM_PTR_INT__t_s_k_s);
1069                     }
1070                     else
1071                     {
1072                         contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1073                         contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1074                         contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1075                         contract(2376, shelloffsets, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1076                         contract(2808, shelloffsets, PRIM_INT__o_s_k_s, PRIM_PTR_INT__o_s_k_s);
1077                         contract(3276, shelloffsets, PRIM_INT__q_s_k_s, PRIM_PTR_INT__q_s_k_s);
1078                         contract(3780, shelloffsets, PRIM_INT__r_s_k_s, PRIM_PTR_INT__r_s_k_s);
1079                         contract(4320, shelloffsets, PRIM_INT__t_s_k_s, PRIM_PTR_INT__t_s_k_s);
1080                         PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1081                         PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1082                         PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1083                         PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
1084                         PRIM_PTR_INT__o_s_k_s += lastoffset*2808;
1085                         PRIM_PTR_INT__q_s_k_s += lastoffset*3276;
1086                         PRIM_PTR_INT__r_s_k_s += lastoffset*3780;
1087                         PRIM_PTR_INT__t_s_k_s += lastoffset*4320;
1088                     }
1089 
1090                 }  // close loop over j
1091             }  // close loop over i
1092 
1093             //Advance to the next batch
1094             jstart = SIMINT_SIMD_ROUND(jend);
1095 
1096             //////////////////////////////////////////////
1097             // Contracted integrals: Horizontal recurrance
1098             //////////////////////////////////////////////
1099 
1100 
1101             const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1102 
1103 
1104             for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1105             {
1106 
1107                 // set up HRR pointers
1108                 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1109                 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1110                 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1111                 double const * restrict HRR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
1112                 double const * restrict HRR_INT__o_s_k_s = INT__o_s_k_s + abcd * 2808;
1113                 double const * restrict HRR_INT__q_s_k_s = INT__q_s_k_s + abcd * 3276;
1114                 double const * restrict HRR_INT__r_s_k_s = INT__r_s_k_s + abcd * 3780;
1115                 double const * restrict HRR_INT__t_s_k_s = INT__t_s_k_s + abcd * 4320;
1116                 double * restrict HRR_INT__k_k_k_s = INT__k_k_k_s + real_abcd * 46656;
1117 
1118                 // form INT__k_p_k_s
1119                 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);
1120 
1121                 // form INT__l_p_k_s
1122                 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);
1123 
1124                 // form INT__m_p_k_s
1125                 ostei_general_hrr_J(9, 1, 7, 0, hAB, HRR_INT__n_s_k_s, HRR_INT__m_s_k_s, HRR_INT__m_p_k_s);
1126 
1127                 // form INT__n_p_k_s
1128                 ostei_general_hrr_J(10, 1, 7, 0, hAB, HRR_INT__o_s_k_s, HRR_INT__n_s_k_s, HRR_INT__n_p_k_s);
1129 
1130                 // form INT__o_p_k_s
1131                 ostei_general_hrr_J(11, 1, 7, 0, hAB, HRR_INT__q_s_k_s, HRR_INT__o_s_k_s, HRR_INT__o_p_k_s);
1132 
1133                 // form INT__q_p_k_s
1134                 ostei_general_hrr_J(12, 1, 7, 0, hAB, HRR_INT__r_s_k_s, HRR_INT__q_s_k_s, HRR_INT__q_p_k_s);
1135 
1136                 // form INT__r_p_k_s
1137                 ostei_general_hrr_J(13, 1, 7, 0, hAB, HRR_INT__t_s_k_s, HRR_INT__r_s_k_s, HRR_INT__r_p_k_s);
1138 
1139                 // form INT__k_d_k_s
1140                 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);
1141 
1142                 // form INT__l_d_k_s
1143                 ostei_general_hrr_J(8, 2, 7, 0, hAB, HRR_INT__m_p_k_s, HRR_INT__l_p_k_s, HRR_INT__l_d_k_s);
1144 
1145                 // form INT__m_d_k_s
1146                 ostei_general_hrr_J(9, 2, 7, 0, hAB, HRR_INT__n_p_k_s, HRR_INT__m_p_k_s, HRR_INT__m_d_k_s);
1147 
1148                 // form INT__n_d_k_s
1149                 ostei_general_hrr_J(10, 2, 7, 0, hAB, HRR_INT__o_p_k_s, HRR_INT__n_p_k_s, HRR_INT__n_d_k_s);
1150 
1151                 // form INT__o_d_k_s
1152                 ostei_general_hrr_J(11, 2, 7, 0, hAB, HRR_INT__q_p_k_s, HRR_INT__o_p_k_s, HRR_INT__o_d_k_s);
1153 
1154                 // form INT__q_d_k_s
1155                 ostei_general_hrr_J(12, 2, 7, 0, hAB, HRR_INT__r_p_k_s, HRR_INT__q_p_k_s, HRR_INT__q_d_k_s);
1156 
1157                 // form INT__k_f_k_s
1158                 ostei_general_hrr_J(7, 3, 7, 0, hAB, HRR_INT__l_d_k_s, HRR_INT__k_d_k_s, HRR_INT__k_f_k_s);
1159 
1160                 // form INT__l_f_k_s
1161                 ostei_general_hrr_J(8, 3, 7, 0, hAB, HRR_INT__m_d_k_s, HRR_INT__l_d_k_s, HRR_INT__l_f_k_s);
1162 
1163                 // form INT__m_f_k_s
1164                 ostei_general_hrr_J(9, 3, 7, 0, hAB, HRR_INT__n_d_k_s, HRR_INT__m_d_k_s, HRR_INT__m_f_k_s);
1165 
1166                 // form INT__n_f_k_s
1167                 ostei_general_hrr_J(10, 3, 7, 0, hAB, HRR_INT__o_d_k_s, HRR_INT__n_d_k_s, HRR_INT__n_f_k_s);
1168 
1169                 // form INT__o_f_k_s
1170                 ostei_general_hrr_J(11, 3, 7, 0, hAB, HRR_INT__q_d_k_s, HRR_INT__o_d_k_s, HRR_INT__o_f_k_s);
1171 
1172                 // form INT__k_g_k_s
1173                 ostei_general_hrr_J(7, 4, 7, 0, hAB, HRR_INT__l_f_k_s, HRR_INT__k_f_k_s, HRR_INT__k_g_k_s);
1174 
1175                 // form INT__l_g_k_s
1176                 ostei_general_hrr_J(8, 4, 7, 0, hAB, HRR_INT__m_f_k_s, HRR_INT__l_f_k_s, HRR_INT__l_g_k_s);
1177 
1178                 // form INT__m_g_k_s
1179                 ostei_general_hrr_J(9, 4, 7, 0, hAB, HRR_INT__n_f_k_s, HRR_INT__m_f_k_s, HRR_INT__m_g_k_s);
1180 
1181                 // form INT__n_g_k_s
1182                 ostei_general_hrr_J(10, 4, 7, 0, hAB, HRR_INT__o_f_k_s, HRR_INT__n_f_k_s, HRR_INT__n_g_k_s);
1183 
1184                 // form INT__k_h_k_s
1185                 ostei_general_hrr_J(7, 5, 7, 0, hAB, HRR_INT__l_g_k_s, HRR_INT__k_g_k_s, HRR_INT__k_h_k_s);
1186 
1187                 // form INT__l_h_k_s
1188                 ostei_general_hrr_J(8, 5, 7, 0, hAB, HRR_INT__m_g_k_s, HRR_INT__l_g_k_s, HRR_INT__l_h_k_s);
1189 
1190                 // form INT__m_h_k_s
1191                 ostei_general_hrr_J(9, 5, 7, 0, hAB, HRR_INT__n_g_k_s, HRR_INT__m_g_k_s, HRR_INT__m_h_k_s);
1192 
1193                 // form INT__k_i_k_s
1194                 ostei_general_hrr_J(7, 6, 7, 0, hAB, HRR_INT__l_h_k_s, HRR_INT__k_h_k_s, HRR_INT__k_i_k_s);
1195 
1196                 // form INT__l_i_k_s
1197                 ostei_general_hrr_J(8, 6, 7, 0, hAB, HRR_INT__m_h_k_s, HRR_INT__l_h_k_s, HRR_INT__l_i_k_s);
1198 
1199                 // form INT__k_k_k_s
1200                 ostei_general_hrr_J(7, 7, 7, 0, hAB, HRR_INT__l_i_k_s, HRR_INT__k_i_k_s, HRR_INT__k_k_k_s);
1201 
1202 
1203             }  // close HRR loop
1204 
1205 
1206         }   // close loop cdbatch
1207 
1208         istart = iend;
1209     }  // close loop over ab
1210 
1211     return P.nshell12_clip * Q.nshell12_clip;
1212 }
1213 
ostei_k_k_s_k(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_s_k)1214 int ostei_k_k_s_k(struct simint_multi_shellpair const P,
1215                   struct simint_multi_shellpair const Q,
1216                   double screen_tol,
1217                   double * const restrict work,
1218                   double * const restrict INT__k_k_s_k)
1219 {
1220     double Q_AB[3*Q.nshell12];
1221     struct simint_multi_shellpair Q_tmp = Q;
1222     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1223     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1224     Q_tmp.AB_x = Q_AB;
1225     Q_tmp.AB_y = Q_AB + Q.nshell12;
1226     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1227 
1228     for(int i = 0; i < Q.nshell12; i++)
1229     {
1230         Q_tmp.AB_x[i] = -Q.AB_x[i];
1231         Q_tmp.AB_y[i] = -Q.AB_y[i];
1232         Q_tmp.AB_z[i] = -Q.AB_z[i];
1233     }
1234 
1235     int ret = ostei_k_k_k_s(P, Q_tmp, screen_tol, work, INT__k_k_s_k);
1236     double buffer[46656] SIMINT_ALIGN_ARRAY_DBL;
1237 
1238     for(int q = 0; q < ret; q++)
1239     {
1240         int idx = 0;
1241         for(int a = 0; a < 36; ++a)
1242         for(int b = 0; b < 36; ++b)
1243         for(int c = 0; c < 1; ++c)
1244         for(int d = 0; d < 36; ++d)
1245             buffer[idx++] = INT__k_k_s_k[q*46656+a*1296+b*36+d*1+c];
1246 
1247         memcpy(INT__k_k_s_k+q*46656, buffer, 46656*sizeof(double));
1248     }
1249 
1250     return ret;
1251 }
1252 
1253