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