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_i_f_g_f(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_f_g_f)8 int ostei_i_f_g_f(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__i_f_g_f)
13 {
14 
15     SIMINT_ASSUME_ALIGN_DBL(work);
16     SIMINT_ASSUME_ALIGN_DBL(INT__i_f_g_f);
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__i_s_g_s = work + (SIMINT_NSHELL_SIMD * 0);
30     double * const INT__i_s_h_s = work + (SIMINT_NSHELL_SIMD * 420);
31     double * const INT__i_s_i_s = work + (SIMINT_NSHELL_SIMD * 1008);
32     double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 1792);
33     double * const INT__k_s_g_s = work + (SIMINT_NSHELL_SIMD * 2800);
34     double * const INT__k_s_h_s = work + (SIMINT_NSHELL_SIMD * 3340);
35     double * const INT__k_s_i_s = work + (SIMINT_NSHELL_SIMD * 4096);
36     double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 5104);
37     double * const INT__l_s_g_s = work + (SIMINT_NSHELL_SIMD * 6400);
38     double * const INT__l_s_h_s = work + (SIMINT_NSHELL_SIMD * 7075);
39     double * const INT__l_s_i_s = work + (SIMINT_NSHELL_SIMD * 8020);
40     double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 9280);
41     double * const INT__m_s_g_s = work + (SIMINT_NSHELL_SIMD * 10900);
42     double * const INT__m_s_h_s = work + (SIMINT_NSHELL_SIMD * 11725);
43     double * const INT__m_s_i_s = work + (SIMINT_NSHELL_SIMD * 12880);
44     double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 14420);
45     SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*16400);
46     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
47     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 17;
48     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 38;
49     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 86;
50     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 149;
51     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 257;
52     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 347;
53     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 473;
54     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 689;
55     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 989;
56     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 1129;
57     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 1339;
58     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 1699;
59     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 2199;
60     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 2799;
61     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 2994;
62     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 3309;
63     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 3849;
64     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 4599;
65     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 5499;
66     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 6444;
67     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 6696;
68     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 7137;
69     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 7893;
70     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 8943;
71     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 10203;
72     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 11526;
73     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 12702;
74     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 13010;
75     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 13598;
76     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 14606;
77     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 16006;
78     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 17686;
79     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 19450;
80     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 21018;
81     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 22026;
82     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 22386;
83     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 23142;
84     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 24438;
85     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 26238;
86     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 28398;
87     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 30666;
88     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 32682;
89     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 33978;
90     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 34383;
91     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 35328;
92     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 36948;
93     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 39198;
94     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 41898;
95     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 44733;
96     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 47253;
97     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 48873;
98     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 49313;
99     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 50468;
100     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 52448;
101     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 55198;
102     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 58498;
103     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 61963;
104     SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 65043;
105     double * const hrrwork = (double *)(primwork + 67023);
106     double * const HRR_INT__i_p_g_s = hrrwork + 0;
107     double * const HRR_INT__i_p_h_s = hrrwork + 1260;
108     double * const HRR_INT__i_p_i_s = hrrwork + 3024;
109     double * const HRR_INT__i_p_k_s = hrrwork + 5376;
110     double * const HRR_INT__i_d_g_s = hrrwork + 8400;
111     double * const HRR_INT__i_d_h_s = hrrwork + 10920;
112     double * const HRR_INT__i_d_i_s = hrrwork + 14448;
113     double * const HRR_INT__i_d_k_s = hrrwork + 19152;
114     double * const HRR_INT__i_f_g_s = hrrwork + 25200;
115     double * const HRR_INT__i_f_g_p = hrrwork + 29400;
116     double * const HRR_INT__i_f_g_d = hrrwork + 42000;
117     double * const HRR_INT__i_f_h_s = hrrwork + 67200;
118     double * const HRR_INT__i_f_h_p = hrrwork + 73080;
119     double * const HRR_INT__i_f_h_d = hrrwork + 90720;
120     double * const HRR_INT__i_f_i_s = hrrwork + 126000;
121     double * const HRR_INT__i_f_i_p = hrrwork + 133840;
122     double * const HRR_INT__i_f_k_s = hrrwork + 157360;
123     double * const HRR_INT__k_p_g_s = hrrwork + 167440;
124     double * const HRR_INT__k_p_h_s = hrrwork + 169060;
125     double * const HRR_INT__k_p_i_s = hrrwork + 171328;
126     double * const HRR_INT__k_p_k_s = hrrwork + 174352;
127     double * const HRR_INT__k_d_g_s = hrrwork + 178240;
128     double * const HRR_INT__k_d_h_s = hrrwork + 181480;
129     double * const HRR_INT__k_d_i_s = hrrwork + 186016;
130     double * const HRR_INT__k_d_k_s = hrrwork + 192064;
131     double * const HRR_INT__l_p_g_s = hrrwork + 199840;
132     double * const HRR_INT__l_p_h_s = hrrwork + 201865;
133     double * const HRR_INT__l_p_i_s = hrrwork + 204700;
134     double * const HRR_INT__l_p_k_s = hrrwork + 208480;
135 
136 
137     // Create constants
138     const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
139     const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
140     const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
141     const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
142     const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
143     const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
144     const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
145     const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
146     const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
147     const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
148 
149 
150     ////////////////////////////////////////
151     // Loop over shells and primitives
152     ////////////////////////////////////////
153 
154     real_abcd = 0;
155     istart = 0;
156     for(ab = 0; ab < P.nshell12_clip; ++ab)
157     {
158         const int iend = istart + P.nprim12[ab];
159 
160         cd = 0;
161         jstart = 0;
162 
163         for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
164         {
165             const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
166             int jend = jstart;
167             for(i = 0; i < nshellbatch; i++)
168                 jend += Q.nprim12[cd+i];
169 
170             // Clear the beginning of the workspace (where we are accumulating integrals)
171             memset(work, 0, SIMINT_NSHELL_SIMD * 16400 * sizeof(double));
172             abcd = 0;
173 
174 
175             for(i = istart; i < iend; ++i)
176             {
177                 SIMINT_DBLTYPE bra_screen_max;  // only used if check_screen
178 
179                 if(check_screen)
180                 {
181                     // Skip this whole thing if always insignificant
182                     if((P.screen[i] * Q.screen_max) < screen_tol)
183                         continue;
184                     bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
185                 }
186 
187                 icd = 0;
188                 iprimcd = 0;
189                 nprim_icd = Q.nprim12[cd];
190                 double * restrict PRIM_PTR_INT__i_s_g_s = INT__i_s_g_s + abcd * 420;
191                 double * restrict PRIM_PTR_INT__i_s_h_s = INT__i_s_h_s + abcd * 588;
192                 double * restrict PRIM_PTR_INT__i_s_i_s = INT__i_s_i_s + abcd * 784;
193                 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
194                 double * restrict PRIM_PTR_INT__k_s_g_s = INT__k_s_g_s + abcd * 540;
195                 double * restrict PRIM_PTR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
196                 double * restrict PRIM_PTR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
197                 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
198                 double * restrict PRIM_PTR_INT__l_s_g_s = INT__l_s_g_s + abcd * 675;
199                 double * restrict PRIM_PTR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
200                 double * restrict PRIM_PTR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
201                 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
202                 double * restrict PRIM_PTR_INT__m_s_g_s = INT__m_s_g_s + abcd * 825;
203                 double * restrict PRIM_PTR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
204                 double * restrict PRIM_PTR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
205                 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
206 
207 
208 
209                 // Load these one per loop over i
210                 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
211                 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
212                 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
213 
214                 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
215 
216                 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
217                 {
218                     // calculate the shell offsets
219                     // these are the offset from the shell pointed to by cd
220                     // for each element
221                     int shelloffsets[SIMINT_SIMD_LEN] = {0};
222                     int lastoffset = 0;
223                     const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
224 
225                     if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
226                     {
227                         // Handle if the first element of the vector is a new shell
228                         if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
229                         {
230                             nprim_icd += Q.nprim12[cd + (++icd)];
231                             PRIM_PTR_INT__i_s_g_s += 420;
232                             PRIM_PTR_INT__i_s_h_s += 588;
233                             PRIM_PTR_INT__i_s_i_s += 784;
234                             PRIM_PTR_INT__i_s_k_s += 1008;
235                             PRIM_PTR_INT__k_s_g_s += 540;
236                             PRIM_PTR_INT__k_s_h_s += 756;
237                             PRIM_PTR_INT__k_s_i_s += 1008;
238                             PRIM_PTR_INT__k_s_k_s += 1296;
239                             PRIM_PTR_INT__l_s_g_s += 675;
240                             PRIM_PTR_INT__l_s_h_s += 945;
241                             PRIM_PTR_INT__l_s_i_s += 1260;
242                             PRIM_PTR_INT__l_s_k_s += 1620;
243                             PRIM_PTR_INT__m_s_g_s += 825;
244                             PRIM_PTR_INT__m_s_h_s += 1155;
245                             PRIM_PTR_INT__m_s_i_s += 1540;
246                             PRIM_PTR_INT__m_s_k_s += 1980;
247                         }
248                         iprimcd++;
249                         for(n = 1; n < SIMINT_SIMD_LEN; ++n)
250                         {
251                             if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
252                             {
253                                 shelloffsets[n] = shelloffsets[n-1] + 1;
254                                 lastoffset++;
255                                 nprim_icd += Q.nprim12[cd + (++icd)];
256                             }
257                             else
258                                 shelloffsets[n] = shelloffsets[n-1];
259                             iprimcd++;
260                         }
261                     }
262                     else
263                         iprimcd += SIMINT_SIMD_LEN;
264 
265                     // Do we have to compute this vector (or has it been screened out)?
266                     // (not_screened != 0 means we have to do this vector)
267                     if(check_screen)
268                     {
269                         const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
270                         if(vmax < screen_tol)
271                         {
272                             PRIM_PTR_INT__i_s_g_s += lastoffset*420;
273                             PRIM_PTR_INT__i_s_h_s += lastoffset*588;
274                             PRIM_PTR_INT__i_s_i_s += lastoffset*784;
275                             PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
276                             PRIM_PTR_INT__k_s_g_s += lastoffset*540;
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__l_s_g_s += lastoffset*675;
281                             PRIM_PTR_INT__l_s_h_s += lastoffset*945;
282                             PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
283                             PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
284                             PRIM_PTR_INT__m_s_g_s += lastoffset*825;
285                             PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
286                             PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
287                             PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
288                             continue;
289                         }
290                     }
291 
292                     const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
293                     const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
294                     const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
295                     const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
296 
297 
298                     /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
299                     SIMINT_DBLTYPE PQ[3];
300                     PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
301                     PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
302                     PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
303                     SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
304                     R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
305                     R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
306 
307                     const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
308                     const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
309                     const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
310                     const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
311                     const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
312                     const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
313                     const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
314 
315                     // NOTE: Minus sign!
316                     const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
317                     SIMINT_DBLTYPE aop_PQ[3];
318                     aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
319                     aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
320                     aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
321 
322                     SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
323                     SIMINT_DBLTYPE aoq_PQ[3];
324                     aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
325                     aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
326                     aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
327                     // Put a minus sign here so we don't have to in RR routines
328                     a_over_q = SIMINT_NEG(a_over_q);
329 
330 
331                     //////////////////////////////////////////////
332                     // Fjt function section
333                     // Maximum v value: 16
334                     //////////////////////////////////////////////
335                     // The parameter to the Fjt function
336                     const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
337 
338 
339                     const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
340 
341 
342                     boys_F_split(PRIM_INT__s_s_s_s, F_x, 16);
343                     SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
344                     prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
345                     for(n = 0; n <= 16; n++)
346                         PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
347 
348                     //////////////////////////////////////////////
349                     // Primitive integrals: Vertical recurrance
350                     //////////////////////////////////////////////
351 
352                     const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
353                     const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
354                     const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
355                     const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
356                     const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
357                     const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
358                     const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
359                     const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
360                     const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
361                     const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
362                     const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
363                     const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
364                     const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
365                     const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
366                     const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
367                     const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
368                     const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
369                     const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
370                     const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
371                     const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
372                     const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
373                     const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
374                     const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
375 
376 
377 
378                     // Forming PRIM_INT__p_s_s_s[16 * 3];
379                     for(n = 0; n < 16; ++n)  // loop over orders of auxiliary function
380                     {
381 
382                         PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
383                         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]);
384 
385                         PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
386                         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]);
387 
388                         PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
389                         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]);
390 
391                     }
392 
393 
394 
395                     // Forming PRIM_INT__d_s_s_s[15 * 6];
396                     for(n = 0; n < 15; ++n)  // loop over orders of auxiliary function
397                     {
398 
399                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
400                         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]);
401                         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]);
402 
403                         PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
404                         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]);
405 
406                         PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
407                         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]);
408 
409                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
410                         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]);
411                         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]);
412 
413                         PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
414                         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]);
415 
416                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
417                         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]);
418                         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]);
419 
420                     }
421 
422 
423 
424                     // Forming PRIM_INT__f_s_s_s[14 * 10];
425                     for(n = 0; n < 14; ++n)  // loop over orders of auxiliary function
426                     {
427 
428                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
429                         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]);
430                         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]);
431 
432                         PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
433                         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]);
434 
435                         PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
436                         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]);
437 
438                         PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
439                         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]);
440 
441                         PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
442                         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]);
443 
444                         PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
445                         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]);
446 
447                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
448                         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]);
449                         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]);
450 
451                         PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
452                         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]);
453 
454                         PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
455                         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]);
456 
457                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
458                         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]);
459                         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]);
460 
461                     }
462 
463 
464                     VRR_I_g_s_s_s(
465                             PRIM_INT__g_s_s_s,
466                             PRIM_INT__f_s_s_s,
467                             PRIM_INT__d_s_s_s,
468                             P_PA,
469                             a_over_p,
470                             aop_PQ,
471                             one_over_2p,
472                             13);
473 
474 
475                     VRR_I_h_s_s_s(
476                             PRIM_INT__h_s_s_s,
477                             PRIM_INT__g_s_s_s,
478                             PRIM_INT__f_s_s_s,
479                             P_PA,
480                             a_over_p,
481                             aop_PQ,
482                             one_over_2p,
483                             12);
484 
485 
486                     ostei_general_vrr1_I(6, 11,
487                             one_over_2p, a_over_p, aop_PQ, P_PA,
488                             PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
489 
490 
491                     ostei_general_vrr_K(6, 0, 1, 0, 7,
492                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
493                             PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
494 
495 
496                     ostei_general_vrr_K(5, 0, 1, 0, 7,
497                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
498                             PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
499 
500 
501                     ostei_general_vrr_K(6, 0, 2, 0, 6,
502                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
503                             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);
504 
505 
506                     VRR_K_g_s_p_s(
507                             PRIM_INT__g_s_p_s,
508                             PRIM_INT__g_s_s_s,
509                             PRIM_INT__f_s_s_s,
510                             Q_PA,
511                             aoq_PQ,
512                             one_over_2pq,
513                             7);
514 
515 
516                     ostei_general_vrr_K(5, 0, 2, 0, 6,
517                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
518                             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);
519 
520 
521                     ostei_general_vrr_K(6, 0, 3, 0, 5,
522                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
523                             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);
524 
525 
526                     VRR_K_f_s_p_s(
527                             PRIM_INT__f_s_p_s,
528                             PRIM_INT__f_s_s_s,
529                             PRIM_INT__d_s_s_s,
530                             Q_PA,
531                             aoq_PQ,
532                             one_over_2pq,
533                             7);
534 
535 
536                     ostei_general_vrr_K(4, 0, 2, 0, 6,
537                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
538                             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);
539 
540 
541                     ostei_general_vrr_K(5, 0, 3, 0, 5,
542                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
543                             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);
544 
545 
546                     ostei_general_vrr_K(6, 0, 4, 0, 4,
547                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
548                             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);
549 
550 
551 
552                     // Forming PRIM_INT__d_s_p_s[7 * 18];
553                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
554                     {
555 
556                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
557                         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]);
558                         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]);
559 
560                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
561                         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]);
562 
563                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
564                         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]);
565 
566                         PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
567                         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]);
568                         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]);
569 
570                         PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
571                         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]);
572                         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]);
573 
574                         PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
575                         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]);
576 
577                         PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
578                         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]);
579                         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]);
580 
581                         PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
582                         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]);
583 
584                         PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
585                         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]);
586                         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]);
587 
588                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
589                         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]);
590 
591                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
592                         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]);
593                         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]);
594 
595                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
596                         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]);
597 
598                         PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
599                         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]);
600 
601                         PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
602                         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]);
603                         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]);
604 
605                         PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
606                         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]);
607                         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]);
608 
609                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
610                         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]);
611 
612                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
613                         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]);
614 
615                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
616                         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]);
617                         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]);
618 
619                     }
620 
621 
622                     VRR_K_f_s_d_s(
623                             PRIM_INT__f_s_d_s,
624                             PRIM_INT__f_s_p_s,
625                             PRIM_INT__f_s_s_s,
626                             PRIM_INT__d_s_p_s,
627                             Q_PA,
628                             a_over_q,
629                             aoq_PQ,
630                             one_over_2pq,
631                             one_over_2q,
632                             6);
633 
634 
635                     ostei_general_vrr_K(4, 0, 3, 0, 5,
636                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
637                             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);
638 
639 
640                     ostei_general_vrr_K(5, 0, 4, 0, 4,
641                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
642                             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);
643 
644 
645                     ostei_general_vrr_K(6, 0, 5, 0, 3,
646                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
647                             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);
648 
649 
650                     ostei_general_vrr1_I(7, 10,
651                             one_over_2p, a_over_p, aop_PQ, P_PA,
652                             PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
653 
654 
655                     ostei_general_vrr_K(7, 0, 1, 0, 7,
656                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
657                             PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
658 
659 
660                     ostei_general_vrr_K(7, 0, 2, 0, 6,
661                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
662                             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);
663 
664 
665                     ostei_general_vrr_K(7, 0, 3, 0, 5,
666                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
667                             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);
668 
669 
670                     ostei_general_vrr_K(7, 0, 4, 0, 4,
671                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
672                             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);
673 
674 
675 
676                     // Forming PRIM_INT__p_s_p_s[7 * 9];
677                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
678                     {
679 
680                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
681                         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]);
682                         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]);
683 
684                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
685                         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]);
686 
687                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
688                         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]);
689 
690                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 1]);
691                         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]);
692 
693                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
694                         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]);
695                         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]);
696 
697                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
698                         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]);
699 
700                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 2]);
701                         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]);
702 
703                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 2]);
704                         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]);
705 
706                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
707                         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]);
708                         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]);
709 
710                     }
711 
712 
713                     VRR_K_d_s_d_s(
714                             PRIM_INT__d_s_d_s,
715                             PRIM_INT__d_s_p_s,
716                             PRIM_INT__d_s_s_s,
717                             PRIM_INT__p_s_p_s,
718                             Q_PA,
719                             a_over_q,
720                             aoq_PQ,
721                             one_over_2pq,
722                             one_over_2q,
723                             6);
724 
725 
726                     ostei_general_vrr_K(3, 0, 3, 0, 5,
727                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
728                             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);
729 
730 
731                     ostei_general_vrr_K(4, 0, 4, 0, 4,
732                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
733                             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);
734 
735 
736                     ostei_general_vrr_K(5, 0, 5, 0, 3,
737                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
738                             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);
739 
740 
741                     ostei_general_vrr_K(6, 0, 6, 0, 2,
742                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
743                             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);
744 
745 
746                     ostei_general_vrr_K(7, 0, 5, 0, 3,
747                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
748                             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);
749 
750 
751                     ostei_general_vrr1_I(8, 9,
752                             one_over_2p, a_over_p, aop_PQ, P_PA,
753                             PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
754 
755 
756                     ostei_general_vrr_K(8, 0, 1, 0, 7,
757                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
758                             PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
759 
760 
761                     ostei_general_vrr_K(8, 0, 2, 0, 6,
762                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
763                             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);
764 
765 
766                     ostei_general_vrr_K(8, 0, 3, 0, 5,
767                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
768                             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);
769 
770 
771                     ostei_general_vrr_K(8, 0, 4, 0, 4,
772                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
773                             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);
774 
775 
776 
777                     // Forming PRIM_INT__s_s_p_s[7 * 3];
778                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
779                     {
780 
781                         PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
782                         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]);
783 
784                         PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
785                         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]);
786 
787                         PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
788                         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]);
789 
790                     }
791 
792 
793 
794                     // Forming PRIM_INT__p_s_d_s[6 * 18];
795                     for(n = 0; n < 6; ++n)  // loop over orders of auxiliary function
796                     {
797 
798                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
799                         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]);
800                         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]);
801                         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]);
802 
803                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 1]);
804                         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]);
805                         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]);
806 
807                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 2]);
808                         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]);
809                         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]);
810 
811                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 3]);
812                         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]);
813                         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]);
814 
815                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
816                         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]);
817                         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]);
818                         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]);
819 
820                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 5]);
821                         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]);
822                         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]);
823 
824                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 6]);
825                         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]);
826                         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]);
827 
828                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 7]);
829                         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]);
830                         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]);
831 
832                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
833                         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]);
834                         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]);
835                         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]);
836 
837                     }
838 
839 
840                     VRR_K_d_s_f_s(
841                             PRIM_INT__d_s_f_s,
842                             PRIM_INT__d_s_d_s,
843                             PRIM_INT__d_s_p_s,
844                             PRIM_INT__p_s_d_s,
845                             Q_PA,
846                             a_over_q,
847                             aoq_PQ,
848                             one_over_2pq,
849                             one_over_2q,
850                             5);
851 
852 
853                     ostei_general_vrr_K(3, 0, 4, 0, 4,
854                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
855                             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);
856 
857 
858                     ostei_general_vrr_K(4, 0, 5, 0, 3,
859                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
860                             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);
861 
862 
863                     ostei_general_vrr_K(5, 0, 6, 0, 2,
864                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
865                             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);
866 
867 
868                     ostei_general_vrr_K(6, 0, 7, 0, 1,
869                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
870                             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);
871 
872 
873                     ostei_general_vrr_K(7, 0, 6, 0, 2,
874                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
875                             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);
876 
877 
878                     ostei_general_vrr_K(8, 0, 5, 0, 3,
879                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
880                             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);
881 
882 
883                     ostei_general_vrr1_I(9, 8,
884                             one_over_2p, a_over_p, aop_PQ, P_PA,
885                             PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
886 
887 
888                     ostei_general_vrr_K(9, 0, 1, 0, 7,
889                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
890                             PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
891 
892 
893                     ostei_general_vrr_K(9, 0, 2, 0, 6,
894                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
895                             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);
896 
897 
898                     ostei_general_vrr_K(9, 0, 3, 0, 5,
899                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
900                             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);
901 
902 
903                     ostei_general_vrr_K(9, 0, 4, 0, 4,
904                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
905                             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);
906 
907 
908                     ostei_general_vrr_K(7, 0, 7, 0, 1,
909                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
910                             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);
911 
912 
913                     ostei_general_vrr_K(8, 0, 6, 0, 2,
914                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
915                             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);
916 
917 
918                     ostei_general_vrr_K(9, 0, 5, 0, 3,
919                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
920                             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);
921 
922 
923                     ostei_general_vrr_K(8, 0, 7, 0, 1,
924                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
925                             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);
926 
927 
928                     ostei_general_vrr_K(9, 0, 6, 0, 2,
929                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
930                             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);
931 
932 
933                     ostei_general_vrr_K(9, 0, 7, 0, 1,
934                             one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
935                             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);
936 
937 
938 
939 
940                     ////////////////////////////////////
941                     // Accumulate contracted integrals
942                     ////////////////////////////////////
943                     if(lastoffset == 0)
944                     {
945                         contract_all(420, PRIM_INT__i_s_g_s, PRIM_PTR_INT__i_s_g_s);
946                         contract_all(588, PRIM_INT__i_s_h_s, PRIM_PTR_INT__i_s_h_s);
947                         contract_all(784, PRIM_INT__i_s_i_s, PRIM_PTR_INT__i_s_i_s);
948                         contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
949                         contract_all(540, PRIM_INT__k_s_g_s, PRIM_PTR_INT__k_s_g_s);
950                         contract_all(756, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
951                         contract_all(1008, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
952                         contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
953                         contract_all(675, PRIM_INT__l_s_g_s, PRIM_PTR_INT__l_s_g_s);
954                         contract_all(945, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
955                         contract_all(1260, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
956                         contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
957                         contract_all(825, PRIM_INT__m_s_g_s, PRIM_PTR_INT__m_s_g_s);
958                         contract_all(1155, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
959                         contract_all(1540, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
960                         contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
961                     }
962                     else
963                     {
964                         contract(420, shelloffsets, PRIM_INT__i_s_g_s, PRIM_PTR_INT__i_s_g_s);
965                         contract(588, shelloffsets, PRIM_INT__i_s_h_s, PRIM_PTR_INT__i_s_h_s);
966                         contract(784, shelloffsets, PRIM_INT__i_s_i_s, PRIM_PTR_INT__i_s_i_s);
967                         contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
968                         contract(540, shelloffsets, PRIM_INT__k_s_g_s, PRIM_PTR_INT__k_s_g_s);
969                         contract(756, shelloffsets, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
970                         contract(1008, shelloffsets, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
971                         contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
972                         contract(675, shelloffsets, PRIM_INT__l_s_g_s, PRIM_PTR_INT__l_s_g_s);
973                         contract(945, shelloffsets, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
974                         contract(1260, shelloffsets, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
975                         contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
976                         contract(825, shelloffsets, PRIM_INT__m_s_g_s, PRIM_PTR_INT__m_s_g_s);
977                         contract(1155, shelloffsets, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
978                         contract(1540, shelloffsets, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
979                         contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
980                         PRIM_PTR_INT__i_s_g_s += lastoffset*420;
981                         PRIM_PTR_INT__i_s_h_s += lastoffset*588;
982                         PRIM_PTR_INT__i_s_i_s += lastoffset*784;
983                         PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
984                         PRIM_PTR_INT__k_s_g_s += lastoffset*540;
985                         PRIM_PTR_INT__k_s_h_s += lastoffset*756;
986                         PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
987                         PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
988                         PRIM_PTR_INT__l_s_g_s += lastoffset*675;
989                         PRIM_PTR_INT__l_s_h_s += lastoffset*945;
990                         PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
991                         PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
992                         PRIM_PTR_INT__m_s_g_s += lastoffset*825;
993                         PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
994                         PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
995                         PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
996                     }
997 
998                 }  // close loop over j
999             }  // close loop over i
1000 
1001             //Advance to the next batch
1002             jstart = SIMINT_SIMD_ROUND(jend);
1003 
1004             //////////////////////////////////////////////
1005             // Contracted integrals: Horizontal recurrance
1006             //////////////////////////////////////////////
1007 
1008 
1009             const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1010 
1011 
1012             for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1013             {
1014                 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1015 
1016                 // set up HRR pointers
1017                 double const * restrict HRR_INT__i_s_g_s = INT__i_s_g_s + abcd * 420;
1018                 double const * restrict HRR_INT__i_s_h_s = INT__i_s_h_s + abcd * 588;
1019                 double const * restrict HRR_INT__i_s_i_s = INT__i_s_i_s + abcd * 784;
1020                 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1021                 double const * restrict HRR_INT__k_s_g_s = INT__k_s_g_s + abcd * 540;
1022                 double const * restrict HRR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
1023                 double const * restrict HRR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
1024                 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1025                 double const * restrict HRR_INT__l_s_g_s = INT__l_s_g_s + abcd * 675;
1026                 double const * restrict HRR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
1027                 double const * restrict HRR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
1028                 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1029                 double const * restrict HRR_INT__m_s_g_s = INT__m_s_g_s + abcd * 825;
1030                 double const * restrict HRR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
1031                 double const * restrict HRR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
1032                 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1033                 double * restrict HRR_INT__i_f_g_f = INT__i_f_g_f + real_abcd * 42000;
1034 
1035                 // form INT__i_p_g_s
1036                 ostei_general_hrr_J(6, 1, 4, 0, hAB, HRR_INT__k_s_g_s, HRR_INT__i_s_g_s, HRR_INT__i_p_g_s);
1037 
1038                 // form INT__i_p_h_s
1039                 ostei_general_hrr_J(6, 1, 5, 0, hAB, HRR_INT__k_s_h_s, HRR_INT__i_s_h_s, HRR_INT__i_p_h_s);
1040 
1041                 // form INT__i_p_i_s
1042                 ostei_general_hrr_J(6, 1, 6, 0, hAB, HRR_INT__k_s_i_s, HRR_INT__i_s_i_s, HRR_INT__i_p_i_s);
1043 
1044                 // form INT__i_p_k_s
1045                 ostei_general_hrr_J(6, 1, 7, 0, hAB, HRR_INT__k_s_k_s, HRR_INT__i_s_k_s, HRR_INT__i_p_k_s);
1046 
1047                 // form INT__k_p_g_s
1048                 ostei_general_hrr_J(7, 1, 4, 0, hAB, HRR_INT__l_s_g_s, HRR_INT__k_s_g_s, HRR_INT__k_p_g_s);
1049 
1050                 // form INT__k_p_h_s
1051                 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);
1052 
1053                 // form INT__k_p_i_s
1054                 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);
1055 
1056                 // form INT__k_p_k_s
1057                 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);
1058 
1059                 // form INT__l_p_g_s
1060                 ostei_general_hrr_J(8, 1, 4, 0, hAB, HRR_INT__m_s_g_s, HRR_INT__l_s_g_s, HRR_INT__l_p_g_s);
1061 
1062                 // form INT__l_p_h_s
1063                 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);
1064 
1065                 // form INT__l_p_i_s
1066                 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);
1067 
1068                 // form INT__l_p_k_s
1069                 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);
1070 
1071                 // form INT__i_d_g_s
1072                 ostei_general_hrr_J(6, 2, 4, 0, hAB, HRR_INT__k_p_g_s, HRR_INT__i_p_g_s, HRR_INT__i_d_g_s);
1073 
1074                 // form INT__i_d_h_s
1075                 ostei_general_hrr_J(6, 2, 5, 0, hAB, HRR_INT__k_p_h_s, HRR_INT__i_p_h_s, HRR_INT__i_d_h_s);
1076 
1077                 // form INT__i_d_i_s
1078                 ostei_general_hrr_J(6, 2, 6, 0, hAB, HRR_INT__k_p_i_s, HRR_INT__i_p_i_s, HRR_INT__i_d_i_s);
1079 
1080                 // form INT__i_d_k_s
1081                 ostei_general_hrr_J(6, 2, 7, 0, hAB, HRR_INT__k_p_k_s, HRR_INT__i_p_k_s, HRR_INT__i_d_k_s);
1082 
1083                 // form INT__k_d_g_s
1084                 ostei_general_hrr_J(7, 2, 4, 0, hAB, HRR_INT__l_p_g_s, HRR_INT__k_p_g_s, HRR_INT__k_d_g_s);
1085 
1086                 // form INT__k_d_h_s
1087                 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);
1088 
1089                 // form INT__k_d_i_s
1090                 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);
1091 
1092                 // form INT__k_d_k_s
1093                 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);
1094 
1095                 // form INT__i_f_g_s
1096                 ostei_general_hrr_J(6, 3, 4, 0, hAB, HRR_INT__k_d_g_s, HRR_INT__i_d_g_s, HRR_INT__i_f_g_s);
1097 
1098                 // form INT__i_f_h_s
1099                 ostei_general_hrr_J(6, 3, 5, 0, hAB, HRR_INT__k_d_h_s, HRR_INT__i_d_h_s, HRR_INT__i_f_h_s);
1100 
1101                 // form INT__i_f_i_s
1102                 ostei_general_hrr_J(6, 3, 6, 0, hAB, HRR_INT__k_d_i_s, HRR_INT__i_d_i_s, HRR_INT__i_f_i_s);
1103 
1104                 // form INT__i_f_k_s
1105                 ostei_general_hrr_J(6, 3, 7, 0, hAB, HRR_INT__k_d_k_s, HRR_INT__i_d_k_s, HRR_INT__i_f_k_s);
1106 
1107                 // form INT__i_f_g_p
1108                 HRR_L_g_p(
1109                     HRR_INT__i_f_g_p,
1110                     HRR_INT__i_f_g_s,
1111                     HRR_INT__i_f_h_s,
1112                     hCD, 280);
1113 
1114                 // form INT__i_f_h_p
1115                 ostei_general_hrr_L(6, 3, 5, 1, hCD, HRR_INT__i_f_i_s, HRR_INT__i_f_h_s, HRR_INT__i_f_h_p);
1116 
1117                 // form INT__i_f_i_p
1118                 ostei_general_hrr_L(6, 3, 6, 1, hCD, HRR_INT__i_f_k_s, HRR_INT__i_f_i_s, HRR_INT__i_f_i_p);
1119 
1120                 // form INT__i_f_g_d
1121                 ostei_general_hrr_L(6, 3, 4, 2, hCD, HRR_INT__i_f_h_p, HRR_INT__i_f_g_p, HRR_INT__i_f_g_d);
1122 
1123                 // form INT__i_f_h_d
1124                 ostei_general_hrr_L(6, 3, 5, 2, hCD, HRR_INT__i_f_i_p, HRR_INT__i_f_h_p, HRR_INT__i_f_h_d);
1125 
1126                 // form INT__i_f_g_f
1127                 ostei_general_hrr_L(6, 3, 4, 3, hCD, HRR_INT__i_f_h_d, HRR_INT__i_f_g_d, HRR_INT__i_f_g_f);
1128 
1129 
1130             }  // close HRR loop
1131 
1132 
1133         }   // close loop cdbatch
1134 
1135         istart = iend;
1136     }  // close loop over ab
1137 
1138     return P.nshell12_clip * Q.nshell12_clip;
1139 }
1140 
ostei_f_i_g_f(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__f_i_g_f)1141 int ostei_f_i_g_f(struct simint_multi_shellpair const P,
1142                   struct simint_multi_shellpair const Q,
1143                   double screen_tol,
1144                   double * const restrict work,
1145                   double * const restrict INT__f_i_g_f)
1146 {
1147     double P_AB[3*P.nshell12];
1148     struct simint_multi_shellpair P_tmp = P;
1149     P_tmp.PA_x = P.PB_x;  P_tmp.PA_y = P.PB_y;  P_tmp.PA_z = P.PB_z;
1150     P_tmp.PB_x = P.PA_x;  P_tmp.PB_y = P.PA_y;  P_tmp.PB_z = P.PA_z;
1151     P_tmp.AB_x = P_AB;
1152     P_tmp.AB_y = P_AB + P.nshell12;
1153     P_tmp.AB_z = P_AB + 2*P.nshell12;
1154 
1155     for(int i = 0; i < P.nshell12; i++)
1156     {
1157         P_tmp.AB_x[i] = -P.AB_x[i];
1158         P_tmp.AB_y[i] = -P.AB_y[i];
1159         P_tmp.AB_z[i] = -P.AB_z[i];
1160     }
1161 
1162     int ret = ostei_i_f_g_f(P_tmp, Q, screen_tol, work, INT__f_i_g_f);
1163     double buffer[42000] SIMINT_ALIGN_ARRAY_DBL;
1164 
1165     for(int q = 0; q < ret; q++)
1166     {
1167         int idx = 0;
1168         for(int a = 0; a < 10; ++a)
1169         for(int b = 0; b < 28; ++b)
1170         for(int c = 0; c < 15; ++c)
1171         for(int d = 0; d < 10; ++d)
1172             buffer[idx++] = INT__f_i_g_f[q*42000+b*1500+a*150+c*10+d];
1173 
1174         memcpy(INT__f_i_g_f+q*42000, buffer, 42000*sizeof(double));
1175     }
1176 
1177     return ret;
1178 }
1179 
ostei_i_f_f_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_f_f_g)1180 int ostei_i_f_f_g(struct simint_multi_shellpair const P,
1181                   struct simint_multi_shellpair const Q,
1182                   double screen_tol,
1183                   double * const restrict work,
1184                   double * const restrict INT__i_f_f_g)
1185 {
1186     double Q_AB[3*Q.nshell12];
1187     struct simint_multi_shellpair Q_tmp = Q;
1188     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1189     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1190     Q_tmp.AB_x = Q_AB;
1191     Q_tmp.AB_y = Q_AB + Q.nshell12;
1192     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1193 
1194     for(int i = 0; i < Q.nshell12; i++)
1195     {
1196         Q_tmp.AB_x[i] = -Q.AB_x[i];
1197         Q_tmp.AB_y[i] = -Q.AB_y[i];
1198         Q_tmp.AB_z[i] = -Q.AB_z[i];
1199     }
1200 
1201     int ret = ostei_i_f_g_f(P, Q_tmp, screen_tol, work, INT__i_f_f_g);
1202     double buffer[42000] SIMINT_ALIGN_ARRAY_DBL;
1203 
1204     for(int q = 0; q < ret; q++)
1205     {
1206         int idx = 0;
1207         for(int a = 0; a < 28; ++a)
1208         for(int b = 0; b < 10; ++b)
1209         for(int c = 0; c < 10; ++c)
1210         for(int d = 0; d < 15; ++d)
1211             buffer[idx++] = INT__i_f_f_g[q*42000+a*1500+b*150+d*10+c];
1212 
1213         memcpy(INT__i_f_f_g+q*42000, buffer, 42000*sizeof(double));
1214     }
1215 
1216     return ret;
1217 }
1218 
ostei_f_i_f_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__f_i_f_g)1219 int ostei_f_i_f_g(struct simint_multi_shellpair const P,
1220                   struct simint_multi_shellpair const Q,
1221                   double screen_tol,
1222                   double * const restrict work,
1223                   double * const restrict INT__f_i_f_g)
1224 {
1225     double P_AB[3*P.nshell12];
1226     struct simint_multi_shellpair P_tmp = P;
1227     P_tmp.PA_x = P.PB_x;  P_tmp.PA_y = P.PB_y;  P_tmp.PA_z = P.PB_z;
1228     P_tmp.PB_x = P.PA_x;  P_tmp.PB_y = P.PA_y;  P_tmp.PB_z = P.PA_z;
1229     P_tmp.AB_x = P_AB;
1230     P_tmp.AB_y = P_AB + P.nshell12;
1231     P_tmp.AB_z = P_AB + 2*P.nshell12;
1232 
1233     for(int i = 0; i < P.nshell12; i++)
1234     {
1235         P_tmp.AB_x[i] = -P.AB_x[i];
1236         P_tmp.AB_y[i] = -P.AB_y[i];
1237         P_tmp.AB_z[i] = -P.AB_z[i];
1238     }
1239 
1240     double Q_AB[3*Q.nshell12];
1241     struct simint_multi_shellpair Q_tmp = Q;
1242     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1243     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1244     Q_tmp.AB_x = Q_AB;
1245     Q_tmp.AB_y = Q_AB + Q.nshell12;
1246     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1247 
1248     for(int i = 0; i < Q.nshell12; i++)
1249     {
1250         Q_tmp.AB_x[i] = -Q.AB_x[i];
1251         Q_tmp.AB_y[i] = -Q.AB_y[i];
1252         Q_tmp.AB_z[i] = -Q.AB_z[i];
1253     }
1254 
1255     int ret = ostei_i_f_g_f(P_tmp, Q_tmp, screen_tol, work, INT__f_i_f_g);
1256     double buffer[42000] SIMINT_ALIGN_ARRAY_DBL;
1257 
1258     for(int q = 0; q < ret; q++)
1259     {
1260         int idx = 0;
1261         for(int a = 0; a < 10; ++a)
1262         for(int b = 0; b < 28; ++b)
1263         for(int c = 0; c < 10; ++c)
1264         for(int d = 0; d < 15; ++d)
1265             buffer[idx++] = INT__f_i_f_g[q*42000+b*1500+a*150+d*10+c];
1266 
1267         memcpy(INT__f_i_f_g+q*42000, buffer, 42000*sizeof(double));
1268     }
1269 
1270     return ret;
1271 }
1272 
1273