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_h_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_h_g)8 int ostei_g_g_h_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_h_g)
13 {
14 
15     SIMINT_ASSUME_ALIGN_DBL(work);
16     SIMINT_ASSUME_ALIGN_DBL(INT__g_g_h_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_h_s = work + (SIMINT_NSHELL_SIMD * 0);
30     double * const INT__g_s_i_s = work + (SIMINT_NSHELL_SIMD * 315);
31     double * const INT__g_s_k_s = work + (SIMINT_NSHELL_SIMD * 735);
32     double * const INT__g_s_l_s = work + (SIMINT_NSHELL_SIMD * 1275);
33     double * const INT__g_s_m_s = work + (SIMINT_NSHELL_SIMD * 1950);
34     double * const INT__h_s_h_s = work + (SIMINT_NSHELL_SIMD * 2775);
35     double * const INT__h_s_i_s = work + (SIMINT_NSHELL_SIMD * 3216);
36     double * const INT__h_s_k_s = work + (SIMINT_NSHELL_SIMD * 3804);
37     double * const INT__h_s_l_s = work + (SIMINT_NSHELL_SIMD * 4560);
38     double * const INT__h_s_m_s = work + (SIMINT_NSHELL_SIMD * 5505);
39     double * const INT__i_s_h_s = work + (SIMINT_NSHELL_SIMD * 6660);
40     double * const INT__i_s_i_s = work + (SIMINT_NSHELL_SIMD * 7248);
41     double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 8032);
42     double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 9040);
43     double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 10300);
44     double * const INT__k_s_h_s = work + (SIMINT_NSHELL_SIMD * 11840);
45     double * const INT__k_s_i_s = work + (SIMINT_NSHELL_SIMD * 12596);
46     double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 13604);
47     double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 14900);
48     double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 16520);
49     double * const INT__l_s_h_s = work + (SIMINT_NSHELL_SIMD * 18500);
50     double * const INT__l_s_i_s = work + (SIMINT_NSHELL_SIMD * 19445);
51     double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 20705);
52     double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 22325);
53     double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 24350);
54     SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*26825);
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 + 18;
57     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 69;
58     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 165;
59     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 315;
60     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_h_s = primwork + 525;
61     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_i_s = primwork + 798;
62     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_k_s = primwork + 1134;
63     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_l_s = primwork + 1530;
64     SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_m_s = primwork + 1980;
65     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 2475;
66     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 2499;
67     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 2571;
68     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 2715;
69     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 2955;
70     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 3315;
71     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_i_s = primwork + 3819;
72     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_k_s = primwork + 4491;
73     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_l_s = primwork + 5355;
74     SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_m_s = primwork + 6435;
75     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 7755;
76     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 7797;
77     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 7923;
78     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 8175;
79     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 8595;
80     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 9225;
81     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 10107;
82     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_k_s = primwork + 11283;
83     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_l_s = primwork + 12795;
84     SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_m_s = primwork + 14685;
85     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 16995;
86     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 17055;
87     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 17235;
88     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 17595;
89     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 18195;
90     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 19095;
91     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 20355;
92     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 22035;
93     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_l_s = primwork + 24195;
94     SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_m_s = primwork + 26895;
95     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 30195;
96     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 30420;
97     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 30870;
98     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 31620;
99     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 32745;
100     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 34320;
101     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 36420;
102     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 39120;
103     SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_m_s = primwork + 42495;
104     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 46620;
105     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 47124;
106     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 47964;
107     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 49224;
108     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 50988;
109     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 53340;
110     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 56364;
111     SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 60144;
112     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 64764;
113     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 65604;
114     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 66864;
115     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 68628;
116     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 70980;
117     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 74004;
118     SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 77784;
119     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 82404;
120     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 83484;
121     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 84996;
122     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 87012;
123     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 89604;
124     SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 92844;
125     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 96804;
126     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 97749;
127     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 99009;
128     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 100629;
129     SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 102654;
130     double * const hrrwork = (double *)(primwork + 105129);
131     double * const HRR_INT__g_p_h_s = hrrwork + 0;
132     double * const HRR_INT__g_p_i_s = hrrwork + 945;
133     double * const HRR_INT__g_p_k_s = hrrwork + 2205;
134     double * const HRR_INT__g_p_l_s = hrrwork + 3825;
135     double * const HRR_INT__g_p_m_s = hrrwork + 5850;
136     double * const HRR_INT__g_d_h_s = hrrwork + 8325;
137     double * const HRR_INT__g_d_i_s = hrrwork + 10215;
138     double * const HRR_INT__g_d_k_s = hrrwork + 12735;
139     double * const HRR_INT__g_d_l_s = hrrwork + 15975;
140     double * const HRR_INT__g_d_m_s = hrrwork + 20025;
141     double * const HRR_INT__g_f_h_s = hrrwork + 24975;
142     double * const HRR_INT__g_f_i_s = hrrwork + 28125;
143     double * const HRR_INT__g_f_k_s = hrrwork + 32325;
144     double * const HRR_INT__g_f_l_s = hrrwork + 37725;
145     double * const HRR_INT__g_f_m_s = hrrwork + 44475;
146     double * const HRR_INT__g_g_h_s = hrrwork + 52725;
147     double * const HRR_INT__g_g_h_p = hrrwork + 57450;
148     double * const HRR_INT__g_g_h_d = hrrwork + 71625;
149     double * const HRR_INT__g_g_h_f = hrrwork + 99975;
150     double * const HRR_INT__g_g_i_s = hrrwork + 147225;
151     double * const HRR_INT__g_g_i_p = hrrwork + 153525;
152     double * const HRR_INT__g_g_i_d = hrrwork + 172425;
153     double * const HRR_INT__g_g_i_f = hrrwork + 210225;
154     double * const HRR_INT__g_g_k_s = hrrwork + 273225;
155     double * const HRR_INT__g_g_k_p = hrrwork + 281325;
156     double * const HRR_INT__g_g_k_d = hrrwork + 305625;
157     double * const HRR_INT__g_g_l_s = hrrwork + 354225;
158     double * const HRR_INT__g_g_l_p = hrrwork + 364350;
159     double * const HRR_INT__g_g_m_s = hrrwork + 394725;
160     double * const HRR_INT__h_p_h_s = hrrwork + 407100;
161     double * const HRR_INT__h_p_i_s = hrrwork + 408423;
162     double * const HRR_INT__h_p_k_s = hrrwork + 410187;
163     double * const HRR_INT__h_p_l_s = hrrwork + 412455;
164     double * const HRR_INT__h_p_m_s = hrrwork + 415290;
165     double * const HRR_INT__h_d_h_s = hrrwork + 418755;
166     double * const HRR_INT__h_d_i_s = hrrwork + 421401;
167     double * const HRR_INT__h_d_k_s = hrrwork + 424929;
168     double * const HRR_INT__h_d_l_s = hrrwork + 429465;
169     double * const HRR_INT__h_d_m_s = hrrwork + 435135;
170     double * const HRR_INT__h_f_h_s = hrrwork + 442065;
171     double * const HRR_INT__h_f_i_s = hrrwork + 446475;
172     double * const HRR_INT__h_f_k_s = hrrwork + 452355;
173     double * const HRR_INT__h_f_l_s = hrrwork + 459915;
174     double * const HRR_INT__h_f_m_s = hrrwork + 469365;
175     double * const HRR_INT__i_p_h_s = hrrwork + 480915;
176     double * const HRR_INT__i_p_i_s = hrrwork + 482679;
177     double * const HRR_INT__i_p_k_s = hrrwork + 485031;
178     double * const HRR_INT__i_p_l_s = hrrwork + 488055;
179     double * const HRR_INT__i_p_m_s = hrrwork + 491835;
180     double * const HRR_INT__i_d_h_s = hrrwork + 496455;
181     double * const HRR_INT__i_d_i_s = hrrwork + 499983;
182     double * const HRR_INT__i_d_k_s = hrrwork + 504687;
183     double * const HRR_INT__i_d_l_s = hrrwork + 510735;
184     double * const HRR_INT__i_d_m_s = hrrwork + 518295;
185     double * const HRR_INT__k_p_h_s = hrrwork + 527535;
186     double * const HRR_INT__k_p_i_s = hrrwork + 529803;
187     double * const HRR_INT__k_p_k_s = hrrwork + 532827;
188     double * const HRR_INT__k_p_l_s = hrrwork + 536715;
189     double * const HRR_INT__k_p_m_s = hrrwork + 541575;
190 
191 
192     // Create constants
193     const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
194     const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
195     const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
196     const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
197     const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
198     const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
199     const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
200     const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
201     const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
202     const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
203 
204 
205     ////////////////////////////////////////
206     // Loop over shells and primitives
207     ////////////////////////////////////////
208 
209     real_abcd = 0;
210     istart = 0;
211     for(ab = 0; ab < P.nshell12_clip; ++ab)
212     {
213         const int iend = istart + P.nprim12[ab];
214 
215         cd = 0;
216         jstart = 0;
217 
218         for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
219         {
220             const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
221             int jend = jstart;
222             for(i = 0; i < nshellbatch; i++)
223                 jend += Q.nprim12[cd+i];
224 
225             // Clear the beginning of the workspace (where we are accumulating integrals)
226             memset(work, 0, SIMINT_NSHELL_SIMD * 26825 * sizeof(double));
227             abcd = 0;
228 
229 
230             for(i = istart; i < iend; ++i)
231             {
232                 SIMINT_DBLTYPE bra_screen_max;  // only used if check_screen
233 
234                 if(check_screen)
235                 {
236                     // Skip this whole thing if always insignificant
237                     if((P.screen[i] * Q.screen_max) < screen_tol)
238                         continue;
239                     bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
240                 }
241 
242                 icd = 0;
243                 iprimcd = 0;
244                 nprim_icd = Q.nprim12[cd];
245                 double * restrict PRIM_PTR_INT__g_s_h_s = INT__g_s_h_s + abcd * 315;
246                 double * restrict PRIM_PTR_INT__g_s_i_s = INT__g_s_i_s + abcd * 420;
247                 double * restrict PRIM_PTR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
248                 double * restrict PRIM_PTR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
249                 double * restrict PRIM_PTR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
250                 double * restrict PRIM_PTR_INT__h_s_h_s = INT__h_s_h_s + abcd * 441;
251                 double * restrict PRIM_PTR_INT__h_s_i_s = INT__h_s_i_s + abcd * 588;
252                 double * restrict PRIM_PTR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
253                 double * restrict PRIM_PTR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
254                 double * restrict PRIM_PTR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
255                 double * restrict PRIM_PTR_INT__i_s_h_s = INT__i_s_h_s + abcd * 588;
256                 double * restrict PRIM_PTR_INT__i_s_i_s = INT__i_s_i_s + abcd * 784;
257                 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
258                 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
259                 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
260                 double * restrict PRIM_PTR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
261                 double * restrict PRIM_PTR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
262                 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
263                 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
264                 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
265                 double * restrict PRIM_PTR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
266                 double * restrict PRIM_PTR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
267                 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
268                 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
269                 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
270 
271 
272 
273                 // Load these one per loop over i
274                 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
275                 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
276                 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
277 
278                 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
279 
280                 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
281                 {
282                     // calculate the shell offsets
283                     // these are the offset from the shell pointed to by cd
284                     // for each element
285                     int shelloffsets[SIMINT_SIMD_LEN] = {0};
286                     int lastoffset = 0;
287                     const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
288 
289                     if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
290                     {
291                         // Handle if the first element of the vector is a new shell
292                         if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
293                         {
294                             nprim_icd += Q.nprim12[cd + (++icd)];
295                             PRIM_PTR_INT__g_s_h_s += 315;
296                             PRIM_PTR_INT__g_s_i_s += 420;
297                             PRIM_PTR_INT__g_s_k_s += 540;
298                             PRIM_PTR_INT__g_s_l_s += 675;
299                             PRIM_PTR_INT__g_s_m_s += 825;
300                             PRIM_PTR_INT__h_s_h_s += 441;
301                             PRIM_PTR_INT__h_s_i_s += 588;
302                             PRIM_PTR_INT__h_s_k_s += 756;
303                             PRIM_PTR_INT__h_s_l_s += 945;
304                             PRIM_PTR_INT__h_s_m_s += 1155;
305                             PRIM_PTR_INT__i_s_h_s += 588;
306                             PRIM_PTR_INT__i_s_i_s += 784;
307                             PRIM_PTR_INT__i_s_k_s += 1008;
308                             PRIM_PTR_INT__i_s_l_s += 1260;
309                             PRIM_PTR_INT__i_s_m_s += 1540;
310                             PRIM_PTR_INT__k_s_h_s += 756;
311                             PRIM_PTR_INT__k_s_i_s += 1008;
312                             PRIM_PTR_INT__k_s_k_s += 1296;
313                             PRIM_PTR_INT__k_s_l_s += 1620;
314                             PRIM_PTR_INT__k_s_m_s += 1980;
315                             PRIM_PTR_INT__l_s_h_s += 945;
316                             PRIM_PTR_INT__l_s_i_s += 1260;
317                             PRIM_PTR_INT__l_s_k_s += 1620;
318                             PRIM_PTR_INT__l_s_l_s += 2025;
319                             PRIM_PTR_INT__l_s_m_s += 2475;
320                         }
321                         iprimcd++;
322                         for(n = 1; n < SIMINT_SIMD_LEN; ++n)
323                         {
324                             if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
325                             {
326                                 shelloffsets[n] = shelloffsets[n-1] + 1;
327                                 lastoffset++;
328                                 nprim_icd += Q.nprim12[cd + (++icd)];
329                             }
330                             else
331                                 shelloffsets[n] = shelloffsets[n-1];
332                             iprimcd++;
333                         }
334                     }
335                     else
336                         iprimcd += SIMINT_SIMD_LEN;
337 
338                     // Do we have to compute this vector (or has it been screened out)?
339                     // (not_screened != 0 means we have to do this vector)
340                     if(check_screen)
341                     {
342                         const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
343                         if(vmax < screen_tol)
344                         {
345                             PRIM_PTR_INT__g_s_h_s += lastoffset*315;
346                             PRIM_PTR_INT__g_s_i_s += lastoffset*420;
347                             PRIM_PTR_INT__g_s_k_s += lastoffset*540;
348                             PRIM_PTR_INT__g_s_l_s += lastoffset*675;
349                             PRIM_PTR_INT__g_s_m_s += lastoffset*825;
350                             PRIM_PTR_INT__h_s_h_s += lastoffset*441;
351                             PRIM_PTR_INT__h_s_i_s += lastoffset*588;
352                             PRIM_PTR_INT__h_s_k_s += lastoffset*756;
353                             PRIM_PTR_INT__h_s_l_s += lastoffset*945;
354                             PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
355                             PRIM_PTR_INT__i_s_h_s += lastoffset*588;
356                             PRIM_PTR_INT__i_s_i_s += lastoffset*784;
357                             PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
358                             PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
359                             PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
360                             PRIM_PTR_INT__k_s_h_s += lastoffset*756;
361                             PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
362                             PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
363                             PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
364                             PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
365                             PRIM_PTR_INT__l_s_h_s += lastoffset*945;
366                             PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
367                             PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
368                             PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
369                             PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
370                             continue;
371                         }
372                     }
373 
374                     const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
375                     const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
376                     const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
377                     const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
378 
379 
380                     /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
381                     SIMINT_DBLTYPE PQ[3];
382                     PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
383                     PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
384                     PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
385                     SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
386                     R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
387                     R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
388 
389                     const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
390                     const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
391                     const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
392                     const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
393                     const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
394                     const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
395                     const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
396 
397                     // NOTE: Minus sign!
398                     const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
399                     SIMINT_DBLTYPE aop_PQ[3];
400                     aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
401                     aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
402                     aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
403 
404                     SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
405                     SIMINT_DBLTYPE aoq_PQ[3];
406                     aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
407                     aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
408                     aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
409                     // Put a minus sign here so we don't have to in RR routines
410                     a_over_q = SIMINT_NEG(a_over_q);
411 
412 
413                     //////////////////////////////////////////////
414                     // Fjt function section
415                     // Maximum v value: 17
416                     //////////////////////////////////////////////
417                     // The parameter to the Fjt function
418                     const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
419 
420 
421                     const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
422 
423 
424                     boys_F_split(PRIM_INT__s_s_s_s, F_x, 17);
425                     SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
426                     prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
427                     for(n = 0; n <= 17; n++)
428                         PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
429 
430                     //////////////////////////////////////////////
431                     // Primitive integrals: Vertical recurrance
432                     //////////////////////////////////////////////
433 
434                     const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
435                     const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
436                     const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
437                     const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
438                     const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
439                     const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
440                     const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
441                     const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
442                     const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
443                     const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
444                     const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
445                     const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
446                     const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
447                     const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
448                     const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
449                     const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
450                     const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
451                     const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
452                     const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
453                     const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
454                     const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
455                     const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
456                     const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
457                     const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
458 
459 
460 
461                     // Forming PRIM_INT__s_s_p_s[17 * 3];
462                     for(n = 0; n < 17; ++n)  // loop over orders of auxiliary function
463                     {
464 
465                         PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
466                         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]);
467 
468                         PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
469                         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]);
470 
471                         PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
472                         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]);
473 
474                     }
475 
476 
477 
478                     // Forming PRIM_INT__s_s_d_s[16 * 6];
479                     for(n = 0; n < 16; ++n)  // loop over orders of auxiliary function
480                     {
481 
482                         PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
483                         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]);
484                         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]);
485 
486                         PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
487                         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]);
488 
489                         PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
490                         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]);
491 
492                         PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
493                         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]);
494                         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]);
495 
496                         PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
497                         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]);
498 
499                         PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
500                         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]);
501                         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]);
502 
503                     }
504 
505 
506 
507                     // Forming PRIM_INT__s_s_f_s[15 * 10];
508                     for(n = 0; n < 15; ++n)  // loop over orders of auxiliary function
509                     {
510 
511                         PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
512                         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]);
513                         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]);
514 
515                         PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
516                         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]);
517 
518                         PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
519                         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]);
520 
521                         PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
522                         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]);
523 
524                         PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
525                         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]);
526 
527                         PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
528                         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]);
529 
530                         PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
531                         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]);
532                         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]);
533 
534                         PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
535                         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]);
536 
537                         PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
538                         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]);
539 
540                         PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
541                         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]);
542                         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]);
543 
544                     }
545 
546 
547                     VRR_K_s_s_g_s(
548                             PRIM_INT__s_s_g_s,
549                             PRIM_INT__s_s_f_s,
550                             PRIM_INT__s_s_d_s,
551                             Q_PA,
552                             a_over_q,
553                             aoq_PQ,
554                             one_over_2q,
555                             14);
556 
557 
558                     VRR_K_s_s_h_s(
559                             PRIM_INT__s_s_h_s,
560                             PRIM_INT__s_s_g_s,
561                             PRIM_INT__s_s_f_s,
562                             Q_PA,
563                             a_over_q,
564                             aoq_PQ,
565                             one_over_2q,
566                             13);
567 
568 
569                     ostei_general_vrr_I(1, 0, 5, 0, 8,
570                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
571                             PRIM_INT__s_s_h_s, NULL, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
572 
573 
574                     VRR_I_p_s_g_s(
575                             PRIM_INT__p_s_g_s,
576                             PRIM_INT__s_s_g_s,
577                             PRIM_INT__s_s_f_s,
578                             P_PA,
579                             aop_PQ,
580                             one_over_2pq,
581                             8);
582 
583 
584                     ostei_general_vrr_I(2, 0, 5, 0, 7,
585                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
586                             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);
587 
588 
589                     VRR_I_p_s_f_s(
590                             PRIM_INT__p_s_f_s,
591                             PRIM_INT__s_s_f_s,
592                             PRIM_INT__s_s_d_s,
593                             P_PA,
594                             aop_PQ,
595                             one_over_2pq,
596                             8);
597 
598 
599                     ostei_general_vrr_I(2, 0, 4, 0, 7,
600                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
601                             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);
602 
603 
604                     ostei_general_vrr_I(3, 0, 5, 0, 6,
605                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
606                             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);
607 
608 
609 
610                     // Forming PRIM_INT__p_s_d_s[8 * 18];
611                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
612                     {
613 
614                         PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
615                         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]);
616                         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]);
617 
618                         PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 1]);
619                         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]);
620                         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]);
621 
622                         PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 2]);
623                         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]);
624                         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]);
625 
626                         PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
627                         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]);
628 
629                         PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 4]);
630                         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]);
631 
632                         PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
633                         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]);
634 
635                         PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
636                         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]);
637 
638                         PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 1]);
639                         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]);
640                         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]);
641 
642                         PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 2]);
643                         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]);
644 
645                         PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
646                         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]);
647                         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]);
648 
649                         PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 4]);
650                         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]);
651                         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]);
652 
653                         PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
654                         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]);
655 
656                         PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
657                         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]);
658 
659                         PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
660                         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]);
661 
662                         PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 2]);
663                         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]);
664                         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]);
665 
666                         PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
667                         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]);
668 
669                         PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 4]);
670                         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]);
671                         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]);
672 
673                         PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
674                         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]);
675                         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]);
676 
677                     }
678 
679 
680                     VRR_I_d_s_f_s(
681                             PRIM_INT__d_s_f_s,
682                             PRIM_INT__p_s_f_s,
683                             PRIM_INT__s_s_f_s,
684                             PRIM_INT__p_s_d_s,
685                             P_PA,
686                             a_over_p,
687                             aop_PQ,
688                             one_over_2p,
689                             one_over_2pq,
690                             7);
691 
692 
693                     ostei_general_vrr_I(3, 0, 4, 0, 6,
694                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
695                             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);
696 
697 
698                     ostei_general_vrr_I(4, 0, 5, 0, 5,
699                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
700                             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);
701 
702 
703                     ostei_general_vrr1_K(6, 12,
704                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
705                             PRIM_INT__s_s_h_s, PRIM_INT__s_s_g_s, PRIM_INT__s_s_i_s);
706 
707 
708                     ostei_general_vrr_I(1, 0, 6, 0, 8,
709                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
710                             PRIM_INT__s_s_i_s, NULL, NULL, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_i_s);
711 
712 
713                     ostei_general_vrr_I(2, 0, 6, 0, 7,
714                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
715                             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);
716 
717 
718                     ostei_general_vrr_I(3, 0, 6, 0, 6,
719                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
720                             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);
721 
722 
723                     ostei_general_vrr_I(4, 0, 6, 0, 5,
724                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
725                             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);
726 
727 
728 
729                     // Forming PRIM_INT__p_s_p_s[8 * 9];
730                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
731                     {
732 
733                         PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
734                         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]);
735                         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]);
736 
737                         PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 1]);
738                         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]);
739 
740                         PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 2]);
741                         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]);
742 
743                         PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
744                         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]);
745 
746                         PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
747                         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]);
748                         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]);
749 
750                         PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 2]);
751                         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]);
752 
753                         PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
754                         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]);
755 
756                         PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
757                         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]);
758 
759                         PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
760                         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]);
761                         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]);
762 
763                     }
764 
765 
766                     VRR_I_d_s_d_s(
767                             PRIM_INT__d_s_d_s,
768                             PRIM_INT__p_s_d_s,
769                             PRIM_INT__s_s_d_s,
770                             PRIM_INT__p_s_p_s,
771                             P_PA,
772                             a_over_p,
773                             aop_PQ,
774                             one_over_2p,
775                             one_over_2pq,
776                             7);
777 
778 
779                     ostei_general_vrr_I(3, 0, 3, 0, 6,
780                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
781                             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);
782 
783 
784                     ostei_general_vrr_I(4, 0, 4, 0, 5,
785                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
786                             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);
787 
788 
789                     ostei_general_vrr_I(5, 0, 5, 0, 4,
790                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
791                             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);
792 
793 
794                     ostei_general_vrr1_K(7, 11,
795                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
796                             PRIM_INT__s_s_i_s, PRIM_INT__s_s_h_s, PRIM_INT__s_s_k_s);
797 
798 
799                     ostei_general_vrr_I(1, 0, 7, 0, 8,
800                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
801                             PRIM_INT__s_s_k_s, NULL, NULL, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_k_s);
802 
803 
804                     ostei_general_vrr_I(2, 0, 7, 0, 7,
805                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
806                             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);
807 
808 
809                     ostei_general_vrr_I(3, 0, 7, 0, 6,
810                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
811                             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);
812 
813 
814                     ostei_general_vrr_I(4, 0, 7, 0, 5,
815                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
816                             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);
817 
818 
819                     ostei_general_vrr_I(5, 0, 6, 0, 4,
820                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
821                             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);
822 
823 
824 
825                     // Forming PRIM_INT__p_s_s_s[8 * 3];
826                     for(n = 0; n < 8; ++n)  // loop over orders of auxiliary function
827                     {
828 
829                         PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
830                         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]);
831 
832                         PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
833                         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]);
834 
835                         PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
836                         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]);
837 
838                     }
839 
840 
841 
842                     // Forming PRIM_INT__d_s_p_s[7 * 18];
843                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
844                     {
845 
846                         PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
847                         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]);
848                         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]);
849                         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]);
850 
851                         PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 1]);
852                         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]);
853                         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]);
854 
855                         PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 2]);
856                         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]);
857                         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]);
858 
859                         PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 3]);
860                         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]);
861                         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]);
862 
863                         PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
864                         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]);
865                         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]);
866                         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]);
867 
868                         PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 5]);
869                         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]);
870                         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]);
871 
872                         PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 6]);
873                         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]);
874                         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]);
875 
876                         PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 7]);
877                         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]);
878                         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]);
879 
880                         PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
881                         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]);
882                         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]);
883                         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]);
884 
885                     }
886 
887 
888                     VRR_I_f_s_d_s(
889                             PRIM_INT__f_s_d_s,
890                             PRIM_INT__d_s_d_s,
891                             PRIM_INT__p_s_d_s,
892                             PRIM_INT__d_s_p_s,
893                             P_PA,
894                             a_over_p,
895                             aop_PQ,
896                             one_over_2p,
897                             one_over_2pq,
898                             6);
899 
900 
901                     ostei_general_vrr_I(4, 0, 3, 0, 5,
902                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
903                             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);
904 
905 
906                     ostei_general_vrr_I(5, 0, 4, 0, 4,
907                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
908                             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);
909 
910 
911                     ostei_general_vrr_I(6, 0, 5, 0, 3,
912                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
913                             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);
914 
915 
916                     ostei_general_vrr1_K(8, 10,
917                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
918                             PRIM_INT__s_s_k_s, PRIM_INT__s_s_i_s, PRIM_INT__s_s_l_s);
919 
920 
921                     ostei_general_vrr_I(1, 0, 8, 0, 8,
922                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
923                             PRIM_INT__s_s_l_s, NULL, NULL, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_l_s);
924 
925 
926                     ostei_general_vrr_I(2, 0, 8, 0, 7,
927                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
928                             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);
929 
930 
931                     ostei_general_vrr_I(3, 0, 8, 0, 6,
932                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
933                             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);
934 
935 
936                     ostei_general_vrr_I(4, 0, 8, 0, 5,
937                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
938                             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);
939 
940 
941                     ostei_general_vrr_I(5, 0, 7, 0, 4,
942                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
943                             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);
944 
945 
946                     ostei_general_vrr_I(6, 0, 6, 0, 3,
947                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
948                             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);
949 
950 
951 
952                     // Forming PRIM_INT__d_s_s_s[7 * 6];
953                     for(n = 0; n < 7; ++n)  // loop over orders of auxiliary function
954                     {
955 
956                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
957                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 0]);
958                         PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 0]);
959 
960                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
961                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_s_s[n * 6 + 3]);
962                         PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 3]);
963 
964                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
965                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_s_s[n * 6 + 5]);
966                         PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_FMADD( vrr_const_1_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__s_s_s_s[(n+1) * 1 + 0], PRIM_INT__s_s_s_s[n * 1 + 0]), PRIM_INT__d_s_s_s[n * 6 + 5]);
967 
968                     }
969 
970 
971                     VRR_I_f_s_p_s(
972                             PRIM_INT__f_s_p_s,
973                             PRIM_INT__d_s_p_s,
974                             PRIM_INT__p_s_p_s,
975                             PRIM_INT__d_s_s_s,
976                             P_PA,
977                             a_over_p,
978                             aop_PQ,
979                             one_over_2p,
980                             one_over_2pq,
981                             6);
982 
983 
984                     ostei_general_vrr_I(4, 0, 2, 0, 5,
985                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
986                             PRIM_INT__f_s_d_s, PRIM_INT__d_s_d_s, NULL, PRIM_INT__f_s_p_s, NULL, PRIM_INT__g_s_d_s);
987 
988 
989                     ostei_general_vrr_I(5, 0, 3, 0, 4,
990                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
991                             PRIM_INT__g_s_f_s, PRIM_INT__f_s_f_s, NULL, PRIM_INT__g_s_d_s, NULL, PRIM_INT__h_s_f_s);
992 
993 
994                     ostei_general_vrr_I(6, 0, 4, 0, 3,
995                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
996                             PRIM_INT__h_s_g_s, PRIM_INT__g_s_g_s, NULL, PRIM_INT__h_s_f_s, NULL, PRIM_INT__i_s_g_s);
997 
998 
999                     ostei_general_vrr_I(7, 0, 5, 0, 2,
1000                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1001                             PRIM_INT__i_s_h_s, PRIM_INT__h_s_h_s, NULL, PRIM_INT__i_s_g_s, NULL, PRIM_INT__k_s_h_s);
1002 
1003 
1004                     ostei_general_vrr1_K(9, 9,
1005                             one_over_2q, a_over_q, aoq_PQ, Q_PA,
1006                             PRIM_INT__s_s_l_s, PRIM_INT__s_s_k_s, PRIM_INT__s_s_m_s);
1007 
1008 
1009                     ostei_general_vrr_I(1, 0, 9, 0, 8,
1010                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1011                             PRIM_INT__s_s_m_s, NULL, NULL, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_m_s);
1012 
1013 
1014                     ostei_general_vrr_I(2, 0, 9, 0, 7,
1015                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1016                             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);
1017 
1018 
1019                     ostei_general_vrr_I(3, 0, 9, 0, 6,
1020                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1021                             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);
1022 
1023 
1024                     ostei_general_vrr_I(4, 0, 9, 0, 5,
1025                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1026                             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);
1027 
1028 
1029                     ostei_general_vrr_I(5, 0, 8, 0, 4,
1030                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1031                             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);
1032 
1033 
1034                     ostei_general_vrr_I(6, 0, 7, 0, 3,
1035                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1036                             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);
1037 
1038 
1039                     ostei_general_vrr_I(7, 0, 6, 0, 2,
1040                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1041                             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);
1042 
1043 
1044 
1045                     // Forming PRIM_INT__f_s_s_s[6 * 10];
1046                     for(n = 0; n < 6; ++n)  // loop over orders of auxiliary function
1047                     {
1048 
1049                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
1050                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 0]);
1051                         PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__f_s_s_s[n * 10 + 0]);
1052 
1053                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
1054                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 6]);
1055                         PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__f_s_s_s[n * 10 + 6]);
1056 
1057                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
1058                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 9]);
1059                         PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__f_s_s_s[n * 10 + 9]);
1060 
1061                     }
1062 
1063 
1064                     VRR_I_g_s_p_s(
1065                             PRIM_INT__g_s_p_s,
1066                             PRIM_INT__f_s_p_s,
1067                             PRIM_INT__d_s_p_s,
1068                             PRIM_INT__f_s_s_s,
1069                             P_PA,
1070                             a_over_p,
1071                             aop_PQ,
1072                             one_over_2p,
1073                             one_over_2pq,
1074                             5);
1075 
1076 
1077                     ostei_general_vrr_I(5, 0, 2, 0, 4,
1078                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1079                             PRIM_INT__g_s_d_s, PRIM_INT__f_s_d_s, NULL, PRIM_INT__g_s_p_s, NULL, PRIM_INT__h_s_d_s);
1080 
1081 
1082                     ostei_general_vrr_I(6, 0, 3, 0, 3,
1083                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1084                             PRIM_INT__h_s_f_s, PRIM_INT__g_s_f_s, NULL, PRIM_INT__h_s_d_s, NULL, PRIM_INT__i_s_f_s);
1085 
1086 
1087                     ostei_general_vrr_I(7, 0, 4, 0, 2,
1088                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1089                             PRIM_INT__i_s_g_s, PRIM_INT__h_s_g_s, NULL, PRIM_INT__i_s_f_s, NULL, PRIM_INT__k_s_g_s);
1090 
1091 
1092                     ostei_general_vrr_I(8, 0, 5, 0, 1,
1093                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1094                             PRIM_INT__k_s_h_s, PRIM_INT__i_s_h_s, NULL, PRIM_INT__k_s_g_s, NULL, PRIM_INT__l_s_h_s);
1095 
1096 
1097                     ostei_general_vrr_I(5, 0, 9, 0, 4,
1098                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1099                             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);
1100 
1101 
1102                     ostei_general_vrr_I(6, 0, 8, 0, 3,
1103                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1104                             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);
1105 
1106 
1107                     ostei_general_vrr_I(7, 0, 7, 0, 2,
1108                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1109                             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);
1110 
1111 
1112                     ostei_general_vrr_I(8, 0, 6, 0, 1,
1113                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1114                             PRIM_INT__k_s_i_s, PRIM_INT__i_s_i_s, NULL, PRIM_INT__k_s_h_s, NULL, PRIM_INT__l_s_i_s);
1115 
1116 
1117                     ostei_general_vrr_I(6, 0, 9, 0, 3,
1118                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1119                             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);
1120 
1121 
1122                     ostei_general_vrr_I(7, 0, 8, 0, 2,
1123                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1124                             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);
1125 
1126 
1127                     ostei_general_vrr_I(8, 0, 7, 0, 1,
1128                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1129                             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);
1130 
1131 
1132                     ostei_general_vrr_I(7, 0, 9, 0, 2,
1133                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1134                             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);
1135 
1136 
1137                     ostei_general_vrr_I(8, 0, 8, 0, 1,
1138                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1139                             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);
1140 
1141 
1142                     ostei_general_vrr_I(8, 0, 9, 0, 1,
1143                             one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1144                             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);
1145 
1146 
1147 
1148 
1149                     ////////////////////////////////////
1150                     // Accumulate contracted integrals
1151                     ////////////////////////////////////
1152                     if(lastoffset == 0)
1153                     {
1154                         contract_all(315, PRIM_INT__g_s_h_s, PRIM_PTR_INT__g_s_h_s);
1155                         contract_all(420, PRIM_INT__g_s_i_s, PRIM_PTR_INT__g_s_i_s);
1156                         contract_all(540, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1157                         contract_all(675, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1158                         contract_all(825, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1159                         contract_all(441, PRIM_INT__h_s_h_s, PRIM_PTR_INT__h_s_h_s);
1160                         contract_all(588, PRIM_INT__h_s_i_s, PRIM_PTR_INT__h_s_i_s);
1161                         contract_all(756, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1162                         contract_all(945, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1163                         contract_all(1155, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1164                         contract_all(588, PRIM_INT__i_s_h_s, PRIM_PTR_INT__i_s_h_s);
1165                         contract_all(784, PRIM_INT__i_s_i_s, PRIM_PTR_INT__i_s_i_s);
1166                         contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1167                         contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1168                         contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1169                         contract_all(756, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1170                         contract_all(1008, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1171                         contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1172                         contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1173                         contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1174                         contract_all(945, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1175                         contract_all(1260, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1176                         contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1177                         contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1178                         contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1179                     }
1180                     else
1181                     {
1182                         contract(315, shelloffsets, PRIM_INT__g_s_h_s, PRIM_PTR_INT__g_s_h_s);
1183                         contract(420, shelloffsets, PRIM_INT__g_s_i_s, PRIM_PTR_INT__g_s_i_s);
1184                         contract(540, shelloffsets, PRIM_INT__g_s_k_s, PRIM_PTR_INT__g_s_k_s);
1185                         contract(675, shelloffsets, PRIM_INT__g_s_l_s, PRIM_PTR_INT__g_s_l_s);
1186                         contract(825, shelloffsets, PRIM_INT__g_s_m_s, PRIM_PTR_INT__g_s_m_s);
1187                         contract(441, shelloffsets, PRIM_INT__h_s_h_s, PRIM_PTR_INT__h_s_h_s);
1188                         contract(588, shelloffsets, PRIM_INT__h_s_i_s, PRIM_PTR_INT__h_s_i_s);
1189                         contract(756, shelloffsets, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1190                         contract(945, shelloffsets, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1191                         contract(1155, shelloffsets, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1192                         contract(588, shelloffsets, PRIM_INT__i_s_h_s, PRIM_PTR_INT__i_s_h_s);
1193                         contract(784, shelloffsets, PRIM_INT__i_s_i_s, PRIM_PTR_INT__i_s_i_s);
1194                         contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1195                         contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1196                         contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1197                         contract(756, shelloffsets, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1198                         contract(1008, shelloffsets, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1199                         contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1200                         contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1201                         contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1202                         contract(945, shelloffsets, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1203                         contract(1260, shelloffsets, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1204                         contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1205                         contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1206                         contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1207                         PRIM_PTR_INT__g_s_h_s += lastoffset*315;
1208                         PRIM_PTR_INT__g_s_i_s += lastoffset*420;
1209                         PRIM_PTR_INT__g_s_k_s += lastoffset*540;
1210                         PRIM_PTR_INT__g_s_l_s += lastoffset*675;
1211                         PRIM_PTR_INT__g_s_m_s += lastoffset*825;
1212                         PRIM_PTR_INT__h_s_h_s += lastoffset*441;
1213                         PRIM_PTR_INT__h_s_i_s += lastoffset*588;
1214                         PRIM_PTR_INT__h_s_k_s += lastoffset*756;
1215                         PRIM_PTR_INT__h_s_l_s += lastoffset*945;
1216                         PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
1217                         PRIM_PTR_INT__i_s_h_s += lastoffset*588;
1218                         PRIM_PTR_INT__i_s_i_s += lastoffset*784;
1219                         PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1220                         PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1221                         PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1222                         PRIM_PTR_INT__k_s_h_s += lastoffset*756;
1223                         PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
1224                         PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1225                         PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1226                         PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1227                         PRIM_PTR_INT__l_s_h_s += lastoffset*945;
1228                         PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
1229                         PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1230                         PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1231                         PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1232                     }
1233 
1234                 }  // close loop over j
1235             }  // close loop over i
1236 
1237             //Advance to the next batch
1238             jstart = SIMINT_SIMD_ROUND(jend);
1239 
1240             //////////////////////////////////////////////
1241             // Contracted integrals: Horizontal recurrance
1242             //////////////////////////////////////////////
1243 
1244 
1245             const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1246 
1247 
1248             for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1249             {
1250                 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1251 
1252                 // set up HRR pointers
1253                 double const * restrict HRR_INT__g_s_h_s = INT__g_s_h_s + abcd * 315;
1254                 double const * restrict HRR_INT__g_s_i_s = INT__g_s_i_s + abcd * 420;
1255                 double const * restrict HRR_INT__g_s_k_s = INT__g_s_k_s + abcd * 540;
1256                 double const * restrict HRR_INT__g_s_l_s = INT__g_s_l_s + abcd * 675;
1257                 double const * restrict HRR_INT__g_s_m_s = INT__g_s_m_s + abcd * 825;
1258                 double const * restrict HRR_INT__h_s_h_s = INT__h_s_h_s + abcd * 441;
1259                 double const * restrict HRR_INT__h_s_i_s = INT__h_s_i_s + abcd * 588;
1260                 double const * restrict HRR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
1261                 double const * restrict HRR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
1262                 double const * restrict HRR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
1263                 double const * restrict HRR_INT__i_s_h_s = INT__i_s_h_s + abcd * 588;
1264                 double const * restrict HRR_INT__i_s_i_s = INT__i_s_i_s + abcd * 784;
1265                 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1266                 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1267                 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1268                 double const * restrict HRR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
1269                 double const * restrict HRR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
1270                 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1271                 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1272                 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1273                 double const * restrict HRR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
1274                 double const * restrict HRR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
1275                 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1276                 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1277                 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1278                 double * restrict HRR_INT__g_g_h_g = INT__g_g_h_g + real_abcd * 70875;
1279 
1280                 // form INT__g_p_h_s
1281                 HRR_J_g_p(
1282                     HRR_INT__g_p_h_s,
1283                     HRR_INT__g_s_h_s,
1284                     HRR_INT__h_s_h_s,
1285                     hAB, 21);
1286 
1287                 // form INT__g_p_i_s
1288                 HRR_J_g_p(
1289                     HRR_INT__g_p_i_s,
1290                     HRR_INT__g_s_i_s,
1291                     HRR_INT__h_s_i_s,
1292                     hAB, 28);
1293 
1294                 // form INT__g_p_k_s
1295                 HRR_J_g_p(
1296                     HRR_INT__g_p_k_s,
1297                     HRR_INT__g_s_k_s,
1298                     HRR_INT__h_s_k_s,
1299                     hAB, 36);
1300 
1301                 // form INT__g_p_l_s
1302                 HRR_J_g_p(
1303                     HRR_INT__g_p_l_s,
1304                     HRR_INT__g_s_l_s,
1305                     HRR_INT__h_s_l_s,
1306                     hAB, 45);
1307 
1308                 // form INT__g_p_m_s
1309                 HRR_J_g_p(
1310                     HRR_INT__g_p_m_s,
1311                     HRR_INT__g_s_m_s,
1312                     HRR_INT__h_s_m_s,
1313                     hAB, 55);
1314 
1315                 // form INT__h_p_h_s
1316                 ostei_general_hrr_J(5, 1, 5, 0, hAB, HRR_INT__i_s_h_s, HRR_INT__h_s_h_s, HRR_INT__h_p_h_s);
1317 
1318                 // form INT__h_p_i_s
1319                 ostei_general_hrr_J(5, 1, 6, 0, hAB, HRR_INT__i_s_i_s, HRR_INT__h_s_i_s, HRR_INT__h_p_i_s);
1320 
1321                 // form INT__h_p_k_s
1322                 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);
1323 
1324                 // form INT__h_p_l_s
1325                 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);
1326 
1327                 // form INT__h_p_m_s
1328                 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);
1329 
1330                 // form INT__i_p_h_s
1331                 ostei_general_hrr_J(6, 1, 5, 0, hAB, HRR_INT__k_s_h_s, HRR_INT__i_s_h_s, HRR_INT__i_p_h_s);
1332 
1333                 // form INT__i_p_i_s
1334                 ostei_general_hrr_J(6, 1, 6, 0, hAB, HRR_INT__k_s_i_s, HRR_INT__i_s_i_s, HRR_INT__i_p_i_s);
1335 
1336                 // form INT__i_p_k_s
1337                 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);
1338 
1339                 // form INT__i_p_l_s
1340                 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);
1341 
1342                 // form INT__i_p_m_s
1343                 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);
1344 
1345                 // form INT__k_p_h_s
1346                 ostei_general_hrr_J(7, 1, 5, 0, hAB, HRR_INT__l_s_h_s, HRR_INT__k_s_h_s, HRR_INT__k_p_h_s);
1347 
1348                 // form INT__k_p_i_s
1349                 ostei_general_hrr_J(7, 1, 6, 0, hAB, HRR_INT__l_s_i_s, HRR_INT__k_s_i_s, HRR_INT__k_p_i_s);
1350 
1351                 // form INT__k_p_k_s
1352                 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);
1353 
1354                 // form INT__k_p_l_s
1355                 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);
1356 
1357                 // form INT__k_p_m_s
1358                 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);
1359 
1360                 // form INT__g_d_h_s
1361                 ostei_general_hrr_J(4, 2, 5, 0, hAB, HRR_INT__h_p_h_s, HRR_INT__g_p_h_s, HRR_INT__g_d_h_s);
1362 
1363                 // form INT__g_d_i_s
1364                 ostei_general_hrr_J(4, 2, 6, 0, hAB, HRR_INT__h_p_i_s, HRR_INT__g_p_i_s, HRR_INT__g_d_i_s);
1365 
1366                 // form INT__g_d_k_s
1367                 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);
1368 
1369                 // form INT__g_d_l_s
1370                 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);
1371 
1372                 // form INT__g_d_m_s
1373                 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);
1374 
1375                 // form INT__h_d_h_s
1376                 ostei_general_hrr_J(5, 2, 5, 0, hAB, HRR_INT__i_p_h_s, HRR_INT__h_p_h_s, HRR_INT__h_d_h_s);
1377 
1378                 // form INT__h_d_i_s
1379                 ostei_general_hrr_J(5, 2, 6, 0, hAB, HRR_INT__i_p_i_s, HRR_INT__h_p_i_s, HRR_INT__h_d_i_s);
1380 
1381                 // form INT__h_d_k_s
1382                 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);
1383 
1384                 // form INT__h_d_l_s
1385                 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);
1386 
1387                 // form INT__h_d_m_s
1388                 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);
1389 
1390                 // form INT__i_d_h_s
1391                 ostei_general_hrr_J(6, 2, 5, 0, hAB, HRR_INT__k_p_h_s, HRR_INT__i_p_h_s, HRR_INT__i_d_h_s);
1392 
1393                 // form INT__i_d_i_s
1394                 ostei_general_hrr_J(6, 2, 6, 0, hAB, HRR_INT__k_p_i_s, HRR_INT__i_p_i_s, HRR_INT__i_d_i_s);
1395 
1396                 // form INT__i_d_k_s
1397                 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);
1398 
1399                 // form INT__i_d_l_s
1400                 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);
1401 
1402                 // form INT__i_d_m_s
1403                 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);
1404 
1405                 // form INT__g_f_h_s
1406                 ostei_general_hrr_J(4, 3, 5, 0, hAB, HRR_INT__h_d_h_s, HRR_INT__g_d_h_s, HRR_INT__g_f_h_s);
1407 
1408                 // form INT__g_f_i_s
1409                 ostei_general_hrr_J(4, 3, 6, 0, hAB, HRR_INT__h_d_i_s, HRR_INT__g_d_i_s, HRR_INT__g_f_i_s);
1410 
1411                 // form INT__g_f_k_s
1412                 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);
1413 
1414                 // form INT__g_f_l_s
1415                 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);
1416 
1417                 // form INT__g_f_m_s
1418                 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);
1419 
1420                 // form INT__h_f_h_s
1421                 ostei_general_hrr_J(5, 3, 5, 0, hAB, HRR_INT__i_d_h_s, HRR_INT__h_d_h_s, HRR_INT__h_f_h_s);
1422 
1423                 // form INT__h_f_i_s
1424                 ostei_general_hrr_J(5, 3, 6, 0, hAB, HRR_INT__i_d_i_s, HRR_INT__h_d_i_s, HRR_INT__h_f_i_s);
1425 
1426                 // form INT__h_f_k_s
1427                 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);
1428 
1429                 // form INT__h_f_l_s
1430                 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);
1431 
1432                 // form INT__h_f_m_s
1433                 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);
1434 
1435                 // form INT__g_g_h_s
1436                 ostei_general_hrr_J(4, 4, 5, 0, hAB, HRR_INT__h_f_h_s, HRR_INT__g_f_h_s, HRR_INT__g_g_h_s);
1437 
1438                 // form INT__g_g_i_s
1439                 ostei_general_hrr_J(4, 4, 6, 0, hAB, HRR_INT__h_f_i_s, HRR_INT__g_f_i_s, HRR_INT__g_g_i_s);
1440 
1441                 // form INT__g_g_k_s
1442                 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);
1443 
1444                 // form INT__g_g_l_s
1445                 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);
1446 
1447                 // form INT__g_g_m_s
1448                 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);
1449 
1450                 // form INT__g_g_h_p
1451                 ostei_general_hrr_L(4, 4, 5, 1, hCD, HRR_INT__g_g_i_s, HRR_INT__g_g_h_s, HRR_INT__g_g_h_p);
1452 
1453                 // form INT__g_g_i_p
1454                 ostei_general_hrr_L(4, 4, 6, 1, hCD, HRR_INT__g_g_k_s, HRR_INT__g_g_i_s, HRR_INT__g_g_i_p);
1455 
1456                 // form INT__g_g_k_p
1457                 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);
1458 
1459                 // form INT__g_g_l_p
1460                 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);
1461 
1462                 // form INT__g_g_h_d
1463                 ostei_general_hrr_L(4, 4, 5, 2, hCD, HRR_INT__g_g_i_p, HRR_INT__g_g_h_p, HRR_INT__g_g_h_d);
1464 
1465                 // form INT__g_g_i_d
1466                 ostei_general_hrr_L(4, 4, 6, 2, hCD, HRR_INT__g_g_k_p, HRR_INT__g_g_i_p, HRR_INT__g_g_i_d);
1467 
1468                 // form INT__g_g_k_d
1469                 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);
1470 
1471                 // form INT__g_g_h_f
1472                 ostei_general_hrr_L(4, 4, 5, 3, hCD, HRR_INT__g_g_i_d, HRR_INT__g_g_h_d, HRR_INT__g_g_h_f);
1473 
1474                 // form INT__g_g_i_f
1475                 ostei_general_hrr_L(4, 4, 6, 3, hCD, HRR_INT__g_g_k_d, HRR_INT__g_g_i_d, HRR_INT__g_g_i_f);
1476 
1477                 // form INT__g_g_h_g
1478                 ostei_general_hrr_L(4, 4, 5, 4, hCD, HRR_INT__g_g_i_f, HRR_INT__g_g_h_f, HRR_INT__g_g_h_g);
1479 
1480 
1481             }  // close HRR loop
1482 
1483 
1484         }   // close loop cdbatch
1485 
1486         istart = iend;
1487     }  // close loop over ab
1488 
1489     return P.nshell12_clip * Q.nshell12_clip;
1490 }
1491 
ostei_g_g_g_h(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_h)1492 int ostei_g_g_g_h(struct simint_multi_shellpair const P,
1493                   struct simint_multi_shellpair const Q,
1494                   double screen_tol,
1495                   double * const restrict work,
1496                   double * const restrict INT__g_g_g_h)
1497 {
1498     double Q_AB[3*Q.nshell12];
1499     struct simint_multi_shellpair Q_tmp = Q;
1500     Q_tmp.PA_x = Q.PB_x;  Q_tmp.PA_y = Q.PB_y;  Q_tmp.PA_z = Q.PB_z;
1501     Q_tmp.PB_x = Q.PA_x;  Q_tmp.PB_y = Q.PA_y;  Q_tmp.PB_z = Q.PA_z;
1502     Q_tmp.AB_x = Q_AB;
1503     Q_tmp.AB_y = Q_AB + Q.nshell12;
1504     Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1505 
1506     for(int i = 0; i < Q.nshell12; i++)
1507     {
1508         Q_tmp.AB_x[i] = -Q.AB_x[i];
1509         Q_tmp.AB_y[i] = -Q.AB_y[i];
1510         Q_tmp.AB_z[i] = -Q.AB_z[i];
1511     }
1512 
1513     int ret = ostei_g_g_h_g(P, Q_tmp, screen_tol, work, INT__g_g_g_h);
1514     double buffer[70875] SIMINT_ALIGN_ARRAY_DBL;
1515 
1516     for(int q = 0; q < ret; q++)
1517     {
1518         int idx = 0;
1519         for(int a = 0; a < 15; ++a)
1520         for(int b = 0; b < 15; ++b)
1521         for(int c = 0; c < 15; ++c)
1522         for(int d = 0; d < 21; ++d)
1523             buffer[idx++] = INT__g_g_g_h[q*70875+a*4725+b*315+d*15+c];
1524 
1525         memcpy(INT__g_g_g_h+q*70875, buffer, 70875*sizeof(double));
1526     }
1527 
1528     return ret;
1529 }
1530 
1531