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_g_g_k_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_g_k_g)8 int ostei_g_g_k_g(struct simint_multi_shellpair const P,
9                   struct simint_multi_shellpair const Q,
10                   double screen_tol,
11                   double * const restrict work,
12                   double * const restrict INT__g_g_k_g)
13 {
14 
15     SIMINT_ASSUME_ALIGN_DBL(work);
16     SIMINT_ASSUME_ALIGN_DBL(INT__g_g_k_g);
17     int ab, cd, abcd;
18     int istart, jstart;
19     int iprimcd, nprim_icd, icd;
20     const int check_screen = (screen_tol > 0.0);
21     int i, j;
22     int n;
23     int not_screened;
24     int real_abcd;
25     int iket;
26     int ibra;
27 
28     // partition workspace
29     double * const INT__g_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
30     double * const INT__g_s_l_s = work + (SIMINT_NSHELL_SIMD * 540);
31     double * const INT__g_s_m_s = work + (SIMINT_NSHELL_SIMD * 1215);
32     double * const INT__g_s_n_s = work + (SIMINT_NSHELL_SIMD * 2040);
33     double * const INT__g_s_o_s = work + (SIMINT_NSHELL_SIMD * 3030);
34     double * const INT__h_s_k_s = work + (SIMINT_NSHELL_SIMD * 4200);
35     double * const INT__h_s_l_s = work + (SIMINT_NSHELL_SIMD * 4956);
36     double * const INT__h_s_m_s = work + (SIMINT_NSHELL_SIMD * 5901);
37     double * const INT__h_s_n_s = work + (SIMINT_NSHELL_SIMD * 7056);
38     double * const INT__h_s_o_s = work + (SIMINT_NSHELL_SIMD * 8442);
39     double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 10080);
40     double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 11088);
41     double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 12348);
42     double * const INT__i_s_n_s = work + (SIMINT_NSHELL_SIMD * 13888);
43     double * const INT__i_s_o_s = work + (SIMINT_NSHELL_SIMD * 15736);
44     double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 17920);
45     double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 19216);
46     double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 20836);
47     double * const INT__k_s_n_s = work + (SIMINT_NSHELL_SIMD * 22816);
48     double * const INT__k_s_o_s = work + (SIMINT_NSHELL_SIMD * 25192);
49     double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 28000);
50     double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 29620);
51     double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 31645);
52     double * const INT__l_s_n_s = work + (SIMINT_NSHELL_SIMD * 34120);
53     double * const INT__l_s_o_s = work + (SIMINT_NSHELL_SIMD * 37090);
54     SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*40600);
55     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
56     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 20;
57     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 77;
58     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 185;
59     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 355;
60     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_h_s = primwork + 595;
61     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_i_s = primwork + 910;
62     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_k_s = primwork + 1302;
63     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_l_s = primwork + 1770;
64     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_m_s = primwork + 2310;
65     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_n_s = primwork + 2915;
66     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_o_s = primwork + 3575;
67     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 4277;
68     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 4301;
69     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 4373;
70     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 4517;
71     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 4757;
72     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 5117;
73     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_i_s = primwork + 5621;
74     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_k_s = primwork + 6293;
75     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_l_s = primwork + 7157;
76     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_m_s = primwork + 8237;
77     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_n_s = primwork + 9557;
78     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_o_s = primwork + 11141;
79     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 13013;
80     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 13139;
81     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 13391;
82     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 13811;
83     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 14441;
84     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 15323;
85     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_k_s = primwork + 16499;
86     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_l_s = primwork + 18011;
87     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_m_s = primwork + 19901;
88     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_n_s = primwork + 22211;
89     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_o_s = primwork + 24983;
90     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 28259;
91     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 28619;
92     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 29219;
93     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 30119;
94     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 31379;
95     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 33059;
96     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_l_s = primwork + 35219;
97     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_m_s = primwork + 37919;
98     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_n_s = primwork + 41219;
99     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_o_s = primwork + 45179;
100     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 49859;
101     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 50609;
102     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 51734;
103     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 53309;
104     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 55409;
105     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 58109;
106     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_m_s = primwork + 61484;
107     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_n_s = primwork + 65609;
108     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_o_s = primwork + 70559;
109     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 76409;
110     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 77669;
111     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 79433;
112     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 81785;
113     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 84809;
114     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 88589;
115     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_n_s = primwork + 93209;
116     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_o_s = primwork + 98753;
117     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 105305;
118     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 107069;
119     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 109421;
120     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 112445;
121     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 116225;
122     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_n_s = primwork + 120845;
123     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_o_s = primwork + 126389;
124     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 132941;
125     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 134957;
126     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 137549;
127     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 140789;
128     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_n_s = primwork + 144749;
129     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_o_s = primwork + 149501;
130     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 155117;
131     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 156737;
132     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 158762;
133     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_n_s = primwork + 161237;
134     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_o_s = primwork + 164207;
135     double * const hrrwork = (double *)(primwork + 167717);
136     double * const HRR_INT__g_p_k_s = hrrwork + 0;
137     double * const HRR_INT__g_p_l_s = hrrwork + 1620;
138     double * const HRR_INT__g_p_m_s = hrrwork + 3645;
139     double * const HRR_INT__g_p_n_s = hrrwork + 6120;
140     double * const HRR_INT__g_p_o_s = hrrwork + 9090;
141     double * const HRR_INT__g_d_k_s = hrrwork + 12600;
142     double * const HRR_INT__g_d_l_s = hrrwork + 15840;
143     double * const HRR_INT__g_d_m_s = hrrwork + 19890;
144     double * const HRR_INT__g_d_n_s = hrrwork + 24840;
145     double * const HRR_INT__g_d_o_s = hrrwork + 30780;
146     double * const HRR_INT__g_f_k_s = hrrwork + 37800;
147     double * const HRR_INT__g_f_l_s = hrrwork + 43200;
148     double * const HRR_INT__g_f_m_s = hrrwork + 49950;
149     double * const HRR_INT__g_f_n_s = hrrwork + 58200;
150     double * const HRR_INT__g_f_o_s = hrrwork + 68100;
151     double * const HRR_INT__g_g_k_s = hrrwork + 79800;
152     double * const HRR_INT__g_g_k_p = hrrwork + 87900;
153     double * const HRR_INT__g_g_k_d = hrrwork + 112200;
154     double * const HRR_INT__g_g_k_f = hrrwork + 160800;
155     double * const HRR_INT__g_g_l_s = hrrwork + 241800;
156     double * const HRR_INT__g_g_l_p = hrrwork + 251925;
157     double * const HRR_INT__g_g_l_d = hrrwork + 282300;
158     double * const HRR_INT__g_g_l_f = hrrwork + 343050;
159     double * const HRR_INT__g_g_m_s = hrrwork + 444300;
160     double * const HRR_INT__g_g_m_p = hrrwork + 456675;
161     double * const HRR_INT__g_g_m_d = hrrwork + 493800;
162     double * const HRR_INT__g_g_n_s = hrrwork + 568050;
163     double * const HRR_INT__g_g_n_p = hrrwork + 582900;
164     double * const HRR_INT__g_g_o_s = hrrwork + 627450;
165     double * const HRR_INT__h_p_k_s = hrrwork + 645000;
166     double * const HRR_INT__h_p_l_s = hrrwork + 647268;
167     double * const HRR_INT__h_p_m_s = hrrwork + 650103;
168     double * const HRR_INT__h_p_n_s = hrrwork + 653568;
169     double * const HRR_INT__h_p_o_s = hrrwork + 657726;
170     double * const HRR_INT__h_d_k_s = hrrwork + 662640;
171     double * const HRR_INT__h_d_l_s = hrrwork + 667176;
172     double * const HRR_INT__h_d_m_s = hrrwork + 672846;
173     double * const HRR_INT__h_d_n_s = hrrwork + 679776;
174     double * const HRR_INT__h_d_o_s = hrrwork + 688092;
175     double * const HRR_INT__h_f_k_s = hrrwork + 697920;
176     double * const HRR_INT__h_f_l_s = hrrwork + 705480;
177     double * const HRR_INT__h_f_m_s = hrrwork + 714930;
178     double * const HRR_INT__h_f_n_s = hrrwork + 726480;
179     double * const HRR_INT__h_f_o_s = hrrwork + 740340;
180     double * const HRR_INT__i_p_k_s = hrrwork + 756720;
181     double * const HRR_INT__i_p_l_s = hrrwork + 759744;
182     double * const HRR_INT__i_p_m_s = hrrwork + 763524;
183     double * const HRR_INT__i_p_n_s = hrrwork + 768144;
184     double * const HRR_INT__i_p_o_s = hrrwork + 773688;
185     double * const HRR_INT__i_d_k_s = hrrwork + 780240;
186     double * const HRR_INT__i_d_l_s = hrrwork + 786288;
187     double * const HRR_INT__i_d_m_s = hrrwork + 793848;
188     double * const HRR_INT__i_d_n_s = hrrwork + 803088;
189     double * const HRR_INT__i_d_o_s = hrrwork + 814176;
190     double * const HRR_INT__k_p_k_s = hrrwork + 827280;
191     double * const HRR_INT__k_p_l_s = hrrwork + 831168;
192     double * const HRR_INT__k_p_m_s = hrrwork + 836028;
193     double * const HRR_INT__k_p_n_s = hrrwork + 841968;
194     double * const HRR_INT__k_p_o_s = hrrwork + 849096;
195 
196 
197     // Create constants
198     const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
199     const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
200     const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
201     const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
202     const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
203     const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
204     const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
205     const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
206     const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
207     const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
208     const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
209     const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
210 
211 
212     ////////////////////////////////////////
213     // Loop over shells and primitives
214     ////////////////////////////////////////
215 
216     real_abcd = 0;
217     istart = 0;
218     for(ab = 0; ab < P.nshell12_clip; ++ab)
219     {
220         const int iend = istart + P.nprim12[ab];
221 
222         cd = 0;
223         jstart = 0;
224 
225         for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
226         {
227             const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
228             int jend = jstart;
229             for(i = 0; i < nshellbatch; i++)
230                 jend += Q.nprim12[cd+i];
231 
232             // Clear the beginning of the workspace (where we are accumulating integrals)
233             memset(work, 0, SIMINT_NSHELL_SIMD * 40600 * sizeof(double));
234             abcd = 0;
235 
236 
237             for(i = istart; i < iend; ++i)
238             {
239                 SIMINT_DBLTYPE bra_screen_max;  // only used if check_screen
240 
241                 if(check_screen)
242                 {
243                     // Skip this whole thing if always insignificant
244                     if((P.screen[i] * Q.screen_max) < screen_tol)
245                         continue;
246                     bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
247                 }
248 
249                 icd = 0;
250                 iprimcd = 0;
251                 nprim_icd = Q.nprim12[cd];
252                 double * restrict PRIM_PTR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
253                 double * restrict PRIM_PTR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
254                 double * restrict PRIM_PTR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
255                 double * restrict PRIM_PTR_INT__g_s_n_s = INT__g_s_n_s + abcd * 990;
256                 double * restrict PRIM_PTR_INT__g_s_o_s = INT__g_s_o_s + abcd * 1170;
257                 double * restrict PRIM_PTR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
258                 double * restrict PRIM_PTR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
259                 double * restrict PRIM_PTR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
260                 double * restrict PRIM_PTR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
261                 double * restrict PRIM_PTR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
262                 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
263                 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
264                 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
265                 double * restrict PRIM_PTR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
266                 double * restrict PRIM_PTR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
267                 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
268                 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
269                 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
270                 double * restrict PRIM_PTR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
271                 double * restrict PRIM_PTR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
272                 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
273                 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
274                 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
275                 double * restrict PRIM_PTR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
276                 double * restrict PRIM_PTR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
277 
278 
279 
280                 // Load these one per loop over i
281                 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
282                 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
283                 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
284 
285                 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
286 
287                 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
288                 {
289                     // calculate the shell offsets
290                     // these are the offset from the shell pointed to by cd
291                     // for each element
292                     int shelloffsets[SIMINT_SIMD_LEN] = {0};
293                     int lastoffset = 0;
294                     const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
295 
296                     if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
297                     {
298                         // Handle if the first element of the vector is a new shell
299                         if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
300                         {
301                             nprim_icd += Q.nprim12[cd + (++icd)];
302                             PRIM_PTR_INT__g_s_k_s += 540;
303                             PRIM_PTR_INT__g_s_l_s += 675;
304                             PRIM_PTR_INT__g_s_m_s += 825;
305                             PRIM_PTR_INT__g_s_n_s += 990;
306                             PRIM_PTR_INT__g_s_o_s += 1170;
307                             PRIM_PTR_INT__h_s_k_s += 756;
308                             PRIM_PTR_INT__h_s_l_s += 945;
309                             PRIM_PTR_INT__h_s_m_s += 1155;
310                             PRIM_PTR_INT__h_s_n_s += 1386;
311                             PRIM_PTR_INT__h_s_o_s += 1638;
312                             PRIM_PTR_INT__i_s_k_s += 1008;
313                             PRIM_PTR_INT__i_s_l_s += 1260;
314                             PRIM_PTR_INT__i_s_m_s += 1540;
315                             PRIM_PTR_INT__i_s_n_s += 1848;
316                             PRIM_PTR_INT__i_s_o_s += 2184;
317                             PRIM_PTR_INT__k_s_k_s += 1296;
318                             PRIM_PTR_INT__k_s_l_s += 1620;
319                             PRIM_PTR_INT__k_s_m_s += 1980;
320                             PRIM_PTR_INT__k_s_n_s += 2376;
321                             PRIM_PTR_INT__k_s_o_s += 2808;
322                             PRIM_PTR_INT__l_s_k_s += 1620;
323                             PRIM_PTR_INT__l_s_l_s += 2025;
324                             PRIM_PTR_INT__l_s_m_s += 2475;
325                             PRIM_PTR_INT__l_s_n_s += 2970;
326                             PRIM_PTR_INT__l_s_o_s += 3510;
327                         }
328                         iprimcd++;
329                         for(n = 1; n < SIMINT_SIMD_LEN; ++n)
330                         {
331                             if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
332                             {
333                                 shelloffsets[n] = shelloffsets[n-1] + 1;
334                                 lastoffset++;
335                                 nprim_icd += Q.nprim12[cd + (++icd)];
336                             }
337                             else
338                                 shelloffsets[n] = shelloffsets[n-1];
339                             iprimcd++;
340                         }
341                     }
342                     else
343                         iprimcd += SIMINT_SIMD_LEN;
344 
345                     // Do we have to compute this vector (or has it been screened out)?
346                     // (not_screened != 0 means we have to do this vector)
347                     if(check_screen)
348                     {
349                         const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
350                         if(vmax < screen_tol)
351                         {
352                             PRIM_PTR_INT__g_s_k_s += lastoffset*540;
353                             PRIM_PTR_INT__g_s_l_s += lastoffset*675;
354                             PRIM_PTR_INT__g_s_m_s += lastoffset*825;
355                             PRIM_PTR_INT__g_s_n_s += lastoffset*990;
356                             PRIM_PTR_INT__g_s_o_s += lastoffset*1170;
357                             PRIM_PTR_INT__h_s_k_s += lastoffset*756;
358                             PRIM_PTR_INT__h_s_l_s += lastoffset*945;
359                             PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
360                             PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
361                             PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
362                             PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
363                             PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
364                             PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
365                             PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
366                             PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
367                             PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
368                             PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
369                             PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
370                             PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
371                             PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
372                             PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
373                             PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
374                             PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
375                             PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
376                             PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
377                             continue;
378                         }
379                     }
380 
381                     const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
382                     const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
383                     const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
384                     const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
385 
386 
387                     /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
388                     SIMINT_DBLTYPE PQ[3];
389                     PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
390                     PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
391                     PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
392                     SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
393                     R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
394                     R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
395 
396                     const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
397                     const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
398                     const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
399                     const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
400                     const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
401                     const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
402                     const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
403 
404                     // NOTE: Minus sign!
405                     const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
406                     SIMINT_DBLTYPE aop_PQ[3];
407                     aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
408                     aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
409                     aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
410 
411                     SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
412                     SIMINT_DBLTYPE aoq_PQ[3];
413                     aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
414                     aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
415                     aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
416                     // Put a minus sign here so we don't have to in RR routines
417                     a_over_q = SIMINT_NEG(a_over_q);
418 
419 
420                     //////////////////////////////////////////////
421                     // Fjt function section
422                     // Maximum v value: 19
423                     //////////////////////////////////////////////
424                     // The parameter to the Fjt function
425                     const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
426 
427 
428                     const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
429 
430 
431                     boys_F_split(PRIM_INT__s_s_s_s, F_x, 19);
432                     SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
433                     prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
434                     for(n = 0; n <= 19; n++)
435                         PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
436 
437                     //////////////////////////////////////////////
438                     // Primitive integrals: Vertical recurrance
439                     //////////////////////////////////////////////
440 
441                     const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
442                     const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
443                     const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
444                     const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
445                     const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
446                     const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
447                     const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
448                     const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
449                     const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
450                     const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
451                     const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
452                     const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
453                     const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
454                     const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
455                     const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
456                     const SIMINT_DBLTYPE vrr_const_9_over_2q = SIMINT_MUL(const_9, one_over_2q);
457                     const SIMINT_DBLTYPE vrr_const_10_over_2q = SIMINT_MUL(const_10, one_over_2q);
458                     const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
459                     const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
460                     const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
461                     const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
462                     const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
463                     const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
464                     const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
465                     const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
466                     const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
467                     const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
468                     const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
469 
470 
471 
472                     // Forming PRIM_INT__s_s_p_s[19 * 3];
473                     for(n = 0; n < 19; ++n)  // loop over orders of auxiliary function
474                     {
475 
476                         PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
477                         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]);
478 
479                         PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
480                         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]);
481 
482                         PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
483                         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]);
484 
485                     }
486 
487 
488 
489                     // Forming PRIM_INT__s_s_d_s[18 * 6];
490                     for(n = 0; n < 18; ++n)  // loop over orders of auxiliary function
491                     {
492 
493                         PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
494                         PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 0]);
495                         PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 0]);
496 
497                         PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
498                         PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 1]);
499 
500                         PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
501                         PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_d_s[n * 6 + 2]);
502 
503                         PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
504                         PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_d_s[n * 6 + 3]);
505                         PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 3]);
506 
507                         PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
508                         PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_d_s[n * 6 + 4]);
509 
510                         PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
511                         PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_d_s[n * 6 + 5]);
512                         PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__s_s_d_s[n * 6 + 5]);
513 
514                     }
515 
516 
517 
518                     // Forming PRIM_INT__s_s_f_s[17 * 10];
519                     for(n = 0; n < 17; ++n)  // loop over orders of auxiliary function
520                     {
521 
522                         PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
523                         PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 0]);
524                         PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__s_s_f_s[n * 10 + 0]);
525 
526                         PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
527                         PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 1]);
528 
529                         PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
530                         PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__s_s_f_s[n * 10 + 2]);
531 
532                         PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
533                         PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 3]);
534 
535                         PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
536                         PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__s_s_f_s[n * 10 + 4]);
537 
538                         PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
539                         PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 5]);
540 
541                         PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
542                         PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 6]);
543                         PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__s_s_f_s[n * 10 + 6]);
544 
545                         PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
546                         PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__s_s_f_s[n * 10 + 7]);
547 
548                         PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
549                         PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 8]);
550 
551                         PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
552                         PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__s_s_f_s[n * 10 + 9]);
553                         PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_FMADD( vrr_const_2_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__s_s_f_s[n * 10 + 9]);
554 
555                     }
556 
557 
558                     VRR_K_s_s_g_s(
559                             PRIM_INT__s_s_g_s,
560                             PRIM_INT__s_s_f_s,
561                             PRIM_INT__s_s_d_s,
562                             Q_PA,
563                             a_over_q,
564                             aoq_PQ,
565                             one_over_2q,
566                             16);
567 
568 
569                     VRR_K_s_s_h_s(
570                             PRIM_INT__s_s_h_s,
571                             PRIM_INT__s_s_g_s,
572                             PRIM_INT__s_s_f_s,
573                             Q_PA,
574                             a_over_q,
575                             aoq_PQ,
576                             one_over_2q,
577                             15);
578 
579 
580                     ostei_general_vrr1_K(6, 14,
581                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
582                             PRIM_INT__s_s_h_s, PRIM_INT__s_s_g_s, PRIM_INT__s_s_i_s);
583 
584 
585                     ostei_general_vrr1_K(7, 13,
586                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
587                             PRIM_INT__s_s_i_s, PRIM_INT__s_s_h_s, PRIM_INT__s_s_k_s);
588 
589 
590                     ostei_general_vrr_I(1, 0, 7, 0, 8,
591                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
592                             PRIM_INT__s_s_k_s, NULL, NULL, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_k_s);
593 
594 
595                     ostei_general_vrr_I(1, 0, 6, 0, 8,
596                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
597                             PRIM_INT__s_s_i_s, NULL, NULL, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_i_s);
598 
599 
600                     ostei_general_vrr_I(2, 0, 7, 0, 7,
601                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
602                             PRIM_INT__p_s_k_s, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_i_s, NULL, PRIM_INT__d_s_k_s);
603 
604 
605                     ostei_general_vrr_I(1, 0, 5, 0, 8,
606                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
607                             PRIM_INT__s_s_h_s, NULL, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
608 
609 
610                     ostei_general_vrr_I(2, 0, 6, 0, 7,
611                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
612                             PRIM_INT__p_s_i_s, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_h_s, NULL, PRIM_INT__d_s_i_s);
613 
614 
615                     ostei_general_vrr_I(3, 0, 7, 0, 6,
616                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
617                             PRIM_INT__d_s_k_s, PRIM_INT__p_s_k_s, NULL, PRIM_INT__d_s_i_s, NULL, PRIM_INT__f_s_k_s);
618 
619 
620                     VRR_I_p_s_g_s(
621                             PRIM_INT__p_s_g_s,
622                             PRIM_INT__s_s_g_s,
623                             PRIM_INT__s_s_f_s,
624                             P_PA,
625                             aop_PQ,
626                             one_over_2pq,
627                             8);
628 
629 
630                     ostei_general_vrr_I(2, 0, 5, 0, 7,
631                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
632                             PRIM_INT__p_s_h_s, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_g_s, NULL, PRIM_INT__d_s_h_s);
633 
634 
635                     ostei_general_vrr_I(3, 0, 6, 0, 6,
636                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
637                             PRIM_INT__d_s_i_s, PRIM_INT__p_s_i_s, NULL, PRIM_INT__d_s_h_s, NULL, PRIM_INT__f_s_i_s);
638 
639 
640                     ostei_general_vrr_I(4, 0, 7, 0, 5,
641                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
642                             PRIM_INT__f_s_k_s, PRIM_INT__d_s_k_s, NULL, PRIM_INT__f_s_i_s, NULL, PRIM_INT__g_s_k_s);
643 
644 
645                     ostei_general_vrr1_K(8, 12,
646                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
647                             PRIM_INT__s_s_k_s, PRIM_INT__s_s_i_s, PRIM_INT__s_s_l_s);
648 
649 
650                     ostei_general_vrr_I(1, 0, 8, 0, 8,
651                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
652                             PRIM_INT__s_s_l_s, NULL, NULL, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_l_s);
653 
654 
655                     ostei_general_vrr_I(2, 0, 8, 0, 7,
656                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
657                             PRIM_INT__p_s_l_s, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_k_s, NULL, PRIM_INT__d_s_l_s);
658 
659 
660                     ostei_general_vrr_I(3, 0, 8, 0, 6,
661                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
662                             PRIM_INT__d_s_l_s, PRIM_INT__p_s_l_s, NULL, PRIM_INT__d_s_k_s, NULL, PRIM_INT__f_s_l_s);
663 
664 
665                     ostei_general_vrr_I(4, 0, 8, 0, 5,
666                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
667                             PRIM_INT__f_s_l_s, PRIM_INT__d_s_l_s, NULL, PRIM_INT__f_s_k_s, NULL, PRIM_INT__g_s_l_s);
668 
669 
670                     VRR_I_p_s_f_s(
671                             PRIM_INT__p_s_f_s,
672                             PRIM_INT__s_s_f_s,
673                             PRIM_INT__s_s_d_s,
674                             P_PA,
675                             aop_PQ,
676                             one_over_2pq,
677                             8);
678 
679 
680                     ostei_general_vrr_I(2, 0, 4, 0, 7,
681                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
682                             PRIM_INT__p_s_g_s, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_g_s);
683 
684 
685                     ostei_general_vrr_I(3, 0, 5, 0, 6,
686                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
687                             PRIM_INT__d_s_h_s, PRIM_INT__p_s_h_s, NULL, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_h_s);
688 
689 
690                     ostei_general_vrr_I(4, 0, 6, 0, 5,
691                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
692                             PRIM_INT__f_s_i_s, PRIM_INT__d_s_i_s, NULL, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_i_s);
693 
694 
695                     ostei_general_vrr_I(5, 0, 7, 0, 4,
696                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
697                             PRIM_INT__g_s_k_s, PRIM_INT__f_s_k_s, NULL, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_k_s);
698 
699 
700                     ostei_general_vrr1_K(9, 11,
701                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
702                             PRIM_INT__s_s_l_s, PRIM_INT__s_s_k_s, PRIM_INT__s_s_m_s);
703 
704 
705                     ostei_general_vrr_I(1, 0, 9, 0, 8,
706                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
707                             PRIM_INT__s_s_m_s, NULL, NULL, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_m_s);
708 
709 
710                     ostei_general_vrr_I(2, 0, 9, 0, 7,
711                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
712                             PRIM_INT__p_s_m_s, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_l_s, NULL, PRIM_INT__d_s_m_s);
713 
714 
715                     ostei_general_vrr_I(3, 0, 9, 0, 6,
716                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
717                             PRIM_INT__d_s_m_s, PRIM_INT__p_s_m_s, NULL, PRIM_INT__d_s_l_s, NULL, PRIM_INT__f_s_m_s);
718 
719 
720                     ostei_general_vrr_I(4, 0, 9, 0, 5,
721                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
722                             PRIM_INT__f_s_m_s, PRIM_INT__d_s_m_s, NULL, PRIM_INT__f_s_l_s, NULL, PRIM_INT__g_s_m_s);
723 
724 
725                     ostei_general_vrr_I(5, 0, 8, 0, 4,
726                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
727                             PRIM_INT__g_s_l_s, PRIM_INT__f_s_l_s, NULL, PRIM_INT__g_s_k_s, NULL, PRIM_INT__h_s_l_s);
728 
729 
730 
731                     // Forming PRIM_INT__p_s_d_s[8 * 18];
732                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
733                     {
734 
735                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
736                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
737                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
738 
739                         PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 1]);
740                         PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 1]);
741                         PRIM_INT__p_s_d_s[n * 18 + 1] = 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 + 1]);
742 
743                         PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 2]);
744                         PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 2]);
745                         PRIM_INT__p_s_d_s[n * 18 + 2] = 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 + 2]);
746 
747                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
748                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 3]);
749 
750                         PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 4]);
751                         PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 4]);
752 
753                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
754                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 5]);
755 
756                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
757                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 6]);
758 
759                         PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 1]);
760                         PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 7]);
761                         PRIM_INT__p_s_d_s[n * 18 + 7] = 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 + 7]);
762 
763                         PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 2]);
764                         PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 8]);
765 
766                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
767                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 9]);
768                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_d_s[n * 18 + 9]);
769 
770                         PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 4]);
771                         PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 10]);
772                         PRIM_INT__p_s_d_s[n * 18 + 10] = 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 + 10]);
773 
774                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
775                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 11]);
776 
777                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
778                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 0], PRIM_INT__p_s_d_s[n * 18 + 12]);
779 
780                         PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
781                         PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 1], PRIM_INT__p_s_d_s[n * 18 + 13]);
782 
783                         PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 2]);
784                         PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 2], PRIM_INT__p_s_d_s[n * 18 + 14]);
785                         PRIM_INT__p_s_d_s[n * 18 + 14] = 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 + 14]);
786 
787                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
788                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 3], PRIM_INT__p_s_d_s[n * 18 + 15]);
789 
790                         PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 4]);
791                         PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 4], PRIM_INT__p_s_d_s[n * 18 + 16]);
792                         PRIM_INT__p_s_d_s[n * 18 + 16] = 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 + 16]);
793 
794                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
795                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_d_s[(n+1) * 6 + 5], PRIM_INT__p_s_d_s[n * 18 + 17]);
796                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_d_s[n * 18 + 17]);
797 
798                     }
799 
800 
801                     VRR_I_d_s_f_s(
802                             PRIM_INT__d_s_f_s,
803                             PRIM_INT__p_s_f_s,
804                             PRIM_INT__s_s_f_s,
805                             PRIM_INT__p_s_d_s,
806                             P_PA,
807                             a_over_p,
808                             aop_PQ,
809                             one_over_2p,
810                             one_over_2pq,
811                             7);
812 
813 
814                     ostei_general_vrr_I(3, 0, 4, 0, 6,
815                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
816                             PRIM_INT__d_s_g_s, PRIM_INT__p_s_g_s, NULL, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_g_s);
817 
818 
819                     ostei_general_vrr_I(4, 0, 5, 0, 5,
820                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
821                             PRIM_INT__f_s_h_s, PRIM_INT__d_s_h_s, NULL, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_h_s);
822 
823 
824                     ostei_general_vrr_I(5, 0, 6, 0, 4,
825                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
826                             PRIM_INT__g_s_i_s, PRIM_INT__f_s_i_s, NULL, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_i_s);
827 
828 
829                     ostei_general_vrr_I(6, 0, 7, 0, 3,
830                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
831                             PRIM_INT__h_s_k_s, PRIM_INT__g_s_k_s, NULL, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_k_s);
832 
833 
834                     ostei_general_vrr1_K(10, 10,
835                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
836                             PRIM_INT__s_s_m_s, PRIM_INT__s_s_l_s, PRIM_INT__s_s_n_s);
837 
838 
839                     ostei_general_vrr_I(1, 0, 10, 0, 8,
840                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
841                             PRIM_INT__s_s_n_s, NULL, NULL, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_n_s);
842 
843 
844                     ostei_general_vrr_I(2, 0, 10, 0, 7,
845                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
846                             PRIM_INT__p_s_n_s, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_m_s, NULL, PRIM_INT__d_s_n_s);
847 
848 
849                     ostei_general_vrr_I(3, 0, 10, 0, 6,
850                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
851                             PRIM_INT__d_s_n_s, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_m_s, NULL, PRIM_INT__f_s_n_s);
852 
853 
854                     ostei_general_vrr_I(4, 0, 10, 0, 5,
855                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
856                             PRIM_INT__f_s_n_s, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_m_s, NULL, PRIM_INT__g_s_n_s);
857 
858 
859                     ostei_general_vrr_I(5, 0, 9, 0, 4,
860                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
861                             PRIM_INT__g_s_m_s, PRIM_INT__f_s_m_s, NULL, PRIM_INT__g_s_l_s, NULL, PRIM_INT__h_s_m_s);
862 
863 
864                     ostei_general_vrr_I(6, 0, 8, 0, 3,
865                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
866                             PRIM_INT__h_s_l_s, PRIM_INT__g_s_l_s, NULL, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_l_s);
867 
868 
869 
870                     // Forming PRIM_INT__p_s_p_s[8 * 9];
871                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
872                     {
873 
874                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
875                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 0]);
876                         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]);
877 
878                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 1]);
879                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 1]);
880 
881                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 2]);
882                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 2]);
883 
884                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
885                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 3]);
886 
887                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
888                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 4]);
889                         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]);
890 
891                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 2]);
892                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 5]);
893 
894                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
895                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 6]);
896 
897                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
898                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 7]);
899 
900                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
901                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 8]);
902                         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]);
903 
904                     }
905 
906 
907                     VRR_I_d_s_d_s(
908                             PRIM_INT__d_s_d_s,
909                             PRIM_INT__p_s_d_s,
910                             PRIM_INT__s_s_d_s,
911                             PRIM_INT__p_s_p_s,
912                             P_PA,
913                             a_over_p,
914                             aop_PQ,
915                             one_over_2p,
916                             one_over_2pq,
917                             7);
918 
919 
920                     ostei_general_vrr_I(3, 0, 3, 0, 6,
921                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
922                             PRIM_INT__d_s_f_s, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_d_s, NULL, PRIM_INT__f_s_f_s);
923 
924 
925                     ostei_general_vrr_I(4, 0, 4, 0, 5,
926                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
927                             PRIM_INT__f_s_g_s, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_f_s, NULL, PRIM_INT__g_s_g_s);
928 
929 
930                     ostei_general_vrr_I(5, 0, 5, 0, 4,
931                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
932                             PRIM_INT__g_s_h_s, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_g_s, NULL, PRIM_INT__h_s_h_s);
933 
934 
935                     ostei_general_vrr_I(6, 0, 6, 0, 3,
936                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
937                             PRIM_INT__h_s_i_s, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_h_s, NULL, PRIM_INT__i_s_i_s);
938 
939 
940                     ostei_general_vrr_I(7, 0, 7, 0, 2,
941                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
942                             PRIM_INT__i_s_k_s, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_i_s, NULL, PRIM_INT__k_s_k_s);
943 
944 
945                     ostei_general_vrr1_K(11, 9,
946                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
947                             PRIM_INT__s_s_n_s, PRIM_INT__s_s_m_s, PRIM_INT__s_s_o_s);
948 
949 
950                     ostei_general_vrr_I(1, 0, 11, 0, 8,
951                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
952                             PRIM_INT__s_s_o_s, NULL, NULL, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_o_s);
953 
954 
955                     ostei_general_vrr_I(2, 0, 11, 0, 7,
956                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
957                             PRIM_INT__p_s_o_s, PRIM_INT__s_s_o_s, NULL, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_o_s);
958 
959 
960                     ostei_general_vrr_I(3, 0, 11, 0, 6,
961                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
962                             PRIM_INT__d_s_o_s, PRIM_INT__p_s_o_s, NULL, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_o_s);
963 
964 
965                     ostei_general_vrr_I(4, 0, 11, 0, 5,
966                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
967                             PRIM_INT__f_s_o_s, PRIM_INT__d_s_o_s, NULL, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_o_s);
968 
969 
970                     ostei_general_vrr_I(5, 0, 10, 0, 4,
971                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
972                             PRIM_INT__g_s_n_s, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_m_s, NULL, PRIM_INT__h_s_n_s);
973 
974 
975                     ostei_general_vrr_I(6, 0, 9, 0, 3,
976                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
977                             PRIM_INT__h_s_m_s, PRIM_INT__g_s_m_s, NULL, PRIM_INT__h_s_l_s, NULL, PRIM_INT__i_s_m_s);
978 
979 
980                     ostei_general_vrr_I(7, 0, 8, 0, 2,
981                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
982                             PRIM_INT__i_s_l_s, PRIM_INT__h_s_l_s, NULL, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_l_s);
983 
984 
985 
986                     // Forming PRIM_INT__p_s_s_s[8 * 3];
987                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
988                     {
989 
990                         PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
991                         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]);
992 
993                         PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
994                         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]);
995 
996                         PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
997                         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]);
998 
999                     }
1000 
1001 
1002 
1003                     // Forming PRIM_INT__d_s_p_s[7 * 18];
1004                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
1005                     {
1006 
1007                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
1008                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
1009                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 0]);
1010                         PRIM_INT__d_s_p_s[n * 18 + 0] = 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 + 0]);
1011 
1012                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 1]);
1013                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 1], PRIM_INT__d_s_p_s[n * 18 + 1]);
1014                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 1]);
1015 
1016                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 2]);
1017                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 2], PRIM_INT__d_s_p_s[n * 18 + 2]);
1018                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 2]);
1019 
1020                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 3]);
1021                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 3], PRIM_INT__d_s_p_s[n * 18 + 9]);
1022                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 9]);
1023 
1024                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
1025                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 4], PRIM_INT__d_s_p_s[n * 18 + 10]);
1026                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 10]);
1027                         PRIM_INT__d_s_p_s[n * 18 + 10] = 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 + 10]);
1028 
1029                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 5]);
1030                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 5], PRIM_INT__d_s_p_s[n * 18 + 11]);
1031                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 11]);
1032 
1033                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 6]);
1034                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 6], PRIM_INT__d_s_p_s[n * 18 + 15]);
1035                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 0], PRIM_INT__s_s_p_s[n * 3 + 0]), PRIM_INT__d_s_p_s[n * 18 + 15]);
1036 
1037                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 7]);
1038                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 7], PRIM_INT__d_s_p_s[n * 18 + 16]);
1039                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 1], PRIM_INT__s_s_p_s[n * 3 + 1]), PRIM_INT__d_s_p_s[n * 18 + 16]);
1040 
1041                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
1042                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 8], PRIM_INT__d_s_p_s[n * 18 + 17]);
1043                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_p_s[(n+1) * 3 + 2], PRIM_INT__s_s_p_s[n * 3 + 2]), PRIM_INT__d_s_p_s[n * 18 + 17]);
1044                         PRIM_INT__d_s_p_s[n * 18 + 17] = 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 + 17]);
1045 
1046                     }
1047 
1048 
1049                     VRR_I_f_s_d_s(
1050                             PRIM_INT__f_s_d_s,
1051                             PRIM_INT__d_s_d_s,
1052                             PRIM_INT__p_s_d_s,
1053                             PRIM_INT__d_s_p_s,
1054                             P_PA,
1055                             a_over_p,
1056                             aop_PQ,
1057                             one_over_2p,
1058                             one_over_2pq,
1059                             6);
1060 
1061 
1062                     ostei_general_vrr_I(4, 0, 3, 0, 5,
1063                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1064                             PRIM_INT__f_s_f_s, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_d_s, NULL, PRIM_INT__g_s_f_s);
1065 
1066 
1067                     ostei_general_vrr_I(5, 0, 4, 0, 4,
1068                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1069                             PRIM_INT__g_s_g_s, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_f_s, NULL, PRIM_INT__h_s_g_s);
1070 
1071 
1072                     ostei_general_vrr_I(6, 0, 5, 0, 3,
1073                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1074                             PRIM_INT__h_s_h_s, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_g_s, NULL, PRIM_INT__i_s_h_s);
1075 
1076 
1077                     ostei_general_vrr_I(7, 0, 6, 0, 2,
1078                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1079                             PRIM_INT__i_s_i_s, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_h_s, NULL, PRIM_INT__k_s_i_s);
1080 
1081 
1082                     ostei_general_vrr_I(8, 0, 7, 0, 1,
1083                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1084                             PRIM_INT__k_s_k_s, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_i_s, NULL, PRIM_INT__l_s_k_s);
1085 
1086 
1087                     ostei_general_vrr_I(5, 0, 11, 0, 4,
1088                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1089                             PRIM_INT__g_s_o_s, PRIM_INT__f_s_o_s, NULL, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_o_s);
1090 
1091 
1092                     ostei_general_vrr_I(6, 0, 10, 0, 3,
1093                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1094                             PRIM_INT__h_s_n_s, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_n_s);
1095 
1096 
1097                     ostei_general_vrr_I(7, 0, 9, 0, 2,
1098                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1099                             PRIM_INT__i_s_m_s, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_m_s);
1100 
1101 
1102                     ostei_general_vrr_I(8, 0, 8, 0, 1,
1103                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1104                             PRIM_INT__k_s_l_s, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_k_s, NULL, PRIM_INT__l_s_l_s);
1105 
1106 
1107                     ostei_general_vrr_I(6, 0, 11, 0, 3,
1108                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1109                             PRIM_INT__h_s_o_s, PRIM_INT__g_s_o_s, NULL, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_o_s);
1110 
1111 
1112                     ostei_general_vrr_I(7, 0, 10, 0, 2,
1113                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1114                             PRIM_INT__i_s_n_s, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_n_s);
1115 
1116 
1117                     ostei_general_vrr_I(8, 0, 9, 0, 1,
1118                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1119                             PRIM_INT__k_s_m_s, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_l_s, NULL, PRIM_INT__l_s_m_s);
1120 
1121 
1122                     ostei_general_vrr_I(7, 0, 11, 0, 2,
1123                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1124                             PRIM_INT__i_s_o_s, PRIM_INT__h_s_o_s, NULL, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_o_s);
1125 
1126 
1127                     ostei_general_vrr_I(8, 0, 10, 0, 1,
1128                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1129                             PRIM_INT__k_s_n_s, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_m_s, NULL, PRIM_INT__l_s_n_s);
1130 
1131 
1132                     ostei_general_vrr_I(8, 0, 11, 0, 1,
1133                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1134                             PRIM_INT__k_s_o_s, PRIM_INT__i_s_o_s, NULL, PRIM_INT__k_s_n_s, NULL, PRIM_INT__l_s_o_s);
1135 
1136 
1137 
1138 
1139                     ////////////////////////////////////
1140                     // Accumulate contracted integrals
1141                     ////////////////////////////////////
1142                     if(lastoffset == 0)
1143                     {
1144                         contract_all(540, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1145                         contract_all(675, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1146                         contract_all(825, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1147                         contract_all(990, PRIM_INT__g_s_n_s, PRIM_PTR_INT__g_s_n_s);
1148                         contract_all(1170, PRIM_INT__g_s_o_s, PRIM_PTR_INT__g_s_o_s);
1149                         contract_all(756, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1150                         contract_all(945, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1151                         contract_all(1155, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1152                         contract_all(1386, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1153                         contract_all(1638, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1154                         contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1155                         contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1156                         contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1157                         contract_all(1848, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1158                         contract_all(2184, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1159                         contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1160                         contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1161                         contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1162                         contract_all(2376, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1163                         contract_all(2808, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1164                         contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1165                         contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1166                         contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1167                         contract_all(2970, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1168                         contract_all(3510, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1169                     }
1170                     else
1171                     {
1172                         contract(540, shelloffsets, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1173                         contract(675, shelloffsets, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1174                         contract(825, shelloffsets, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1175                         contract(990, shelloffsets, PRIM_INT__g_s_n_s, PRIM_PTR_INT__g_s_n_s);
1176                         contract(1170, shelloffsets, PRIM_INT__g_s_o_s, PRIM_PTR_INT__g_s_o_s);
1177                         contract(756, shelloffsets, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1178                         contract(945, shelloffsets, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1179                         contract(1155, shelloffsets, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1180                         contract(1386, shelloffsets, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1181                         contract(1638, shelloffsets, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1182                         contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1183                         contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1184                         contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1185                         contract(1848, shelloffsets, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1186                         contract(2184, shelloffsets, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1187                         contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1188                         contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1189                         contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1190                         contract(2376, shelloffsets, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1191                         contract(2808, shelloffsets, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1192                         contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1193                         contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1194                         contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1195                         contract(2970, shelloffsets, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1196                         contract(3510, shelloffsets, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1197                         PRIM_PTR_INT__g_s_k_s += lastoffset*540;
1198                         PRIM_PTR_INT__g_s_l_s += lastoffset*675;
1199                         PRIM_PTR_INT__g_s_m_s += lastoffset*825;
1200                         PRIM_PTR_INT__g_s_n_s += lastoffset*990;
1201                         PRIM_PTR_INT__g_s_o_s += lastoffset*1170;
1202                         PRIM_PTR_INT__h_s_k_s += lastoffset*756;
1203                         PRIM_PTR_INT__h_s_l_s += lastoffset*945;
1204                         PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
1205                         PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
1206                         PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
1207                         PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1208                         PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1209                         PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1210                         PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
1211                         PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
1212                         PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1213                         PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1214                         PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1215                         PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
1216                         PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
1217                         PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1218                         PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1219                         PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1220                         PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
1221                         PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
1222                     }
1223 
1224                 }  // close loop over j
1225             }  // close loop over i
1226 
1227             //Advance to the next batch
1228             jstart = SIMINT_SIMD_ROUND(jend);
1229 
1230             //////////////////////////////////////////////
1231             // Contracted integrals: Horizontal recurrance
1232             //////////////////////////////////////////////
1233 
1234 
1235             const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1236 
1237 
1238             for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1239             {
1240                 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1241 
1242                 // set up HRR pointers
1243                 double const * restrict HRR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
1244                 double const * restrict HRR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
1245                 double const * restrict HRR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
1246                 double const * restrict HRR_INT__g_s_n_s = INT__g_s_n_s + abcd * 990;
1247                 double const * restrict HRR_INT__g_s_o_s = INT__g_s_o_s + abcd * 1170;
1248                 double const * restrict HRR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
1249                 double const * restrict HRR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
1250                 double const * restrict HRR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
1251                 double const * restrict HRR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
1252                 double const * restrict HRR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
1253                 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1254                 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1255                 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1256                 double const * restrict HRR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
1257                 double const * restrict HRR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
1258                 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1259                 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1260                 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1261                 double const * restrict HRR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
1262                 double const * restrict HRR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
1263                 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1264                 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1265                 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1266                 double const * restrict HRR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
1267                 double const * restrict HRR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
1268                 double * restrict HRR_INT__g_g_k_g = INT__g_g_k_g + real_abcd * 121500;
1269 
1270                 // form INT__g_p_k_s
1271                 HRR_J_g_p(
1272                     HRR_INT__g_p_k_s,
1273                     HRR_INT__g_s_k_s,
1274                     HRR_INT__h_s_k_s,
1275                     hAB, 36);
1276 
1277                 // form INT__g_p_l_s
1278                 HRR_J_g_p(
1279                     HRR_INT__g_p_l_s,
1280                     HRR_INT__g_s_l_s,
1281                     HRR_INT__h_s_l_s,
1282                     hAB, 45);
1283 
1284                 // form INT__g_p_m_s
1285                 HRR_J_g_p(
1286                     HRR_INT__g_p_m_s,
1287                     HRR_INT__g_s_m_s,
1288                     HRR_INT__h_s_m_s,
1289                     hAB, 55);
1290 
1291                 // form INT__g_p_n_s
1292                 HRR_J_g_p(
1293                     HRR_INT__g_p_n_s,
1294                     HRR_INT__g_s_n_s,
1295                     HRR_INT__h_s_n_s,
1296                     hAB, 66);
1297 
1298                 // form INT__g_p_o_s
1299                 HRR_J_g_p(
1300                     HRR_INT__g_p_o_s,
1301                     HRR_INT__g_s_o_s,
1302                     HRR_INT__h_s_o_s,
1303                     hAB, 78);
1304 
1305                 // form INT__h_p_k_s
1306                 ostei_general_hrr_J(5, 1, 7, 0, hAB, HRR_INT__i_s_k_s, HRR_INT__h_s_k_s, HRR_INT__h_p_k_s);
1307 
1308                 // form INT__h_p_l_s
1309                 ostei_general_hrr_J(5, 1, 8, 0, hAB, HRR_INT__i_s_l_s, HRR_INT__h_s_l_s, HRR_INT__h_p_l_s);
1310 
1311                 // form INT__h_p_m_s
1312                 ostei_general_hrr_J(5, 1, 9, 0, hAB, HRR_INT__i_s_m_s, HRR_INT__h_s_m_s, HRR_INT__h_p_m_s);
1313 
1314                 // form INT__h_p_n_s
1315                 ostei_general_hrr_J(5, 1, 10, 0, hAB, HRR_INT__i_s_n_s, HRR_INT__h_s_n_s, HRR_INT__h_p_n_s);
1316 
1317                 // form INT__h_p_o_s
1318                 ostei_general_hrr_J(5, 1, 11, 0, hAB, HRR_INT__i_s_o_s, HRR_INT__h_s_o_s, HRR_INT__h_p_o_s);
1319 
1320                 // form INT__i_p_k_s
1321                 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);
1322 
1323                 // form INT__i_p_l_s
1324                 ostei_general_hrr_J(6, 1, 8, 0, hAB, HRR_INT__k_s_l_s, HRR_INT__i_s_l_s, HRR_INT__i_p_l_s);
1325 
1326                 // form INT__i_p_m_s
1327                 ostei_general_hrr_J(6, 1, 9, 0, hAB, HRR_INT__k_s_m_s, HRR_INT__i_s_m_s, HRR_INT__i_p_m_s);
1328 
1329                 // form INT__i_p_n_s
1330                 ostei_general_hrr_J(6, 1, 10, 0, hAB, HRR_INT__k_s_n_s, HRR_INT__i_s_n_s, HRR_INT__i_p_n_s);
1331 
1332                 // form INT__i_p_o_s
1333                 ostei_general_hrr_J(6, 1, 11, 0, hAB, HRR_INT__k_s_o_s, HRR_INT__i_s_o_s, HRR_INT__i_p_o_s);
1334 
1335                 // form INT__k_p_k_s
1336                 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);
1337 
1338                 // form INT__k_p_l_s
1339                 ostei_general_hrr_J(7, 1, 8, 0, hAB, HRR_INT__l_s_l_s, HRR_INT__k_s_l_s, HRR_INT__k_p_l_s);
1340 
1341                 // form INT__k_p_m_s
1342                 ostei_general_hrr_J(7, 1, 9, 0, hAB, HRR_INT__l_s_m_s, HRR_INT__k_s_m_s, HRR_INT__k_p_m_s);
1343 
1344                 // form INT__k_p_n_s
1345                 ostei_general_hrr_J(7, 1, 10, 0, hAB, HRR_INT__l_s_n_s, HRR_INT__k_s_n_s, HRR_INT__k_p_n_s);
1346 
1347                 // form INT__k_p_o_s
1348                 ostei_general_hrr_J(7, 1, 11, 0, hAB, HRR_INT__l_s_o_s, HRR_INT__k_s_o_s, HRR_INT__k_p_o_s);
1349 
1350                 // form INT__g_d_k_s
1351                 ostei_general_hrr_J(4, 2, 7, 0, hAB, HRR_INT__h_p_k_s, HRR_INT__g_p_k_s, HRR_INT__g_d_k_s);
1352 
1353                 // form INT__g_d_l_s
1354                 ostei_general_hrr_J(4, 2, 8, 0, hAB, HRR_INT__h_p_l_s, HRR_INT__g_p_l_s, HRR_INT__g_d_l_s);
1355 
1356                 // form INT__g_d_m_s
1357                 ostei_general_hrr_J(4, 2, 9, 0, hAB, HRR_INT__h_p_m_s, HRR_INT__g_p_m_s, HRR_INT__g_d_m_s);
1358 
1359                 // form INT__g_d_n_s
1360                 ostei_general_hrr_J(4, 2, 10, 0, hAB, HRR_INT__h_p_n_s, HRR_INT__g_p_n_s, HRR_INT__g_d_n_s);
1361 
1362                 // form INT__g_d_o_s
1363                 ostei_general_hrr_J(4, 2, 11, 0, hAB, HRR_INT__h_p_o_s, HRR_INT__g_p_o_s, HRR_INT__g_d_o_s);
1364 
1365                 // form INT__h_d_k_s
1366                 ostei_general_hrr_J(5, 2, 7, 0, hAB, HRR_INT__i_p_k_s, HRR_INT__h_p_k_s, HRR_INT__h_d_k_s);
1367 
1368                 // form INT__h_d_l_s
1369                 ostei_general_hrr_J(5, 2, 8, 0, hAB, HRR_INT__i_p_l_s, HRR_INT__h_p_l_s, HRR_INT__h_d_l_s);
1370 
1371                 // form INT__h_d_m_s
1372                 ostei_general_hrr_J(5, 2, 9, 0, hAB, HRR_INT__i_p_m_s, HRR_INT__h_p_m_s, HRR_INT__h_d_m_s);
1373 
1374                 // form INT__h_d_n_s
1375                 ostei_general_hrr_J(5, 2, 10, 0, hAB, HRR_INT__i_p_n_s, HRR_INT__h_p_n_s, HRR_INT__h_d_n_s);
1376 
1377                 // form INT__h_d_o_s
1378                 ostei_general_hrr_J(5, 2, 11, 0, hAB, HRR_INT__i_p_o_s, HRR_INT__h_p_o_s, HRR_INT__h_d_o_s);
1379 
1380                 // form INT__i_d_k_s
1381                 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);
1382 
1383                 // form INT__i_d_l_s
1384                 ostei_general_hrr_J(6, 2, 8, 0, hAB, HRR_INT__k_p_l_s, HRR_INT__i_p_l_s, HRR_INT__i_d_l_s);
1385 
1386                 // form INT__i_d_m_s
1387                 ostei_general_hrr_J(6, 2, 9, 0, hAB, HRR_INT__k_p_m_s, HRR_INT__i_p_m_s, HRR_INT__i_d_m_s);
1388 
1389                 // form INT__i_d_n_s
1390                 ostei_general_hrr_J(6, 2, 10, 0, hAB, HRR_INT__k_p_n_s, HRR_INT__i_p_n_s, HRR_INT__i_d_n_s);
1391 
1392                 // form INT__i_d_o_s
1393                 ostei_general_hrr_J(6, 2, 11, 0, hAB, HRR_INT__k_p_o_s, HRR_INT__i_p_o_s, HRR_INT__i_d_o_s);
1394 
1395                 // form INT__g_f_k_s
1396                 ostei_general_hrr_J(4, 3, 7, 0, hAB, HRR_INT__h_d_k_s, HRR_INT__g_d_k_s, HRR_INT__g_f_k_s);
1397 
1398                 // form INT__g_f_l_s
1399                 ostei_general_hrr_J(4, 3, 8, 0, hAB, HRR_INT__h_d_l_s, HRR_INT__g_d_l_s, HRR_INT__g_f_l_s);
1400 
1401                 // form INT__g_f_m_s
1402                 ostei_general_hrr_J(4, 3, 9, 0, hAB, HRR_INT__h_d_m_s, HRR_INT__g_d_m_s, HRR_INT__g_f_m_s);
1403 
1404                 // form INT__g_f_n_s
1405                 ostei_general_hrr_J(4, 3, 10, 0, hAB, HRR_INT__h_d_n_s, HRR_INT__g_d_n_s, HRR_INT__g_f_n_s);
1406 
1407                 // form INT__g_f_o_s
1408                 ostei_general_hrr_J(4, 3, 11, 0, hAB, HRR_INT__h_d_o_s, HRR_INT__g_d_o_s, HRR_INT__g_f_o_s);
1409 
1410                 // form INT__h_f_k_s
1411                 ostei_general_hrr_J(5, 3, 7, 0, hAB, HRR_INT__i_d_k_s, HRR_INT__h_d_k_s, HRR_INT__h_f_k_s);
1412 
1413                 // form INT__h_f_l_s
1414                 ostei_general_hrr_J(5, 3, 8, 0, hAB, HRR_INT__i_d_l_s, HRR_INT__h_d_l_s, HRR_INT__h_f_l_s);
1415 
1416                 // form INT__h_f_m_s
1417                 ostei_general_hrr_J(5, 3, 9, 0, hAB, HRR_INT__i_d_m_s, HRR_INT__h_d_m_s, HRR_INT__h_f_m_s);
1418 
1419                 // form INT__h_f_n_s
1420                 ostei_general_hrr_J(5, 3, 10, 0, hAB, HRR_INT__i_d_n_s, HRR_INT__h_d_n_s, HRR_INT__h_f_n_s);
1421 
1422                 // form INT__h_f_o_s
1423                 ostei_general_hrr_J(5, 3, 11, 0, hAB, HRR_INT__i_d_o_s, HRR_INT__h_d_o_s, HRR_INT__h_f_o_s);
1424 
1425                 // form INT__g_g_k_s
1426                 ostei_general_hrr_J(4, 4, 7, 0, hAB, HRR_INT__h_f_k_s, HRR_INT__g_f_k_s, HRR_INT__g_g_k_s);
1427 
1428                 // form INT__g_g_l_s
1429                 ostei_general_hrr_J(4, 4, 8, 0, hAB, HRR_INT__h_f_l_s, HRR_INT__g_f_l_s, HRR_INT__g_g_l_s);
1430 
1431                 // form INT__g_g_m_s
1432                 ostei_general_hrr_J(4, 4, 9, 0, hAB, HRR_INT__h_f_m_s, HRR_INT__g_f_m_s, HRR_INT__g_g_m_s);
1433 
1434                 // form INT__g_g_n_s
1435                 ostei_general_hrr_J(4, 4, 10, 0, hAB, HRR_INT__h_f_n_s, HRR_INT__g_f_n_s, HRR_INT__g_g_n_s);
1436 
1437                 // form INT__g_g_o_s
1438                 ostei_general_hrr_J(4, 4, 11, 0, hAB, HRR_INT__h_f_o_s, HRR_INT__g_f_o_s, HRR_INT__g_g_o_s);
1439 
1440                 // form INT__g_g_k_p
1441                 ostei_general_hrr_L(4, 4, 7, 1, hCD, HRR_INT__g_g_l_s, HRR_INT__g_g_k_s, HRR_INT__g_g_k_p);
1442 
1443                 // form INT__g_g_l_p
1444                 ostei_general_hrr_L(4, 4, 8, 1, hCD, HRR_INT__g_g_m_s, HRR_INT__g_g_l_s, HRR_INT__g_g_l_p);
1445 
1446                 // form INT__g_g_m_p
1447                 ostei_general_hrr_L(4, 4, 9, 1, hCD, HRR_INT__g_g_n_s, HRR_INT__g_g_m_s, HRR_INT__g_g_m_p);
1448 
1449                 // form INT__g_g_n_p
1450                 ostei_general_hrr_L(4, 4, 10, 1, hCD, HRR_INT__g_g_o_s, HRR_INT__g_g_n_s, HRR_INT__g_g_n_p);
1451 
1452                 // form INT__g_g_k_d
1453                 ostei_general_hrr_L(4, 4, 7, 2, hCD, HRR_INT__g_g_l_p, HRR_INT__g_g_k_p, HRR_INT__g_g_k_d);
1454 
1455                 // form INT__g_g_l_d
1456                 ostei_general_hrr_L(4, 4, 8, 2, hCD, HRR_INT__g_g_m_p, HRR_INT__g_g_l_p, HRR_INT__g_g_l_d);
1457 
1458                 // form INT__g_g_m_d
1459                 ostei_general_hrr_L(4, 4, 9, 2, hCD, HRR_INT__g_g_n_p, HRR_INT__g_g_m_p, HRR_INT__g_g_m_d);
1460 
1461                 // form INT__g_g_k_f
1462                 ostei_general_hrr_L(4, 4, 7, 3, hCD, HRR_INT__g_g_l_d, HRR_INT__g_g_k_d, HRR_INT__g_g_k_f);
1463 
1464                 // form INT__g_g_l_f
1465                 ostei_general_hrr_L(4, 4, 8, 3, hCD, HRR_INT__g_g_m_d, HRR_INT__g_g_l_d, HRR_INT__g_g_l_f);
1466 
1467                 // form INT__g_g_k_g
1468                 ostei_general_hrr_L(4, 4, 7, 4, hCD, HRR_INT__g_g_l_f, HRR_INT__g_g_k_f, HRR_INT__g_g_k_g);
1469 
1470 
1471             }  // close HRR loop
1472 
1473 
1474         }   // close loop cdbatch
1475 
1476         istart = iend;
1477     }  // close loop over ab
1478 
1479     return P.nshell12_clip * Q.nshell12_clip;
1480 }
1481 
ostei_g_g_g_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_g_g_k)1482 int ostei_g_g_g_k(struct simint_multi_shellpair const P,
1483                   struct simint_multi_shellpair const Q,
1484                   double screen_tol,
1485                   double * const restrict work,
1486                   double * const restrict INT__g_g_g_k)
1487 {
1488     double Q_AB[3*Q.nshell12];
1489     struct simint_multi_shellpair Q_tmp = Q;
1490     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1491     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1492     Q_tmp.AB_x = Q_AB;
1493     Q_tmp.AB_y = Q_AB + Q.nshell12;
1494     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1495 
1496     for(int i = 0; i < Q.nshell12; i++)
1497     {
1498         Q_tmp.AB_x[i] = -Q.AB_x[i];
1499         Q_tmp.AB_y[i] = -Q.AB_y[i];
1500         Q_tmp.AB_z[i] = -Q.AB_z[i];
1501     }
1502 
1503     int ret = ostei_g_g_k_g(P, Q_tmp, screen_tol, work, INT__g_g_g_k);
1504     double buffer[121500] SIMINT_ALIGN_ARRAY_DBL;
1505 
1506     for(int q = 0; q < ret; q++)
1507     {
1508         int idx = 0;
1509         for(int a = 0; a < 15; ++a)
1510         for(int b = 0; b < 15; ++b)
1511         for(int c = 0; c < 15; ++c)
1512         for(int d = 0; d < 36; ++d)
1513             buffer[idx++] = INT__g_g_g_k[q*121500+a*8100+b*540+d*15+c];
1514 
1515         memcpy(INT__g_g_g_k+q*121500, buffer, 121500*sizeof(double));
1516     }
1517 
1518     return ret;
1519 }
1520 
1521