1 #include "simint/boys/boys.h"
2 #include "simint/ostei/gen/ostei_generated.h"
3 #include "simint/vectorization/vectorization.h"
4 #include <math.h>
5 #include <string.h>
6
7
ostei_i_f_k_i(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_f_k_i)8 int ostei_i_f_k_i(struct simint_multi_shellpair const P,
9 struct simint_multi_shellpair const Q,
10 double screen_tol,
11 double * const restrict work,
12 double * const restrict INT__i_f_k_i)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__i_f_k_i);
17 int ab, cd, abcd;
18 int istart, jstart;
19 int iprimcd, nprim_icd, icd;
20 const int check_screen = (screen_tol > 0.0);
21 int i, j;
22 int n;
23 int not_screened;
24 int real_abcd;
25 int iket;
26 int ibra;
27
28 // partition workspace
29 double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 1008);
31 double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 2268);
32 double * const INT__i_s_n_s = work + (SIMINT_NSHELL_SIMD * 3808);
33 double * const INT__i_s_o_s = work + (SIMINT_NSHELL_SIMD * 5656);
34 double * const INT__i_s_q_s = work + (SIMINT_NSHELL_SIMD * 7840);
35 double * const INT__i_s_r_s = work + (SIMINT_NSHELL_SIMD * 10388);
36 double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 13328);
37 double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 14624);
38 double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 16244);
39 double * const INT__k_s_n_s = work + (SIMINT_NSHELL_SIMD * 18224);
40 double * const INT__k_s_o_s = work + (SIMINT_NSHELL_SIMD * 20600);
41 double * const INT__k_s_q_s = work + (SIMINT_NSHELL_SIMD * 23408);
42 double * const INT__k_s_r_s = work + (SIMINT_NSHELL_SIMD * 26684);
43 double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 30464);
44 double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 32084);
45 double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 34109);
46 double * const INT__l_s_n_s = work + (SIMINT_NSHELL_SIMD * 36584);
47 double * const INT__l_s_o_s = work + (SIMINT_NSHELL_SIMD * 39554);
48 double * const INT__l_s_q_s = work + (SIMINT_NSHELL_SIMD * 43064);
49 double * const INT__l_s_r_s = work + (SIMINT_NSHELL_SIMD * 47159);
50 double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 51884);
51 double * const INT__m_s_l_s = work + (SIMINT_NSHELL_SIMD * 53864);
52 double * const INT__m_s_m_s = work + (SIMINT_NSHELL_SIMD * 56339);
53 double * const INT__m_s_n_s = work + (SIMINT_NSHELL_SIMD * 59364);
54 double * const INT__m_s_o_s = work + (SIMINT_NSHELL_SIMD * 62994);
55 double * const INT__m_s_q_s = work + (SIMINT_NSHELL_SIMD * 67284);
56 double * const INT__m_s_r_s = work + (SIMINT_NSHELL_SIMD * 72289);
57 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*78064);
58 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
59 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 23;
60 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 89;
61 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 215;
62 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 415;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_h_s = primwork + 700;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_i_s = primwork + 1078;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_k_s = primwork + 1554;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_l_s = primwork + 2130;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_m_s = primwork + 2805;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_n_s = primwork + 3575;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_o_s = primwork + 4433;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_q_s = primwork + 5369;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_r_s = primwork + 6370;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 7420;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 7447;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 7528;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 7690;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 7960;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 8365;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_i_s = primwork + 8932;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_k_s = primwork + 9688;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_l_s = primwork + 10660;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_m_s = primwork + 11875;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_n_s = primwork + 13360;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_o_s = primwork + 15142;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_q_s = primwork + 17248;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_r_s = primwork + 19705;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 22540;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 22588;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 22732;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 23020;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 23500;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 24220;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 25228;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_k_s = primwork + 26572;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_l_s = primwork + 28300;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_m_s = primwork + 30460;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_n_s = primwork + 33100;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_o_s = primwork + 36268;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_q_s = primwork + 40012;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_r_s = primwork + 44380;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 49420;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 49630;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 50050;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 50750;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 51800;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 53270;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 55230;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_l_s = primwork + 57750;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_m_s = primwork + 60900;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_n_s = primwork + 64750;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_o_s = primwork + 69370;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_q_s = primwork + 74830;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_r_s = primwork + 81200;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 88550;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 89090;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 89990;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 91340;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 93230;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 95750;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 98990;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_m_s = primwork + 103040;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_n_s = primwork + 107990;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_o_s = primwork + 113930;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_q_s = primwork + 120950;
124 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_r_s = primwork + 129140;
125 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 138590;
126 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 139640;
127 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 141215;
128 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 143420;
129 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 146360;
130 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 150140;
131 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 154865;
132 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_n_s = primwork + 160640;
133 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_o_s = primwork + 167570;
134 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_q_s = primwork + 175760;
135 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_r_s = primwork + 185315;
136 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 196340;
137 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 198020;
138 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 200372;
139 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 203508;
140 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 207540;
141 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 212580;
142 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_n_s = primwork + 218740;
143 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_o_s = primwork + 226132;
144 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_q_s = primwork + 234868;
145 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_r_s = primwork + 245060;
146 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 256820;
147 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 259088;
148 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 262112;
149 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 266000;
150 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 270860;
151 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_n_s = primwork + 276800;
152 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_o_s = primwork + 283928;
153 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_q_s = primwork + 292352;
154 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_r_s = primwork + 302180;
155 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 313520;
156 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 316040;
157 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 319280;
158 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 323330;
159 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_n_s = primwork + 328280;
160 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_o_s = primwork + 334220;
161 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_q_s = primwork + 341240;
162 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_r_s = primwork + 349430;
163 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 358880;
164 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_l_s = primwork + 360860;
165 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_m_s = primwork + 363335;
166 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_n_s = primwork + 366360;
167 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_o_s = primwork + 369990;
168 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_q_s = primwork + 374280;
169 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_r_s = primwork + 379285;
170 double * const hrrwork = (double *)(primwork + 385060);
171 double * const HRR_INT__i_p_k_s = hrrwork + 0;
172 double * const HRR_INT__i_p_l_s = hrrwork + 3024;
173 double * const HRR_INT__i_p_m_s = hrrwork + 6804;
174 double * const HRR_INT__i_p_n_s = hrrwork + 11424;
175 double * const HRR_INT__i_p_o_s = hrrwork + 16968;
176 double * const HRR_INT__i_p_q_s = hrrwork + 23520;
177 double * const HRR_INT__i_p_r_s = hrrwork + 31164;
178 double * const HRR_INT__i_d_k_s = hrrwork + 39984;
179 double * const HRR_INT__i_d_l_s = hrrwork + 46032;
180 double * const HRR_INT__i_d_m_s = hrrwork + 53592;
181 double * const HRR_INT__i_d_n_s = hrrwork + 62832;
182 double * const HRR_INT__i_d_o_s = hrrwork + 73920;
183 double * const HRR_INT__i_d_q_s = hrrwork + 87024;
184 double * const HRR_INT__i_d_r_s = hrrwork + 102312;
185 double * const HRR_INT__i_f_k_s = hrrwork + 119952;
186 double * const HRR_INT__i_f_k_p = hrrwork + 130032;
187 double * const HRR_INT__i_f_k_d = hrrwork + 160272;
188 double * const HRR_INT__i_f_k_f = hrrwork + 220752;
189 double * const HRR_INT__i_f_k_g = hrrwork + 321552;
190 double * const HRR_INT__i_f_k_h = hrrwork + 472752;
191 double * const HRR_INT__i_f_l_s = hrrwork + 684432;
192 double * const HRR_INT__i_f_l_p = hrrwork + 697032;
193 double * const HRR_INT__i_f_l_d = hrrwork + 734832;
194 double * const HRR_INT__i_f_l_f = hrrwork + 810432;
195 double * const HRR_INT__i_f_l_g = hrrwork + 936432;
196 double * const HRR_INT__i_f_l_h = hrrwork + 1125432;
197 double * const HRR_INT__i_f_m_s = hrrwork + 1390032;
198 double * const HRR_INT__i_f_m_p = hrrwork + 1405432;
199 double * const HRR_INT__i_f_m_d = hrrwork + 1451632;
200 double * const HRR_INT__i_f_m_f = hrrwork + 1544032;
201 double * const HRR_INT__i_f_m_g = hrrwork + 1698032;
202 double * const HRR_INT__i_f_n_s = hrrwork + 1929032;
203 double * const HRR_INT__i_f_n_p = hrrwork + 1947512;
204 double * const HRR_INT__i_f_n_d = hrrwork + 2002952;
205 double * const HRR_INT__i_f_n_f = hrrwork + 2113832;
206 double * const HRR_INT__i_f_o_s = hrrwork + 2298632;
207 double * const HRR_INT__i_f_o_p = hrrwork + 2320472;
208 double * const HRR_INT__i_f_o_d = hrrwork + 2385992;
209 double * const HRR_INT__i_f_q_s = hrrwork + 2517032;
210 double * const HRR_INT__i_f_q_p = hrrwork + 2542512;
211 double * const HRR_INT__i_f_r_s = hrrwork + 2618952;
212 double * const HRR_INT__k_p_k_s = hrrwork + 2648352;
213 double * const HRR_INT__k_p_l_s = hrrwork + 2652240;
214 double * const HRR_INT__k_p_m_s = hrrwork + 2657100;
215 double * const HRR_INT__k_p_n_s = hrrwork + 2663040;
216 double * const HRR_INT__k_p_o_s = hrrwork + 2670168;
217 double * const HRR_INT__k_p_q_s = hrrwork + 2678592;
218 double * const HRR_INT__k_p_r_s = hrrwork + 2688420;
219 double * const HRR_INT__k_d_k_s = hrrwork + 2699760;
220 double * const HRR_INT__k_d_l_s = hrrwork + 2707536;
221 double * const HRR_INT__k_d_m_s = hrrwork + 2717256;
222 double * const HRR_INT__k_d_n_s = hrrwork + 2729136;
223 double * const HRR_INT__k_d_o_s = hrrwork + 2743392;
224 double * const HRR_INT__k_d_q_s = hrrwork + 2760240;
225 double * const HRR_INT__k_d_r_s = hrrwork + 2779896;
226 double * const HRR_INT__l_p_k_s = hrrwork + 2802576;
227 double * const HRR_INT__l_p_l_s = hrrwork + 2807436;
228 double * const HRR_INT__l_p_m_s = hrrwork + 2813511;
229 double * const HRR_INT__l_p_n_s = hrrwork + 2820936;
230 double * const HRR_INT__l_p_o_s = hrrwork + 2829846;
231 double * const HRR_INT__l_p_q_s = hrrwork + 2840376;
232 double * const HRR_INT__l_p_r_s = hrrwork + 2852661;
233
234
235 // Create constants
236 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
237 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
238 const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
239 const SIMINT_DBLTYPE const_12 = SIMINT_DBLSET1(12);
240 const SIMINT_DBLTYPE const_13 = SIMINT_DBLSET1(13);
241 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
242 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
243 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
244 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
245 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
246 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
247 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
248 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
249 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
250
251
252 ////////////////////////////////////////
253 // Loop over shells and primitives
254 ////////////////////////////////////////
255
256 real_abcd = 0;
257 istart = 0;
258 for(ab = 0; ab < P.nshell12_clip; ++ab)
259 {
260 const int iend = istart + P.nprim12[ab];
261
262 cd = 0;
263 jstart = 0;
264
265 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
266 {
267 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
268 int jend = jstart;
269 for(i = 0; i < nshellbatch; i++)
270 jend += Q.nprim12[cd+i];
271
272 // Clear the beginning of the workspace (where we are accumulating integrals)
273 memset(work, 0, SIMINT_NSHELL_SIMD * 78064 * sizeof(double));
274 abcd = 0;
275
276
277 for(i = istart; i < iend; ++i)
278 {
279 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
280
281 if(check_screen)
282 {
283 // Skip this whole thing if always insignificant
284 if((P.screen[i] * Q.screen_max) < screen_tol)
285 continue;
286 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
287 }
288
289 icd = 0;
290 iprimcd = 0;
291 nprim_icd = Q.nprim12[cd];
292 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
293 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
294 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
295 double * restrict PRIM_PTR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
296 double * restrict PRIM_PTR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
297 double * restrict PRIM_PTR_INT__i_s_q_s = INT__i_s_q_s + abcd * 2548;
298 double * restrict PRIM_PTR_INT__i_s_r_s = INT__i_s_r_s + abcd * 2940;
299 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
300 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
301 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
302 double * restrict PRIM_PTR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
303 double * restrict PRIM_PTR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
304 double * restrict PRIM_PTR_INT__k_s_q_s = INT__k_s_q_s + abcd * 3276;
305 double * restrict PRIM_PTR_INT__k_s_r_s = INT__k_s_r_s + abcd * 3780;
306 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
307 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
308 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
309 double * restrict PRIM_PTR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
310 double * restrict PRIM_PTR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
311 double * restrict PRIM_PTR_INT__l_s_q_s = INT__l_s_q_s + abcd * 4095;
312 double * restrict PRIM_PTR_INT__l_s_r_s = INT__l_s_r_s + abcd * 4725;
313 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
314 double * restrict PRIM_PTR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
315 double * restrict PRIM_PTR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
316 double * restrict PRIM_PTR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
317 double * restrict PRIM_PTR_INT__m_s_o_s = INT__m_s_o_s + abcd * 4290;
318 double * restrict PRIM_PTR_INT__m_s_q_s = INT__m_s_q_s + abcd * 5005;
319 double * restrict PRIM_PTR_INT__m_s_r_s = INT__m_s_r_s + abcd * 5775;
320
321
322
323 // Load these one per loop over i
324 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
325 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
326 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
327
328 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
329
330 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
331 {
332 // calculate the shell offsets
333 // these are the offset from the shell pointed to by cd
334 // for each element
335 int shelloffsets[SIMINT_SIMD_LEN] = {0};
336 int lastoffset = 0;
337 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
338
339 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
340 {
341 // Handle if the first element of the vector is a new shell
342 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
343 {
344 nprim_icd += Q.nprim12[cd + (++icd)];
345 PRIM_PTR_INT__i_s_k_s += 1008;
346 PRIM_PTR_INT__i_s_l_s += 1260;
347 PRIM_PTR_INT__i_s_m_s += 1540;
348 PRIM_PTR_INT__i_s_n_s += 1848;
349 PRIM_PTR_INT__i_s_o_s += 2184;
350 PRIM_PTR_INT__i_s_q_s += 2548;
351 PRIM_PTR_INT__i_s_r_s += 2940;
352 PRIM_PTR_INT__k_s_k_s += 1296;
353 PRIM_PTR_INT__k_s_l_s += 1620;
354 PRIM_PTR_INT__k_s_m_s += 1980;
355 PRIM_PTR_INT__k_s_n_s += 2376;
356 PRIM_PTR_INT__k_s_o_s += 2808;
357 PRIM_PTR_INT__k_s_q_s += 3276;
358 PRIM_PTR_INT__k_s_r_s += 3780;
359 PRIM_PTR_INT__l_s_k_s += 1620;
360 PRIM_PTR_INT__l_s_l_s += 2025;
361 PRIM_PTR_INT__l_s_m_s += 2475;
362 PRIM_PTR_INT__l_s_n_s += 2970;
363 PRIM_PTR_INT__l_s_o_s += 3510;
364 PRIM_PTR_INT__l_s_q_s += 4095;
365 PRIM_PTR_INT__l_s_r_s += 4725;
366 PRIM_PTR_INT__m_s_k_s += 1980;
367 PRIM_PTR_INT__m_s_l_s += 2475;
368 PRIM_PTR_INT__m_s_m_s += 3025;
369 PRIM_PTR_INT__m_s_n_s += 3630;
370 PRIM_PTR_INT__m_s_o_s += 4290;
371 PRIM_PTR_INT__m_s_q_s += 5005;
372 PRIM_PTR_INT__m_s_r_s += 5775;
373 }
374 iprimcd++;
375 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
376 {
377 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
378 {
379 shelloffsets[n] = shelloffsets[n-1] + 1;
380 lastoffset++;
381 nprim_icd += Q.nprim12[cd + (++icd)];
382 }
383 else
384 shelloffsets[n] = shelloffsets[n-1];
385 iprimcd++;
386 }
387 }
388 else
389 iprimcd += SIMINT_SIMD_LEN;
390
391 // Do we have to compute this vector (or has it been screened out)?
392 // (not_screened != 0 means we have to do this vector)
393 if(check_screen)
394 {
395 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
396 if(vmax < screen_tol)
397 {
398 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
399 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
400 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
401 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
402 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
403 PRIM_PTR_INT__i_s_q_s += lastoffset*2548;
404 PRIM_PTR_INT__i_s_r_s += lastoffset*2940;
405 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
406 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
407 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
408 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
409 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
410 PRIM_PTR_INT__k_s_q_s += lastoffset*3276;
411 PRIM_PTR_INT__k_s_r_s += lastoffset*3780;
412 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
413 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
414 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
415 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
416 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
417 PRIM_PTR_INT__l_s_q_s += lastoffset*4095;
418 PRIM_PTR_INT__l_s_r_s += lastoffset*4725;
419 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
420 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
421 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
422 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
423 PRIM_PTR_INT__m_s_o_s += lastoffset*4290;
424 PRIM_PTR_INT__m_s_q_s += lastoffset*5005;
425 PRIM_PTR_INT__m_s_r_s += lastoffset*5775;
426 continue;
427 }
428 }
429
430 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
431 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
432 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
433 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
434
435
436 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
437 SIMINT_DBLTYPE PQ[3];
438 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
439 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
440 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
441 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
442 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
443 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
444
445 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
446 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
447 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
448 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
449 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
450 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
451 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
452
453 // NOTE: Minus sign!
454 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
455 SIMINT_DBLTYPE aop_PQ[3];
456 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
457 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
458 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
459
460 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
461 SIMINT_DBLTYPE aoq_PQ[3];
462 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
463 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
464 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
465 // Put a minus sign here so we don't have to in RR routines
466 a_over_q = SIMINT_NEG(a_over_q);
467
468
469 //////////////////////////////////////////////
470 // Fjt function section
471 // Maximum v value: 22
472 //////////////////////////////////////////////
473 // The parameter to the Fjt function
474 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
475
476
477 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
478
479
480 boys_F_split(PRIM_INT__s_s_s_s, F_x, 22);
481 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
482 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
483 for(n = 0; n <= 22; n++)
484 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
485
486 //////////////////////////////////////////////
487 // Primitive integrals: Vertical recurrance
488 //////////////////////////////////////////////
489
490 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
491 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
492 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
493 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
494 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
495 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
496 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
497 const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
498 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
499 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
500 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
501 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
502 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
503 const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
504 const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
505 const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
506 const SIMINT_DBLTYPE vrr_const_9_over_2q = SIMINT_MUL(const_9, one_over_2q);
507 const SIMINT_DBLTYPE vrr_const_10_over_2q = SIMINT_MUL(const_10, one_over_2q);
508 const SIMINT_DBLTYPE vrr_const_11_over_2q = SIMINT_MUL(const_11, one_over_2q);
509 const SIMINT_DBLTYPE vrr_const_12_over_2q = SIMINT_MUL(const_12, one_over_2q);
510 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
511 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
512 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
513 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
514 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
515 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
516 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
517 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
518 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
519 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
520 const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
521 const SIMINT_DBLTYPE vrr_const_12_over_2pq = SIMINT_MUL(const_12, one_over_2pq);
522 const SIMINT_DBLTYPE vrr_const_13_over_2pq = SIMINT_MUL(const_13, one_over_2pq);
523
524
525
526 // Forming PRIM_INT__s_s_p_s[22 * 3];
527 for(n = 0; n < 22; ++n) // loop over orders of auxiliary function
528 {
529
530 PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
531 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]);
532
533 PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
534 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]);
535
536 PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
537 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]);
538
539 }
540
541
542
543 // Forming PRIM_INT__s_s_d_s[21 * 6];
544 for(n = 0; n < 21; ++n) // loop over orders of auxiliary function
545 {
546
547 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
548 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]);
549 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]);
550
551 PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
552 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]);
553
554 PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
555 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]);
556
557 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
558 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]);
559 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]);
560
561 PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
562 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]);
563
564 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
565 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]);
566 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]);
567
568 }
569
570
571
572 // Forming PRIM_INT__s_s_f_s[20 * 10];
573 for(n = 0; n < 20; ++n) // loop over orders of auxiliary function
574 {
575
576 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
577 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]);
578 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]);
579
580 PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
581 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]);
582
583 PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
584 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]);
585
586 PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
587 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]);
588
589 PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
590 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]);
591
592 PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
593 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]);
594
595 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
596 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]);
597 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]);
598
599 PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
600 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]);
601
602 PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
603 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]);
604
605 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
606 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]);
607 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]);
608
609 }
610
611
612 VRR_K_s_s_g_s(
613 PRIM_INT__s_s_g_s,
614 PRIM_INT__s_s_f_s,
615 PRIM_INT__s_s_d_s,
616 Q_PA,
617 a_over_q,
618 aoq_PQ,
619 one_over_2q,
620 19);
621
622
623 VRR_K_s_s_h_s(
624 PRIM_INT__s_s_h_s,
625 PRIM_INT__s_s_g_s,
626 PRIM_INT__s_s_f_s,
627 Q_PA,
628 a_over_q,
629 aoq_PQ,
630 one_over_2q,
631 18);
632
633
634 ostei_general_vrr1_K(6, 17,
635 one_over_2q, a_over_q, aoq_PQ, Q_PA,
636 PRIM_INT__s_s_h_s, PRIM_INT__s_s_g_s, PRIM_INT__s_s_i_s);
637
638
639 ostei_general_vrr1_K(7, 16,
640 one_over_2q, a_over_q, aoq_PQ, Q_PA,
641 PRIM_INT__s_s_i_s, PRIM_INT__s_s_h_s, PRIM_INT__s_s_k_s);
642
643
644 ostei_general_vrr_I(1, 0, 7, 0, 9,
645 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
646 PRIM_INT__s_s_k_s, NULL, NULL, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_k_s);
647
648
649 ostei_general_vrr_I(1, 0, 6, 0, 9,
650 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
651 PRIM_INT__s_s_i_s, NULL, NULL, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_i_s);
652
653
654 ostei_general_vrr_I(2, 0, 7, 0, 8,
655 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
656 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);
657
658
659 ostei_general_vrr_I(1, 0, 5, 0, 9,
660 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
661 PRIM_INT__s_s_h_s, NULL, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
662
663
664 ostei_general_vrr_I(2, 0, 6, 0, 8,
665 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
666 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);
667
668
669 ostei_general_vrr_I(3, 0, 7, 0, 7,
670 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
671 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);
672
673
674 VRR_I_p_s_g_s(
675 PRIM_INT__p_s_g_s,
676 PRIM_INT__s_s_g_s,
677 PRIM_INT__s_s_f_s,
678 P_PA,
679 aop_PQ,
680 one_over_2pq,
681 9);
682
683
684 ostei_general_vrr_I(2, 0, 5, 0, 8,
685 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
686 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);
687
688
689 ostei_general_vrr_I(3, 0, 6, 0, 7,
690 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
691 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);
692
693
694 ostei_general_vrr_I(4, 0, 7, 0, 6,
695 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
696 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);
697
698
699 VRR_I_p_s_f_s(
700 PRIM_INT__p_s_f_s,
701 PRIM_INT__s_s_f_s,
702 PRIM_INT__s_s_d_s,
703 P_PA,
704 aop_PQ,
705 one_over_2pq,
706 9);
707
708
709 ostei_general_vrr_I(2, 0, 4, 0, 8,
710 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
711 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);
712
713
714 ostei_general_vrr_I(3, 0, 5, 0, 7,
715 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
716 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);
717
718
719 ostei_general_vrr_I(4, 0, 6, 0, 6,
720 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
721 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);
722
723
724 ostei_general_vrr_I(5, 0, 7, 0, 5,
725 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
726 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);
727
728
729
730 // Forming PRIM_INT__p_s_d_s[9 * 18];
731 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
732 {
733
734 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
735 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]);
736 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]);
737
738 PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 1]);
739 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]);
740 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]);
741
742 PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 2]);
743 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]);
744 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]);
745
746 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
747 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]);
748
749 PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 4]);
750 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]);
751
752 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
753 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]);
754
755 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
756 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]);
757
758 PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 1]);
759 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]);
760 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]);
761
762 PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 2]);
763 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]);
764
765 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
766 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]);
767 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]);
768
769 PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 4]);
770 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]);
771 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]);
772
773 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
774 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]);
775
776 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
777 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]);
778
779 PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
780 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]);
781
782 PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 2]);
783 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]);
784 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]);
785
786 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
787 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]);
788
789 PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 4]);
790 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]);
791 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]);
792
793 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
794 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]);
795 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]);
796
797 }
798
799
800 VRR_I_d_s_f_s(
801 PRIM_INT__d_s_f_s,
802 PRIM_INT__p_s_f_s,
803 PRIM_INT__s_s_f_s,
804 PRIM_INT__p_s_d_s,
805 P_PA,
806 a_over_p,
807 aop_PQ,
808 one_over_2p,
809 one_over_2pq,
810 8);
811
812
813 ostei_general_vrr_I(3, 0, 4, 0, 7,
814 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
815 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);
816
817
818 ostei_general_vrr_I(4, 0, 5, 0, 6,
819 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
820 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);
821
822
823 ostei_general_vrr_I(5, 0, 6, 0, 5,
824 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
825 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);
826
827
828 ostei_general_vrr_I(6, 0, 7, 0, 4,
829 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
830 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);
831
832
833 ostei_general_vrr1_K(8, 15,
834 one_over_2q, a_over_q, aoq_PQ, Q_PA,
835 PRIM_INT__s_s_k_s, PRIM_INT__s_s_i_s, PRIM_INT__s_s_l_s);
836
837
838 ostei_general_vrr_I(1, 0, 8, 0, 9,
839 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
840 PRIM_INT__s_s_l_s, NULL, NULL, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_l_s);
841
842
843 ostei_general_vrr_I(2, 0, 8, 0, 8,
844 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
845 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);
846
847
848 ostei_general_vrr_I(3, 0, 8, 0, 7,
849 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
850 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);
851
852
853 ostei_general_vrr_I(4, 0, 8, 0, 6,
854 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
855 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);
856
857
858 ostei_general_vrr_I(5, 0, 8, 0, 5,
859 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
860 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);
861
862
863 ostei_general_vrr_I(6, 0, 8, 0, 4,
864 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
865 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);
866
867
868
869 // Forming PRIM_INT__p_s_p_s[9 * 9];
870 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
871 {
872
873 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
874 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]);
875 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]);
876
877 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 1]);
878 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]);
879
880 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 2]);
881 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]);
882
883 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
884 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]);
885
886 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
887 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]);
888 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]);
889
890 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 2]);
891 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]);
892
893 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
894 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]);
895
896 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
897 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]);
898
899 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
900 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]);
901 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]);
902
903 }
904
905
906 VRR_I_d_s_d_s(
907 PRIM_INT__d_s_d_s,
908 PRIM_INT__p_s_d_s,
909 PRIM_INT__s_s_d_s,
910 PRIM_INT__p_s_p_s,
911 P_PA,
912 a_over_p,
913 aop_PQ,
914 one_over_2p,
915 one_over_2pq,
916 8);
917
918
919 ostei_general_vrr_I(3, 0, 3, 0, 7,
920 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
921 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);
922
923
924 ostei_general_vrr_I(4, 0, 4, 0, 6,
925 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
926 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);
927
928
929 ostei_general_vrr_I(5, 0, 5, 0, 5,
930 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
931 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);
932
933
934 ostei_general_vrr_I(6, 0, 6, 0, 4,
935 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
936 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);
937
938
939 ostei_general_vrr_I(7, 0, 7, 0, 3,
940 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
941 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);
942
943
944 ostei_general_vrr1_K(9, 14,
945 one_over_2q, a_over_q, aoq_PQ, Q_PA,
946 PRIM_INT__s_s_l_s, PRIM_INT__s_s_k_s, PRIM_INT__s_s_m_s);
947
948
949 ostei_general_vrr_I(1, 0, 9, 0, 9,
950 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
951 PRIM_INT__s_s_m_s, NULL, NULL, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_m_s);
952
953
954 ostei_general_vrr_I(2, 0, 9, 0, 8,
955 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
956 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);
957
958
959 ostei_general_vrr_I(3, 0, 9, 0, 7,
960 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
961 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);
962
963
964 ostei_general_vrr_I(4, 0, 9, 0, 6,
965 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
966 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);
967
968
969 ostei_general_vrr_I(5, 0, 9, 0, 5,
970 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
971 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);
972
973
974 ostei_general_vrr_I(6, 0, 9, 0, 4,
975 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
976 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);
977
978
979 ostei_general_vrr_I(7, 0, 8, 0, 3,
980 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
981 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);
982
983
984
985 // Forming PRIM_INT__p_s_s_s[9 * 3];
986 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
987 {
988
989 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
990 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]);
991
992 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
993 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]);
994
995 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
996 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]);
997
998 }
999
1000
1001
1002 // Forming PRIM_INT__d_s_p_s[8 * 18];
1003 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
1004 {
1005
1006 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
1007 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]);
1008 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]);
1009 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]);
1010
1011 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 1]);
1012 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]);
1013 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]);
1014
1015 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 2]);
1016 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]);
1017 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]);
1018
1019 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 3]);
1020 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]);
1021 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]);
1022
1023 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
1024 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]);
1025 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]);
1026 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]);
1027
1028 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 5]);
1029 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]);
1030 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]);
1031
1032 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 6]);
1033 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]);
1034 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]);
1035
1036 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 7]);
1037 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]);
1038 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]);
1039
1040 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
1041 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]);
1042 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]);
1043 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]);
1044
1045 }
1046
1047
1048 VRR_I_f_s_d_s(
1049 PRIM_INT__f_s_d_s,
1050 PRIM_INT__d_s_d_s,
1051 PRIM_INT__p_s_d_s,
1052 PRIM_INT__d_s_p_s,
1053 P_PA,
1054 a_over_p,
1055 aop_PQ,
1056 one_over_2p,
1057 one_over_2pq,
1058 7);
1059
1060
1061 ostei_general_vrr_I(4, 0, 3, 0, 6,
1062 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1063 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);
1064
1065
1066 ostei_general_vrr_I(5, 0, 4, 0, 5,
1067 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1068 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);
1069
1070
1071 ostei_general_vrr_I(6, 0, 5, 0, 4,
1072 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1073 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);
1074
1075
1076 ostei_general_vrr_I(7, 0, 6, 0, 3,
1077 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1078 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);
1079
1080
1081 ostei_general_vrr_I(8, 0, 7, 0, 2,
1082 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1083 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);
1084
1085
1086 ostei_general_vrr1_K(10, 13,
1087 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1088 PRIM_INT__s_s_m_s, PRIM_INT__s_s_l_s, PRIM_INT__s_s_n_s);
1089
1090
1091 ostei_general_vrr_I(1, 0, 10, 0, 9,
1092 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1093 PRIM_INT__s_s_n_s, NULL, NULL, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_n_s);
1094
1095
1096 ostei_general_vrr_I(2, 0, 10, 0, 8,
1097 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1098 PRIM_INT__p_s_n_s, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_m_s, NULL, PRIM_INT__d_s_n_s);
1099
1100
1101 ostei_general_vrr_I(3, 0, 10, 0, 7,
1102 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1103 PRIM_INT__d_s_n_s, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_m_s, NULL, PRIM_INT__f_s_n_s);
1104
1105
1106 ostei_general_vrr_I(4, 0, 10, 0, 6,
1107 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1108 PRIM_INT__f_s_n_s, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_m_s, NULL, PRIM_INT__g_s_n_s);
1109
1110
1111 ostei_general_vrr_I(5, 0, 10, 0, 5,
1112 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1113 PRIM_INT__g_s_n_s, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_m_s, NULL, PRIM_INT__h_s_n_s);
1114
1115
1116 ostei_general_vrr_I(6, 0, 10, 0, 4,
1117 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1118 PRIM_INT__h_s_n_s, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_n_s);
1119
1120
1121 ostei_general_vrr_I(7, 0, 9, 0, 3,
1122 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1123 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);
1124
1125
1126 ostei_general_vrr_I(8, 0, 8, 0, 2,
1127 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1128 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);
1129
1130
1131
1132 // Forming PRIM_INT__d_s_s_s[8 * 6];
1133 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
1134 {
1135
1136 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
1137 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]);
1138 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]);
1139
1140 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
1141 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]);
1142 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]);
1143
1144 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
1145 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]);
1146 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]);
1147
1148 }
1149
1150
1151 VRR_I_f_s_p_s(
1152 PRIM_INT__f_s_p_s,
1153 PRIM_INT__d_s_p_s,
1154 PRIM_INT__p_s_p_s,
1155 PRIM_INT__d_s_s_s,
1156 P_PA,
1157 a_over_p,
1158 aop_PQ,
1159 one_over_2p,
1160 one_over_2pq,
1161 7);
1162
1163
1164 ostei_general_vrr_I(4, 0, 2, 0, 6,
1165 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1166 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);
1167
1168
1169 ostei_general_vrr_I(5, 0, 3, 0, 5,
1170 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1171 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);
1172
1173
1174 ostei_general_vrr_I(6, 0, 4, 0, 4,
1175 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1176 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);
1177
1178
1179 ostei_general_vrr_I(7, 0, 5, 0, 3,
1180 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1181 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);
1182
1183
1184 ostei_general_vrr_I(8, 0, 6, 0, 2,
1185 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1186 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);
1187
1188
1189 ostei_general_vrr_I(9, 0, 7, 0, 1,
1190 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1191 PRIM_INT__l_s_k_s, PRIM_INT__k_s_k_s, NULL, PRIM_INT__l_s_i_s, NULL, PRIM_INT__m_s_k_s);
1192
1193
1194 ostei_general_vrr1_K(11, 12,
1195 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1196 PRIM_INT__s_s_n_s, PRIM_INT__s_s_m_s, PRIM_INT__s_s_o_s);
1197
1198
1199 ostei_general_vrr_I(1, 0, 11, 0, 9,
1200 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1201 PRIM_INT__s_s_o_s, NULL, NULL, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_o_s);
1202
1203
1204 ostei_general_vrr_I(2, 0, 11, 0, 8,
1205 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1206 PRIM_INT__p_s_o_s, PRIM_INT__s_s_o_s, NULL, PRIM_INT__p_s_n_s, NULL, PRIM_INT__d_s_o_s);
1207
1208
1209 ostei_general_vrr_I(3, 0, 11, 0, 7,
1210 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1211 PRIM_INT__d_s_o_s, PRIM_INT__p_s_o_s, NULL, PRIM_INT__d_s_n_s, NULL, PRIM_INT__f_s_o_s);
1212
1213
1214 ostei_general_vrr_I(4, 0, 11, 0, 6,
1215 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1216 PRIM_INT__f_s_o_s, PRIM_INT__d_s_o_s, NULL, PRIM_INT__f_s_n_s, NULL, PRIM_INT__g_s_o_s);
1217
1218
1219 ostei_general_vrr_I(5, 0, 11, 0, 5,
1220 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1221 PRIM_INT__g_s_o_s, PRIM_INT__f_s_o_s, NULL, PRIM_INT__g_s_n_s, NULL, PRIM_INT__h_s_o_s);
1222
1223
1224 ostei_general_vrr_I(6, 0, 11, 0, 4,
1225 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1226 PRIM_INT__h_s_o_s, PRIM_INT__g_s_o_s, NULL, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_o_s);
1227
1228
1229 ostei_general_vrr_I(7, 0, 10, 0, 3,
1230 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1231 PRIM_INT__i_s_n_s, PRIM_INT__h_s_n_s, NULL, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_n_s);
1232
1233
1234 ostei_general_vrr_I(8, 0, 9, 0, 2,
1235 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1236 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);
1237
1238
1239 ostei_general_vrr_I(9, 0, 8, 0, 1,
1240 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1241 PRIM_INT__l_s_l_s, PRIM_INT__k_s_l_s, NULL, PRIM_INT__l_s_k_s, NULL, PRIM_INT__m_s_l_s);
1242
1243
1244 ostei_general_vrr1_K(12, 11,
1245 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1246 PRIM_INT__s_s_o_s, PRIM_INT__s_s_n_s, PRIM_INT__s_s_q_s);
1247
1248
1249 ostei_general_vrr_I(1, 0, 12, 0, 9,
1250 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1251 PRIM_INT__s_s_q_s, NULL, NULL, PRIM_INT__s_s_o_s, NULL, PRIM_INT__p_s_q_s);
1252
1253
1254 ostei_general_vrr_I(2, 0, 12, 0, 8,
1255 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1256 PRIM_INT__p_s_q_s, PRIM_INT__s_s_q_s, NULL, PRIM_INT__p_s_o_s, NULL, PRIM_INT__d_s_q_s);
1257
1258
1259 ostei_general_vrr_I(3, 0, 12, 0, 7,
1260 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1261 PRIM_INT__d_s_q_s, PRIM_INT__p_s_q_s, NULL, PRIM_INT__d_s_o_s, NULL, PRIM_INT__f_s_q_s);
1262
1263
1264 ostei_general_vrr_I(4, 0, 12, 0, 6,
1265 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1266 PRIM_INT__f_s_q_s, PRIM_INT__d_s_q_s, NULL, PRIM_INT__f_s_o_s, NULL, PRIM_INT__g_s_q_s);
1267
1268
1269 ostei_general_vrr_I(5, 0, 12, 0, 5,
1270 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1271 PRIM_INT__g_s_q_s, PRIM_INT__f_s_q_s, NULL, PRIM_INT__g_s_o_s, NULL, PRIM_INT__h_s_q_s);
1272
1273
1274 ostei_general_vrr_I(6, 0, 12, 0, 4,
1275 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1276 PRIM_INT__h_s_q_s, PRIM_INT__g_s_q_s, NULL, PRIM_INT__h_s_o_s, NULL, PRIM_INT__i_s_q_s);
1277
1278
1279 ostei_general_vrr_I(7, 0, 11, 0, 3,
1280 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1281 PRIM_INT__i_s_o_s, PRIM_INT__h_s_o_s, NULL, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_o_s);
1282
1283
1284 ostei_general_vrr_I(8, 0, 10, 0, 2,
1285 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1286 PRIM_INT__k_s_n_s, PRIM_INT__i_s_n_s, NULL, PRIM_INT__k_s_m_s, NULL, PRIM_INT__l_s_n_s);
1287
1288
1289 ostei_general_vrr_I(9, 0, 9, 0, 1,
1290 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1291 PRIM_INT__l_s_m_s, PRIM_INT__k_s_m_s, NULL, PRIM_INT__l_s_l_s, NULL, PRIM_INT__m_s_m_s);
1292
1293
1294 ostei_general_vrr1_K(13, 10,
1295 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1296 PRIM_INT__s_s_q_s, PRIM_INT__s_s_o_s, PRIM_INT__s_s_r_s);
1297
1298
1299 ostei_general_vrr_I(1, 0, 13, 0, 9,
1300 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1301 PRIM_INT__s_s_r_s, NULL, NULL, PRIM_INT__s_s_q_s, NULL, PRIM_INT__p_s_r_s);
1302
1303
1304 ostei_general_vrr_I(2, 0, 13, 0, 8,
1305 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1306 PRIM_INT__p_s_r_s, PRIM_INT__s_s_r_s, NULL, PRIM_INT__p_s_q_s, NULL, PRIM_INT__d_s_r_s);
1307
1308
1309 ostei_general_vrr_I(3, 0, 13, 0, 7,
1310 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1311 PRIM_INT__d_s_r_s, PRIM_INT__p_s_r_s, NULL, PRIM_INT__d_s_q_s, NULL, PRIM_INT__f_s_r_s);
1312
1313
1314 ostei_general_vrr_I(4, 0, 13, 0, 6,
1315 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1316 PRIM_INT__f_s_r_s, PRIM_INT__d_s_r_s, NULL, PRIM_INT__f_s_q_s, NULL, PRIM_INT__g_s_r_s);
1317
1318
1319 ostei_general_vrr_I(5, 0, 13, 0, 5,
1320 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1321 PRIM_INT__g_s_r_s, PRIM_INT__f_s_r_s, NULL, PRIM_INT__g_s_q_s, NULL, PRIM_INT__h_s_r_s);
1322
1323
1324 ostei_general_vrr_I(6, 0, 13, 0, 4,
1325 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1326 PRIM_INT__h_s_r_s, PRIM_INT__g_s_r_s, NULL, PRIM_INT__h_s_q_s, NULL, PRIM_INT__i_s_r_s);
1327
1328
1329 ostei_general_vrr_I(7, 0, 12, 0, 3,
1330 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1331 PRIM_INT__i_s_q_s, PRIM_INT__h_s_q_s, NULL, PRIM_INT__i_s_o_s, NULL, PRIM_INT__k_s_q_s);
1332
1333
1334 ostei_general_vrr_I(8, 0, 11, 0, 2,
1335 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1336 PRIM_INT__k_s_o_s, PRIM_INT__i_s_o_s, NULL, PRIM_INT__k_s_n_s, NULL, PRIM_INT__l_s_o_s);
1337
1338
1339 ostei_general_vrr_I(9, 0, 10, 0, 1,
1340 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1341 PRIM_INT__l_s_n_s, PRIM_INT__k_s_n_s, NULL, PRIM_INT__l_s_m_s, NULL, PRIM_INT__m_s_n_s);
1342
1343
1344 ostei_general_vrr_I(7, 0, 13, 0, 3,
1345 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1346 PRIM_INT__i_s_r_s, PRIM_INT__h_s_r_s, NULL, PRIM_INT__i_s_q_s, NULL, PRIM_INT__k_s_r_s);
1347
1348
1349 ostei_general_vrr_I(8, 0, 12, 0, 2,
1350 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1351 PRIM_INT__k_s_q_s, PRIM_INT__i_s_q_s, NULL, PRIM_INT__k_s_o_s, NULL, PRIM_INT__l_s_q_s);
1352
1353
1354 ostei_general_vrr_I(9, 0, 11, 0, 1,
1355 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1356 PRIM_INT__l_s_o_s, PRIM_INT__k_s_o_s, NULL, PRIM_INT__l_s_n_s, NULL, PRIM_INT__m_s_o_s);
1357
1358
1359 ostei_general_vrr_I(8, 0, 13, 0, 2,
1360 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1361 PRIM_INT__k_s_r_s, PRIM_INT__i_s_r_s, NULL, PRIM_INT__k_s_q_s, NULL, PRIM_INT__l_s_r_s);
1362
1363
1364 ostei_general_vrr_I(9, 0, 12, 0, 1,
1365 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1366 PRIM_INT__l_s_q_s, PRIM_INT__k_s_q_s, NULL, PRIM_INT__l_s_o_s, NULL, PRIM_INT__m_s_q_s);
1367
1368
1369 ostei_general_vrr_I(9, 0, 13, 0, 1,
1370 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1371 PRIM_INT__l_s_r_s, PRIM_INT__k_s_r_s, NULL, PRIM_INT__l_s_q_s, NULL, PRIM_INT__m_s_r_s);
1372
1373
1374
1375
1376 ////////////////////////////////////
1377 // Accumulate contracted integrals
1378 ////////////////////////////////////
1379 if(lastoffset == 0)
1380 {
1381 contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1382 contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1383 contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1384 contract_all(1848, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1385 contract_all(2184, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1386 contract_all(2548, PRIM_INT__i_s_q_s, PRIM_PTR_INT__i_s_q_s);
1387 contract_all(2940, PRIM_INT__i_s_r_s, PRIM_PTR_INT__i_s_r_s);
1388 contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1389 contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1390 contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1391 contract_all(2376, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1392 contract_all(2808, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1393 contract_all(3276, PRIM_INT__k_s_q_s, PRIM_PTR_INT__k_s_q_s);
1394 contract_all(3780, PRIM_INT__k_s_r_s, PRIM_PTR_INT__k_s_r_s);
1395 contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1396 contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1397 contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1398 contract_all(2970, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1399 contract_all(3510, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1400 contract_all(4095, PRIM_INT__l_s_q_s, PRIM_PTR_INT__l_s_q_s);
1401 contract_all(4725, PRIM_INT__l_s_r_s, PRIM_PTR_INT__l_s_r_s);
1402 contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1403 contract_all(2475, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1404 contract_all(3025, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1405 contract_all(3630, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1406 contract_all(4290, PRIM_INT__m_s_o_s, PRIM_PTR_INT__m_s_o_s);
1407 contract_all(5005, PRIM_INT__m_s_q_s, PRIM_PTR_INT__m_s_q_s);
1408 contract_all(5775, PRIM_INT__m_s_r_s, PRIM_PTR_INT__m_s_r_s);
1409 }
1410 else
1411 {
1412 contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1413 contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1414 contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1415 contract(1848, shelloffsets, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1416 contract(2184, shelloffsets, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1417 contract(2548, shelloffsets, PRIM_INT__i_s_q_s, PRIM_PTR_INT__i_s_q_s);
1418 contract(2940, shelloffsets, PRIM_INT__i_s_r_s, PRIM_PTR_INT__i_s_r_s);
1419 contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1420 contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1421 contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1422 contract(2376, shelloffsets, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1423 contract(2808, shelloffsets, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1424 contract(3276, shelloffsets, PRIM_INT__k_s_q_s, PRIM_PTR_INT__k_s_q_s);
1425 contract(3780, shelloffsets, PRIM_INT__k_s_r_s, PRIM_PTR_INT__k_s_r_s);
1426 contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1427 contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1428 contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1429 contract(2970, shelloffsets, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1430 contract(3510, shelloffsets, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1431 contract(4095, shelloffsets, PRIM_INT__l_s_q_s, PRIM_PTR_INT__l_s_q_s);
1432 contract(4725, shelloffsets, PRIM_INT__l_s_r_s, PRIM_PTR_INT__l_s_r_s);
1433 contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1434 contract(2475, shelloffsets, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1435 contract(3025, shelloffsets, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1436 contract(3630, shelloffsets, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1437 contract(4290, shelloffsets, PRIM_INT__m_s_o_s, PRIM_PTR_INT__m_s_o_s);
1438 contract(5005, shelloffsets, PRIM_INT__m_s_q_s, PRIM_PTR_INT__m_s_q_s);
1439 contract(5775, shelloffsets, PRIM_INT__m_s_r_s, PRIM_PTR_INT__m_s_r_s);
1440 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1441 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1442 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1443 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
1444 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
1445 PRIM_PTR_INT__i_s_q_s += lastoffset*2548;
1446 PRIM_PTR_INT__i_s_r_s += lastoffset*2940;
1447 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1448 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1449 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1450 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
1451 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
1452 PRIM_PTR_INT__k_s_q_s += lastoffset*3276;
1453 PRIM_PTR_INT__k_s_r_s += lastoffset*3780;
1454 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1455 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1456 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1457 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
1458 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
1459 PRIM_PTR_INT__l_s_q_s += lastoffset*4095;
1460 PRIM_PTR_INT__l_s_r_s += lastoffset*4725;
1461 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1462 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
1463 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
1464 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
1465 PRIM_PTR_INT__m_s_o_s += lastoffset*4290;
1466 PRIM_PTR_INT__m_s_q_s += lastoffset*5005;
1467 PRIM_PTR_INT__m_s_r_s += lastoffset*5775;
1468 }
1469
1470 } // close loop over j
1471 } // close loop over i
1472
1473 //Advance to the next batch
1474 jstart = SIMINT_SIMD_ROUND(jend);
1475
1476 //////////////////////////////////////////////
1477 // Contracted integrals: Horizontal recurrance
1478 //////////////////////////////////////////////
1479
1480
1481 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1482
1483
1484 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1485 {
1486 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1487
1488 // set up HRR pointers
1489 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1490 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1491 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1492 double const * restrict HRR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
1493 double const * restrict HRR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
1494 double const * restrict HRR_INT__i_s_q_s = INT__i_s_q_s + abcd * 2548;
1495 double const * restrict HRR_INT__i_s_r_s = INT__i_s_r_s + abcd * 2940;
1496 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1497 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1498 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1499 double const * restrict HRR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
1500 double const * restrict HRR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
1501 double const * restrict HRR_INT__k_s_q_s = INT__k_s_q_s + abcd * 3276;
1502 double const * restrict HRR_INT__k_s_r_s = INT__k_s_r_s + abcd * 3780;
1503 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1504 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1505 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1506 double const * restrict HRR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
1507 double const * restrict HRR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
1508 double const * restrict HRR_INT__l_s_q_s = INT__l_s_q_s + abcd * 4095;
1509 double const * restrict HRR_INT__l_s_r_s = INT__l_s_r_s + abcd * 4725;
1510 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1511 double const * restrict HRR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
1512 double const * restrict HRR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
1513 double const * restrict HRR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
1514 double const * restrict HRR_INT__m_s_o_s = INT__m_s_o_s + abcd * 4290;
1515 double const * restrict HRR_INT__m_s_q_s = INT__m_s_q_s + abcd * 5005;
1516 double const * restrict HRR_INT__m_s_r_s = INT__m_s_r_s + abcd * 5775;
1517 double * restrict HRR_INT__i_f_k_i = INT__i_f_k_i + real_abcd * 282240;
1518
1519 // form INT__i_p_k_s
1520 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);
1521
1522 // form INT__i_p_l_s
1523 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);
1524
1525 // form INT__i_p_m_s
1526 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);
1527
1528 // form INT__i_p_n_s
1529 ostei_general_hrr_J(6, 1, 10, 0, hAB, HRR_INT__k_s_n_s, HRR_INT__i_s_n_s, HRR_INT__i_p_n_s);
1530
1531 // form INT__i_p_o_s
1532 ostei_general_hrr_J(6, 1, 11, 0, hAB, HRR_INT__k_s_o_s, HRR_INT__i_s_o_s, HRR_INT__i_p_o_s);
1533
1534 // form INT__i_p_q_s
1535 ostei_general_hrr_J(6, 1, 12, 0, hAB, HRR_INT__k_s_q_s, HRR_INT__i_s_q_s, HRR_INT__i_p_q_s);
1536
1537 // form INT__i_p_r_s
1538 ostei_general_hrr_J(6, 1, 13, 0, hAB, HRR_INT__k_s_r_s, HRR_INT__i_s_r_s, HRR_INT__i_p_r_s);
1539
1540 // form INT__k_p_k_s
1541 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);
1542
1543 // form INT__k_p_l_s
1544 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);
1545
1546 // form INT__k_p_m_s
1547 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);
1548
1549 // form INT__k_p_n_s
1550 ostei_general_hrr_J(7, 1, 10, 0, hAB, HRR_INT__l_s_n_s, HRR_INT__k_s_n_s, HRR_INT__k_p_n_s);
1551
1552 // form INT__k_p_o_s
1553 ostei_general_hrr_J(7, 1, 11, 0, hAB, HRR_INT__l_s_o_s, HRR_INT__k_s_o_s, HRR_INT__k_p_o_s);
1554
1555 // form INT__k_p_q_s
1556 ostei_general_hrr_J(7, 1, 12, 0, hAB, HRR_INT__l_s_q_s, HRR_INT__k_s_q_s, HRR_INT__k_p_q_s);
1557
1558 // form INT__k_p_r_s
1559 ostei_general_hrr_J(7, 1, 13, 0, hAB, HRR_INT__l_s_r_s, HRR_INT__k_s_r_s, HRR_INT__k_p_r_s);
1560
1561 // form INT__l_p_k_s
1562 ostei_general_hrr_J(8, 1, 7, 0, hAB, HRR_INT__m_s_k_s, HRR_INT__l_s_k_s, HRR_INT__l_p_k_s);
1563
1564 // form INT__l_p_l_s
1565 ostei_general_hrr_J(8, 1, 8, 0, hAB, HRR_INT__m_s_l_s, HRR_INT__l_s_l_s, HRR_INT__l_p_l_s);
1566
1567 // form INT__l_p_m_s
1568 ostei_general_hrr_J(8, 1, 9, 0, hAB, HRR_INT__m_s_m_s, HRR_INT__l_s_m_s, HRR_INT__l_p_m_s);
1569
1570 // form INT__l_p_n_s
1571 ostei_general_hrr_J(8, 1, 10, 0, hAB, HRR_INT__m_s_n_s, HRR_INT__l_s_n_s, HRR_INT__l_p_n_s);
1572
1573 // form INT__l_p_o_s
1574 ostei_general_hrr_J(8, 1, 11, 0, hAB, HRR_INT__m_s_o_s, HRR_INT__l_s_o_s, HRR_INT__l_p_o_s);
1575
1576 // form INT__l_p_q_s
1577 ostei_general_hrr_J(8, 1, 12, 0, hAB, HRR_INT__m_s_q_s, HRR_INT__l_s_q_s, HRR_INT__l_p_q_s);
1578
1579 // form INT__l_p_r_s
1580 ostei_general_hrr_J(8, 1, 13, 0, hAB, HRR_INT__m_s_r_s, HRR_INT__l_s_r_s, HRR_INT__l_p_r_s);
1581
1582 // form INT__i_d_k_s
1583 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);
1584
1585 // form INT__i_d_l_s
1586 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);
1587
1588 // form INT__i_d_m_s
1589 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);
1590
1591 // form INT__i_d_n_s
1592 ostei_general_hrr_J(6, 2, 10, 0, hAB, HRR_INT__k_p_n_s, HRR_INT__i_p_n_s, HRR_INT__i_d_n_s);
1593
1594 // form INT__i_d_o_s
1595 ostei_general_hrr_J(6, 2, 11, 0, hAB, HRR_INT__k_p_o_s, HRR_INT__i_p_o_s, HRR_INT__i_d_o_s);
1596
1597 // form INT__i_d_q_s
1598 ostei_general_hrr_J(6, 2, 12, 0, hAB, HRR_INT__k_p_q_s, HRR_INT__i_p_q_s, HRR_INT__i_d_q_s);
1599
1600 // form INT__i_d_r_s
1601 ostei_general_hrr_J(6, 2, 13, 0, hAB, HRR_INT__k_p_r_s, HRR_INT__i_p_r_s, HRR_INT__i_d_r_s);
1602
1603 // form INT__k_d_k_s
1604 ostei_general_hrr_J(7, 2, 7, 0, hAB, HRR_INT__l_p_k_s, HRR_INT__k_p_k_s, HRR_INT__k_d_k_s);
1605
1606 // form INT__k_d_l_s
1607 ostei_general_hrr_J(7, 2, 8, 0, hAB, HRR_INT__l_p_l_s, HRR_INT__k_p_l_s, HRR_INT__k_d_l_s);
1608
1609 // form INT__k_d_m_s
1610 ostei_general_hrr_J(7, 2, 9, 0, hAB, HRR_INT__l_p_m_s, HRR_INT__k_p_m_s, HRR_INT__k_d_m_s);
1611
1612 // form INT__k_d_n_s
1613 ostei_general_hrr_J(7, 2, 10, 0, hAB, HRR_INT__l_p_n_s, HRR_INT__k_p_n_s, HRR_INT__k_d_n_s);
1614
1615 // form INT__k_d_o_s
1616 ostei_general_hrr_J(7, 2, 11, 0, hAB, HRR_INT__l_p_o_s, HRR_INT__k_p_o_s, HRR_INT__k_d_o_s);
1617
1618 // form INT__k_d_q_s
1619 ostei_general_hrr_J(7, 2, 12, 0, hAB, HRR_INT__l_p_q_s, HRR_INT__k_p_q_s, HRR_INT__k_d_q_s);
1620
1621 // form INT__k_d_r_s
1622 ostei_general_hrr_J(7, 2, 13, 0, hAB, HRR_INT__l_p_r_s, HRR_INT__k_p_r_s, HRR_INT__k_d_r_s);
1623
1624 // form INT__i_f_k_s
1625 ostei_general_hrr_J(6, 3, 7, 0, hAB, HRR_INT__k_d_k_s, HRR_INT__i_d_k_s, HRR_INT__i_f_k_s);
1626
1627 // form INT__i_f_l_s
1628 ostei_general_hrr_J(6, 3, 8, 0, hAB, HRR_INT__k_d_l_s, HRR_INT__i_d_l_s, HRR_INT__i_f_l_s);
1629
1630 // form INT__i_f_m_s
1631 ostei_general_hrr_J(6, 3, 9, 0, hAB, HRR_INT__k_d_m_s, HRR_INT__i_d_m_s, HRR_INT__i_f_m_s);
1632
1633 // form INT__i_f_n_s
1634 ostei_general_hrr_J(6, 3, 10, 0, hAB, HRR_INT__k_d_n_s, HRR_INT__i_d_n_s, HRR_INT__i_f_n_s);
1635
1636 // form INT__i_f_o_s
1637 ostei_general_hrr_J(6, 3, 11, 0, hAB, HRR_INT__k_d_o_s, HRR_INT__i_d_o_s, HRR_INT__i_f_o_s);
1638
1639 // form INT__i_f_q_s
1640 ostei_general_hrr_J(6, 3, 12, 0, hAB, HRR_INT__k_d_q_s, HRR_INT__i_d_q_s, HRR_INT__i_f_q_s);
1641
1642 // form INT__i_f_r_s
1643 ostei_general_hrr_J(6, 3, 13, 0, hAB, HRR_INT__k_d_r_s, HRR_INT__i_d_r_s, HRR_INT__i_f_r_s);
1644
1645 // form INT__i_f_k_p
1646 ostei_general_hrr_L(6, 3, 7, 1, hCD, HRR_INT__i_f_l_s, HRR_INT__i_f_k_s, HRR_INT__i_f_k_p);
1647
1648 // form INT__i_f_l_p
1649 ostei_general_hrr_L(6, 3, 8, 1, hCD, HRR_INT__i_f_m_s, HRR_INT__i_f_l_s, HRR_INT__i_f_l_p);
1650
1651 // form INT__i_f_m_p
1652 ostei_general_hrr_L(6, 3, 9, 1, hCD, HRR_INT__i_f_n_s, HRR_INT__i_f_m_s, HRR_INT__i_f_m_p);
1653
1654 // form INT__i_f_n_p
1655 ostei_general_hrr_L(6, 3, 10, 1, hCD, HRR_INT__i_f_o_s, HRR_INT__i_f_n_s, HRR_INT__i_f_n_p);
1656
1657 // form INT__i_f_o_p
1658 ostei_general_hrr_L(6, 3, 11, 1, hCD, HRR_INT__i_f_q_s, HRR_INT__i_f_o_s, HRR_INT__i_f_o_p);
1659
1660 // form INT__i_f_q_p
1661 ostei_general_hrr_L(6, 3, 12, 1, hCD, HRR_INT__i_f_r_s, HRR_INT__i_f_q_s, HRR_INT__i_f_q_p);
1662
1663 // form INT__i_f_k_d
1664 ostei_general_hrr_L(6, 3, 7, 2, hCD, HRR_INT__i_f_l_p, HRR_INT__i_f_k_p, HRR_INT__i_f_k_d);
1665
1666 // form INT__i_f_l_d
1667 ostei_general_hrr_L(6, 3, 8, 2, hCD, HRR_INT__i_f_m_p, HRR_INT__i_f_l_p, HRR_INT__i_f_l_d);
1668
1669 // form INT__i_f_m_d
1670 ostei_general_hrr_L(6, 3, 9, 2, hCD, HRR_INT__i_f_n_p, HRR_INT__i_f_m_p, HRR_INT__i_f_m_d);
1671
1672 // form INT__i_f_n_d
1673 ostei_general_hrr_L(6, 3, 10, 2, hCD, HRR_INT__i_f_o_p, HRR_INT__i_f_n_p, HRR_INT__i_f_n_d);
1674
1675 // form INT__i_f_o_d
1676 ostei_general_hrr_L(6, 3, 11, 2, hCD, HRR_INT__i_f_q_p, HRR_INT__i_f_o_p, HRR_INT__i_f_o_d);
1677
1678 // form INT__i_f_k_f
1679 ostei_general_hrr_L(6, 3, 7, 3, hCD, HRR_INT__i_f_l_d, HRR_INT__i_f_k_d, HRR_INT__i_f_k_f);
1680
1681 // form INT__i_f_l_f
1682 ostei_general_hrr_L(6, 3, 8, 3, hCD, HRR_INT__i_f_m_d, HRR_INT__i_f_l_d, HRR_INT__i_f_l_f);
1683
1684 // form INT__i_f_m_f
1685 ostei_general_hrr_L(6, 3, 9, 3, hCD, HRR_INT__i_f_n_d, HRR_INT__i_f_m_d, HRR_INT__i_f_m_f);
1686
1687 // form INT__i_f_n_f
1688 ostei_general_hrr_L(6, 3, 10, 3, hCD, HRR_INT__i_f_o_d, HRR_INT__i_f_n_d, HRR_INT__i_f_n_f);
1689
1690 // form INT__i_f_k_g
1691 ostei_general_hrr_L(6, 3, 7, 4, hCD, HRR_INT__i_f_l_f, HRR_INT__i_f_k_f, HRR_INT__i_f_k_g);
1692
1693 // form INT__i_f_l_g
1694 ostei_general_hrr_L(6, 3, 8, 4, hCD, HRR_INT__i_f_m_f, HRR_INT__i_f_l_f, HRR_INT__i_f_l_g);
1695
1696 // form INT__i_f_m_g
1697 ostei_general_hrr_L(6, 3, 9, 4, hCD, HRR_INT__i_f_n_f, HRR_INT__i_f_m_f, HRR_INT__i_f_m_g);
1698
1699 // form INT__i_f_k_h
1700 ostei_general_hrr_L(6, 3, 7, 5, hCD, HRR_INT__i_f_l_g, HRR_INT__i_f_k_g, HRR_INT__i_f_k_h);
1701
1702 // form INT__i_f_l_h
1703 ostei_general_hrr_L(6, 3, 8, 5, hCD, HRR_INT__i_f_m_g, HRR_INT__i_f_l_g, HRR_INT__i_f_l_h);
1704
1705 // form INT__i_f_k_i
1706 ostei_general_hrr_L(6, 3, 7, 6, hCD, HRR_INT__i_f_l_h, HRR_INT__i_f_k_h, HRR_INT__i_f_k_i);
1707
1708
1709 } // close HRR loop
1710
1711
1712 } // close loop cdbatch
1713
1714 istart = iend;
1715 } // close loop over ab
1716
1717 return P.nshell12_clip * Q.nshell12_clip;
1718 }
1719
ostei_f_i_k_i(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__f_i_k_i)1720 int ostei_f_i_k_i(struct simint_multi_shellpair const P,
1721 struct simint_multi_shellpair const Q,
1722 double screen_tol,
1723 double * const restrict work,
1724 double * const restrict INT__f_i_k_i)
1725 {
1726 double P_AB[3*P.nshell12];
1727 struct simint_multi_shellpair P_tmp = P;
1728 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1729 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1730 P_tmp.AB_x = P_AB;
1731 P_tmp.AB_y = P_AB + P.nshell12;
1732 P_tmp.AB_z = P_AB + 2*P.nshell12;
1733
1734 for(int i = 0; i < P.nshell12; i++)
1735 {
1736 P_tmp.AB_x[i] = -P.AB_x[i];
1737 P_tmp.AB_y[i] = -P.AB_y[i];
1738 P_tmp.AB_z[i] = -P.AB_z[i];
1739 }
1740
1741 int ret = ostei_i_f_k_i(P_tmp, Q, screen_tol, work, INT__f_i_k_i);
1742 double buffer[282240] SIMINT_ALIGN_ARRAY_DBL;
1743
1744 for(int q = 0; q < ret; q++)
1745 {
1746 int idx = 0;
1747 for(int a = 0; a < 10; ++a)
1748 for(int b = 0; b < 28; ++b)
1749 for(int c = 0; c < 36; ++c)
1750 for(int d = 0; d < 28; ++d)
1751 buffer[idx++] = INT__f_i_k_i[q*282240+b*10080+a*1008+c*28+d];
1752
1753 memcpy(INT__f_i_k_i+q*282240, buffer, 282240*sizeof(double));
1754 }
1755
1756 return ret;
1757 }
1758
ostei_i_f_i_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_f_i_k)1759 int ostei_i_f_i_k(struct simint_multi_shellpair const P,
1760 struct simint_multi_shellpair const Q,
1761 double screen_tol,
1762 double * const restrict work,
1763 double * const restrict INT__i_f_i_k)
1764 {
1765 double Q_AB[3*Q.nshell12];
1766 struct simint_multi_shellpair Q_tmp = Q;
1767 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1768 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1769 Q_tmp.AB_x = Q_AB;
1770 Q_tmp.AB_y = Q_AB + Q.nshell12;
1771 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1772
1773 for(int i = 0; i < Q.nshell12; i++)
1774 {
1775 Q_tmp.AB_x[i] = -Q.AB_x[i];
1776 Q_tmp.AB_y[i] = -Q.AB_y[i];
1777 Q_tmp.AB_z[i] = -Q.AB_z[i];
1778 }
1779
1780 int ret = ostei_i_f_k_i(P, Q_tmp, screen_tol, work, INT__i_f_i_k);
1781 double buffer[282240] SIMINT_ALIGN_ARRAY_DBL;
1782
1783 for(int q = 0; q < ret; q++)
1784 {
1785 int idx = 0;
1786 for(int a = 0; a < 28; ++a)
1787 for(int b = 0; b < 10; ++b)
1788 for(int c = 0; c < 28; ++c)
1789 for(int d = 0; d < 36; ++d)
1790 buffer[idx++] = INT__i_f_i_k[q*282240+a*10080+b*1008+d*28+c];
1791
1792 memcpy(INT__i_f_i_k+q*282240, buffer, 282240*sizeof(double));
1793 }
1794
1795 return ret;
1796 }
1797
ostei_f_i_i_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__f_i_i_k)1798 int ostei_f_i_i_k(struct simint_multi_shellpair const P,
1799 struct simint_multi_shellpair const Q,
1800 double screen_tol,
1801 double * const restrict work,
1802 double * const restrict INT__f_i_i_k)
1803 {
1804 double P_AB[3*P.nshell12];
1805 struct simint_multi_shellpair P_tmp = P;
1806 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1807 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1808 P_tmp.AB_x = P_AB;
1809 P_tmp.AB_y = P_AB + P.nshell12;
1810 P_tmp.AB_z = P_AB + 2*P.nshell12;
1811
1812 for(int i = 0; i < P.nshell12; i++)
1813 {
1814 P_tmp.AB_x[i] = -P.AB_x[i];
1815 P_tmp.AB_y[i] = -P.AB_y[i];
1816 P_tmp.AB_z[i] = -P.AB_z[i];
1817 }
1818
1819 double Q_AB[3*Q.nshell12];
1820 struct simint_multi_shellpair Q_tmp = Q;
1821 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1822 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1823 Q_tmp.AB_x = Q_AB;
1824 Q_tmp.AB_y = Q_AB + Q.nshell12;
1825 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1826
1827 for(int i = 0; i < Q.nshell12; i++)
1828 {
1829 Q_tmp.AB_x[i] = -Q.AB_x[i];
1830 Q_tmp.AB_y[i] = -Q.AB_y[i];
1831 Q_tmp.AB_z[i] = -Q.AB_z[i];
1832 }
1833
1834 int ret = ostei_i_f_k_i(P_tmp, Q_tmp, screen_tol, work, INT__f_i_i_k);
1835 double buffer[282240] SIMINT_ALIGN_ARRAY_DBL;
1836
1837 for(int q = 0; q < ret; q++)
1838 {
1839 int idx = 0;
1840 for(int a = 0; a < 10; ++a)
1841 for(int b = 0; b < 28; ++b)
1842 for(int c = 0; c < 28; ++c)
1843 for(int d = 0; d < 36; ++d)
1844 buffer[idx++] = INT__f_i_i_k[q*282240+b*10080+a*1008+d*28+c];
1845
1846 memcpy(INT__f_i_i_k+q*282240, buffer, 282240*sizeof(double));
1847 }
1848
1849 return ret;
1850 }
1851
1852