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