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_h_g_k_h(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__h_g_k_h)8 int ostei_h_g_k_h(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__h_g_k_h)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__h_g_k_h);
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__h_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__h_s_l_s = work + (SIMINT_NSHELL_SIMD * 756);
31 double * const INT__h_s_m_s = work + (SIMINT_NSHELL_SIMD * 1701);
32 double * const INT__h_s_n_s = work + (SIMINT_NSHELL_SIMD * 2856);
33 double * const INT__h_s_o_s = work + (SIMINT_NSHELL_SIMD * 4242);
34 double * const INT__h_s_q_s = work + (SIMINT_NSHELL_SIMD * 5880);
35 double * const INT__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 7791);
36 double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 8799);
37 double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 10059);
38 double * const INT__i_s_n_s = work + (SIMINT_NSHELL_SIMD * 11599);
39 double * const INT__i_s_o_s = work + (SIMINT_NSHELL_SIMD * 13447);
40 double * const INT__i_s_q_s = work + (SIMINT_NSHELL_SIMD * 15631);
41 double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 18179);
42 double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 19475);
43 double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 21095);
44 double * const INT__k_s_n_s = work + (SIMINT_NSHELL_SIMD * 23075);
45 double * const INT__k_s_o_s = work + (SIMINT_NSHELL_SIMD * 25451);
46 double * const INT__k_s_q_s = work + (SIMINT_NSHELL_SIMD * 28259);
47 double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 31535);
48 double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 33155);
49 double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 35180);
50 double * const INT__l_s_n_s = work + (SIMINT_NSHELL_SIMD * 37655);
51 double * const INT__l_s_o_s = work + (SIMINT_NSHELL_SIMD * 40625);
52 double * const INT__l_s_q_s = work + (SIMINT_NSHELL_SIMD * 44135);
53 double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 48230);
54 double * const INT__m_s_l_s = work + (SIMINT_NSHELL_SIMD * 50210);
55 double * const INT__m_s_m_s = work + (SIMINT_NSHELL_SIMD * 52685);
56 double * const INT__m_s_n_s = work + (SIMINT_NSHELL_SIMD * 55710);
57 double * const INT__m_s_o_s = work + (SIMINT_NSHELL_SIMD * 59340);
58 double * const INT__m_s_q_s = work + (SIMINT_NSHELL_SIMD * 63630);
59 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*68635);
60 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
61 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 22;
62 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 85;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 205;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 395;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_h_s = primwork + 665;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_i_s = primwork + 1022;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_k_s = primwork + 1470;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_l_s = primwork + 2010;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_m_s = primwork + 2640;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_n_s = primwork + 3355;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_o_s = primwork + 4147;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_q_s = primwork + 5005;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 5915;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 5942;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 6023;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 6185;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 6455;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 6860;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_i_s = primwork + 7427;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_k_s = primwork + 8183;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_l_s = primwork + 9155;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_m_s = primwork + 10370;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_n_s = primwork + 11855;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_o_s = primwork + 13637;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_q_s = primwork + 15743;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 18200;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 18248;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 18392;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 18680;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 19160;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 19880;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 20888;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_k_s = primwork + 22232;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_l_s = primwork + 23960;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_m_s = primwork + 26120;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_n_s = primwork + 28760;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_o_s = primwork + 31928;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_q_s = primwork + 35672;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 40040;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 40250;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 40670;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 41370;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 42420;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 43890;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 45850;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_l_s = primwork + 48370;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_m_s = primwork + 51520;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_n_s = primwork + 55370;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_o_s = primwork + 59990;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_q_s = primwork + 65450;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 71820;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 72360;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 73260;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 74610;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 76500;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 79020;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 82260;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_m_s = primwork + 86310;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_n_s = primwork + 91260;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_o_s = primwork + 97200;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_q_s = primwork + 104220;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 112410;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 113460;
124 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 115035;
125 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 117240;
126 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 120180;
127 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 123960;
128 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 128685;
129 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_n_s = primwork + 134460;
130 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_o_s = primwork + 141390;
131 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_q_s = primwork + 149580;
132 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 159135;
133 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 160815;
134 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 163167;
135 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 166303;
136 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 170335;
137 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 175375;
138 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_n_s = primwork + 181535;
139 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_o_s = primwork + 188927;
140 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_q_s = primwork + 197663;
141 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 207855;
142 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 210123;
143 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 213147;
144 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 217035;
145 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 221895;
146 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_n_s = primwork + 227835;
147 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_o_s = primwork + 234963;
148 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_q_s = primwork + 243387;
149 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 253215;
150 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 255735;
151 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 258975;
152 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 263025;
153 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_n_s = primwork + 267975;
154 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_o_s = primwork + 273915;
155 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_q_s = primwork + 280935;
156 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 289125;
157 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_l_s = primwork + 291105;
158 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_m_s = primwork + 293580;
159 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_n_s = primwork + 296605;
160 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_o_s = primwork + 300235;
161 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_q_s = primwork + 304525;
162 double * const hrrwork = (double *)(primwork + 309530);
163 double * const HRR_INT__h_p_k_s = hrrwork + 0;
164 double * const HRR_INT__h_p_l_s = hrrwork + 2268;
165 double * const HRR_INT__h_p_m_s = hrrwork + 5103;
166 double * const HRR_INT__h_p_n_s = hrrwork + 8568;
167 double * const HRR_INT__h_p_o_s = hrrwork + 12726;
168 double * const HRR_INT__h_p_q_s = hrrwork + 17640;
169 double * const HRR_INT__h_d_k_s = hrrwork + 23373;
170 double * const HRR_INT__h_d_l_s = hrrwork + 27909;
171 double * const HRR_INT__h_d_m_s = hrrwork + 33579;
172 double * const HRR_INT__h_d_n_s = hrrwork + 40509;
173 double * const HRR_INT__h_d_o_s = hrrwork + 48825;
174 double * const HRR_INT__h_d_q_s = hrrwork + 58653;
175 double * const HRR_INT__h_f_k_s = hrrwork + 70119;
176 double * const HRR_INT__h_f_l_s = hrrwork + 77679;
177 double * const HRR_INT__h_f_m_s = hrrwork + 87129;
178 double * const HRR_INT__h_f_n_s = hrrwork + 98679;
179 double * const HRR_INT__h_f_o_s = hrrwork + 112539;
180 double * const HRR_INT__h_f_q_s = hrrwork + 128919;
181 double * const HRR_INT__h_g_k_s = hrrwork + 148029;
182 double * const HRR_INT__h_g_k_p = hrrwork + 159369;
183 double * const HRR_INT__h_g_k_d = hrrwork + 193389;
184 double * const HRR_INT__h_g_k_f = hrrwork + 261429;
185 double * const HRR_INT__h_g_k_g = hrrwork + 374829;
186 double * const HRR_INT__h_g_l_s = hrrwork + 544929;
187 double * const HRR_INT__h_g_l_p = hrrwork + 559104;
188 double * const HRR_INT__h_g_l_d = hrrwork + 601629;
189 double * const HRR_INT__h_g_l_f = hrrwork + 686679;
190 double * const HRR_INT__h_g_l_g = hrrwork + 828429;
191 double * const HRR_INT__h_g_m_s = hrrwork + 1041054;
192 double * const HRR_INT__h_g_m_p = hrrwork + 1058379;
193 double * const HRR_INT__h_g_m_d = hrrwork + 1110354;
194 double * const HRR_INT__h_g_m_f = hrrwork + 1214304;
195 double * const HRR_INT__h_g_n_s = hrrwork + 1387554;
196 double * const HRR_INT__h_g_n_p = hrrwork + 1408344;
197 double * const HRR_INT__h_g_n_d = hrrwork + 1470714;
198 double * const HRR_INT__h_g_o_s = hrrwork + 1595454;
199 double * const HRR_INT__h_g_o_p = hrrwork + 1620024;
200 double * const HRR_INT__h_g_q_s = hrrwork + 1693734;
201 double * const HRR_INT__i_p_k_s = hrrwork + 1722399;
202 double * const HRR_INT__i_p_l_s = hrrwork + 1725423;
203 double * const HRR_INT__i_p_m_s = hrrwork + 1729203;
204 double * const HRR_INT__i_p_n_s = hrrwork + 1733823;
205 double * const HRR_INT__i_p_o_s = hrrwork + 1739367;
206 double * const HRR_INT__i_p_q_s = hrrwork + 1745919;
207 double * const HRR_INT__i_d_k_s = hrrwork + 1753563;
208 double * const HRR_INT__i_d_l_s = hrrwork + 1759611;
209 double * const HRR_INT__i_d_m_s = hrrwork + 1767171;
210 double * const HRR_INT__i_d_n_s = hrrwork + 1776411;
211 double * const HRR_INT__i_d_o_s = hrrwork + 1787499;
212 double * const HRR_INT__i_d_q_s = hrrwork + 1800603;
213 double * const HRR_INT__i_f_k_s = hrrwork + 1815891;
214 double * const HRR_INT__i_f_l_s = hrrwork + 1825971;
215 double * const HRR_INT__i_f_m_s = hrrwork + 1838571;
216 double * const HRR_INT__i_f_n_s = hrrwork + 1853971;
217 double * const HRR_INT__i_f_o_s = hrrwork + 1872451;
218 double * const HRR_INT__i_f_q_s = hrrwork + 1894291;
219 double * const HRR_INT__k_p_k_s = hrrwork + 1919771;
220 double * const HRR_INT__k_p_l_s = hrrwork + 1923659;
221 double * const HRR_INT__k_p_m_s = hrrwork + 1928519;
222 double * const HRR_INT__k_p_n_s = hrrwork + 1934459;
223 double * const HRR_INT__k_p_o_s = hrrwork + 1941587;
224 double * const HRR_INT__k_p_q_s = hrrwork + 1950011;
225 double * const HRR_INT__k_d_k_s = hrrwork + 1959839;
226 double * const HRR_INT__k_d_l_s = hrrwork + 1967615;
227 double * const HRR_INT__k_d_m_s = hrrwork + 1977335;
228 double * const HRR_INT__k_d_n_s = hrrwork + 1989215;
229 double * const HRR_INT__k_d_o_s = hrrwork + 2003471;
230 double * const HRR_INT__k_d_q_s = hrrwork + 2020319;
231 double * const HRR_INT__l_p_k_s = hrrwork + 2039975;
232 double * const HRR_INT__l_p_l_s = hrrwork + 2044835;
233 double * const HRR_INT__l_p_m_s = hrrwork + 2050910;
234 double * const HRR_INT__l_p_n_s = hrrwork + 2058335;
235 double * const HRR_INT__l_p_o_s = hrrwork + 2067245;
236 double * const HRR_INT__l_p_q_s = hrrwork + 2077775;
237
238
239 // Create constants
240 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
241 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
242 const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
243 const SIMINT_DBLTYPE const_12 = SIMINT_DBLSET1(12);
244 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
245 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
246 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
247 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
248 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
249 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
250 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
251 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
252 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
253
254
255 ////////////////////////////////////////
256 // Loop over shells and primitives
257 ////////////////////////////////////////
258
259 real_abcd = 0;
260 istart = 0;
261 for(ab = 0; ab < P.nshell12_clip; ++ab)
262 {
263 const int iend = istart + P.nprim12[ab];
264
265 cd = 0;
266 jstart = 0;
267
268 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
269 {
270 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
271 int jend = jstart;
272 for(i = 0; i < nshellbatch; i++)
273 jend += Q.nprim12[cd+i];
274
275 // Clear the beginning of the workspace (where we are accumulating integrals)
276 memset(work, 0, SIMINT_NSHELL_SIMD * 68635 * sizeof(double));
277 abcd = 0;
278
279
280 for(i = istart; i < iend; ++i)
281 {
282 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
283
284 if(check_screen)
285 {
286 // Skip this whole thing if always insignificant
287 if((P.screen[i] * Q.screen_max) < screen_tol)
288 continue;
289 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
290 }
291
292 icd = 0;
293 iprimcd = 0;
294 nprim_icd = Q.nprim12[cd];
295 double * restrict PRIM_PTR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
296 double * restrict PRIM_PTR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
297 double * restrict PRIM_PTR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
298 double * restrict PRIM_PTR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
299 double * restrict PRIM_PTR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
300 double * restrict PRIM_PTR_INT__h_s_q_s = INT__h_s_q_s + abcd * 1911;
301 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
302 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
303 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
304 double * restrict PRIM_PTR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
305 double * restrict PRIM_PTR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
306 double * restrict PRIM_PTR_INT__i_s_q_s = INT__i_s_q_s + abcd * 2548;
307 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
308 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
309 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
310 double * restrict PRIM_PTR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
311 double * restrict PRIM_PTR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
312 double * restrict PRIM_PTR_INT__k_s_q_s = INT__k_s_q_s + abcd * 3276;
313 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
314 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
315 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
316 double * restrict PRIM_PTR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
317 double * restrict PRIM_PTR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
318 double * restrict PRIM_PTR_INT__l_s_q_s = INT__l_s_q_s + abcd * 4095;
319 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
320 double * restrict PRIM_PTR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
321 double * restrict PRIM_PTR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
322 double * restrict PRIM_PTR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
323 double * restrict PRIM_PTR_INT__m_s_o_s = INT__m_s_o_s + abcd * 4290;
324 double * restrict PRIM_PTR_INT__m_s_q_s = INT__m_s_q_s + abcd * 5005;
325
326
327
328 // Load these one per loop over i
329 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
330 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
331 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
332
333 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
334
335 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
336 {
337 // calculate the shell offsets
338 // these are the offset from the shell pointed to by cd
339 // for each element
340 int shelloffsets[SIMINT_SIMD_LEN] = {0};
341 int lastoffset = 0;
342 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
343
344 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
345 {
346 // Handle if the first element of the vector is a new shell
347 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
348 {
349 nprim_icd += Q.nprim12[cd + (++icd)];
350 PRIM_PTR_INT__h_s_k_s += 756;
351 PRIM_PTR_INT__h_s_l_s += 945;
352 PRIM_PTR_INT__h_s_m_s += 1155;
353 PRIM_PTR_INT__h_s_n_s += 1386;
354 PRIM_PTR_INT__h_s_o_s += 1638;
355 PRIM_PTR_INT__h_s_q_s += 1911;
356 PRIM_PTR_INT__i_s_k_s += 1008;
357 PRIM_PTR_INT__i_s_l_s += 1260;
358 PRIM_PTR_INT__i_s_m_s += 1540;
359 PRIM_PTR_INT__i_s_n_s += 1848;
360 PRIM_PTR_INT__i_s_o_s += 2184;
361 PRIM_PTR_INT__i_s_q_s += 2548;
362 PRIM_PTR_INT__k_s_k_s += 1296;
363 PRIM_PTR_INT__k_s_l_s += 1620;
364 PRIM_PTR_INT__k_s_m_s += 1980;
365 PRIM_PTR_INT__k_s_n_s += 2376;
366 PRIM_PTR_INT__k_s_o_s += 2808;
367 PRIM_PTR_INT__k_s_q_s += 3276;
368 PRIM_PTR_INT__l_s_k_s += 1620;
369 PRIM_PTR_INT__l_s_l_s += 2025;
370 PRIM_PTR_INT__l_s_m_s += 2475;
371 PRIM_PTR_INT__l_s_n_s += 2970;
372 PRIM_PTR_INT__l_s_o_s += 3510;
373 PRIM_PTR_INT__l_s_q_s += 4095;
374 PRIM_PTR_INT__m_s_k_s += 1980;
375 PRIM_PTR_INT__m_s_l_s += 2475;
376 PRIM_PTR_INT__m_s_m_s += 3025;
377 PRIM_PTR_INT__m_s_n_s += 3630;
378 PRIM_PTR_INT__m_s_o_s += 4290;
379 PRIM_PTR_INT__m_s_q_s += 5005;
380 }
381 iprimcd++;
382 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
383 {
384 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
385 {
386 shelloffsets[n] = shelloffsets[n-1] + 1;
387 lastoffset++;
388 nprim_icd += Q.nprim12[cd + (++icd)];
389 }
390 else
391 shelloffsets[n] = shelloffsets[n-1];
392 iprimcd++;
393 }
394 }
395 else
396 iprimcd += SIMINT_SIMD_LEN;
397
398 // Do we have to compute this vector (or has it been screened out)?
399 // (not_screened != 0 means we have to do this vector)
400 if(check_screen)
401 {
402 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
403 if(vmax < screen_tol)
404 {
405 PRIM_PTR_INT__h_s_k_s += lastoffset*756;
406 PRIM_PTR_INT__h_s_l_s += lastoffset*945;
407 PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
408 PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
409 PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
410 PRIM_PTR_INT__h_s_q_s += lastoffset*1911;
411 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
412 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
413 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
414 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
415 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
416 PRIM_PTR_INT__i_s_q_s += lastoffset*2548;
417 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
418 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
419 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
420 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
421 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
422 PRIM_PTR_INT__k_s_q_s += lastoffset*3276;
423 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
424 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
425 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
426 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
427 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
428 PRIM_PTR_INT__l_s_q_s += lastoffset*4095;
429 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
430 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
431 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
432 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
433 PRIM_PTR_INT__m_s_o_s += lastoffset*4290;
434 PRIM_PTR_INT__m_s_q_s += lastoffset*5005;
435 continue;
436 }
437 }
438
439 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
440 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
441 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
442 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
443
444
445 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
446 SIMINT_DBLTYPE PQ[3];
447 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
448 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
449 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
450 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
451 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
452 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
453
454 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
455 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
456 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
457 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
458 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
459 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
460 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
461
462 // NOTE: Minus sign!
463 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
464 SIMINT_DBLTYPE aop_PQ[3];
465 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
466 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
467 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
468
469 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
470 SIMINT_DBLTYPE aoq_PQ[3];
471 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
472 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
473 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
474 // Put a minus sign here so we don't have to in RR routines
475 a_over_q = SIMINT_NEG(a_over_q);
476
477
478 //////////////////////////////////////////////
479 // Fjt function section
480 // Maximum v value: 21
481 //////////////////////////////////////////////
482 // The parameter to the Fjt function
483 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
484
485
486 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
487
488
489 boys_F_split(PRIM_INT__s_s_s_s, F_x, 21);
490 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
491 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
492 for(n = 0; n <= 21; n++)
493 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
494
495 //////////////////////////////////////////////
496 // Primitive integrals: Vertical recurrance
497 //////////////////////////////////////////////
498
499 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
500 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
501 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
502 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
503 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
504 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
505 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
506 const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
507 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
508 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
509 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
510 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
511 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
512 const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
513 const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
514 const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
515 const SIMINT_DBLTYPE vrr_const_9_over_2q = SIMINT_MUL(const_9, one_over_2q);
516 const SIMINT_DBLTYPE vrr_const_10_over_2q = SIMINT_MUL(const_10, one_over_2q);
517 const SIMINT_DBLTYPE vrr_const_11_over_2q = SIMINT_MUL(const_11, one_over_2q);
518 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
519 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
520 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
521 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
522 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
523 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
524 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
525 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
526 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
527 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
528 const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
529 const SIMINT_DBLTYPE vrr_const_12_over_2pq = SIMINT_MUL(const_12, one_over_2pq);
530
531
532
533 // Forming PRIM_INT__s_s_p_s[21 * 3];
534 for(n = 0; n < 21; ++n) // loop over orders of auxiliary function
535 {
536
537 PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
538 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]);
539
540 PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
541 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]);
542
543 PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
544 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]);
545
546 }
547
548
549
550 // Forming PRIM_INT__s_s_d_s[20 * 6];
551 for(n = 0; n < 20; ++n) // loop over orders of auxiliary function
552 {
553
554 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
555 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]);
556 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]);
557
558 PRIM_INT__s_s_d_s[n * 6 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
559 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]);
560
561 PRIM_INT__s_s_d_s[n * 6 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
562 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]);
563
564 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
565 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]);
566 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]);
567
568 PRIM_INT__s_s_d_s[n * 6 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
569 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]);
570
571 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
572 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]);
573 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]);
574
575 }
576
577
578
579 // Forming PRIM_INT__s_s_f_s[19 * 10];
580 for(n = 0; n < 19; ++n) // loop over orders of auxiliary function
581 {
582
583 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
584 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]);
585 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]);
586
587 PRIM_INT__s_s_f_s[n * 10 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
588 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]);
589
590 PRIM_INT__s_s_f_s[n * 10 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
591 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]);
592
593 PRIM_INT__s_s_f_s[n * 10 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
594 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]);
595
596 PRIM_INT__s_s_f_s[n * 10 + 4] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
597 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]);
598
599 PRIM_INT__s_s_f_s[n * 10 + 5] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
600 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]);
601
602 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
603 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]);
604 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]);
605
606 PRIM_INT__s_s_f_s[n * 10 + 7] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
607 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]);
608
609 PRIM_INT__s_s_f_s[n * 10 + 8] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
610 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]);
611
612 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
613 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]);
614 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]);
615
616 }
617
618
619 VRR_K_s_s_g_s(
620 PRIM_INT__s_s_g_s,
621 PRIM_INT__s_s_f_s,
622 PRIM_INT__s_s_d_s,
623 Q_PA,
624 a_over_q,
625 aoq_PQ,
626 one_over_2q,
627 18);
628
629
630 VRR_K_s_s_h_s(
631 PRIM_INT__s_s_h_s,
632 PRIM_INT__s_s_g_s,
633 PRIM_INT__s_s_f_s,
634 Q_PA,
635 a_over_q,
636 aoq_PQ,
637 one_over_2q,
638 17);
639
640
641 ostei_general_vrr1_K(6, 16,
642 one_over_2q, a_over_q, aoq_PQ, Q_PA,
643 PRIM_INT__s_s_h_s, PRIM_INT__s_s_g_s, PRIM_INT__s_s_i_s);
644
645
646 ostei_general_vrr1_K(7, 15,
647 one_over_2q, a_over_q, aoq_PQ, Q_PA,
648 PRIM_INT__s_s_i_s, PRIM_INT__s_s_h_s, PRIM_INT__s_s_k_s);
649
650
651 ostei_general_vrr_I(1, 0, 7, 0, 9,
652 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
653 PRIM_INT__s_s_k_s, NULL, NULL, PRIM_INT__s_s_i_s, NULL, PRIM_INT__p_s_k_s);
654
655
656 ostei_general_vrr_I(1, 0, 6, 0, 9,
657 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
658 PRIM_INT__s_s_i_s, NULL, NULL, PRIM_INT__s_s_h_s, NULL, PRIM_INT__p_s_i_s);
659
660
661 ostei_general_vrr_I(2, 0, 7, 0, 8,
662 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
663 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);
664
665
666 ostei_general_vrr_I(1, 0, 5, 0, 9,
667 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
668 PRIM_INT__s_s_h_s, NULL, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
669
670
671 ostei_general_vrr_I(2, 0, 6, 0, 8,
672 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
673 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);
674
675
676 ostei_general_vrr_I(3, 0, 7, 0, 7,
677 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
678 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);
679
680
681 VRR_I_p_s_g_s(
682 PRIM_INT__p_s_g_s,
683 PRIM_INT__s_s_g_s,
684 PRIM_INT__s_s_f_s,
685 P_PA,
686 aop_PQ,
687 one_over_2pq,
688 9);
689
690
691 ostei_general_vrr_I(2, 0, 5, 0, 8,
692 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
693 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);
694
695
696 ostei_general_vrr_I(3, 0, 6, 0, 7,
697 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
698 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);
699
700
701 ostei_general_vrr_I(4, 0, 7, 0, 6,
702 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
703 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);
704
705
706 VRR_I_p_s_f_s(
707 PRIM_INT__p_s_f_s,
708 PRIM_INT__s_s_f_s,
709 PRIM_INT__s_s_d_s,
710 P_PA,
711 aop_PQ,
712 one_over_2pq,
713 9);
714
715
716 ostei_general_vrr_I(2, 0, 4, 0, 8,
717 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
718 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);
719
720
721 ostei_general_vrr_I(3, 0, 5, 0, 7,
722 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
723 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);
724
725
726 ostei_general_vrr_I(4, 0, 6, 0, 6,
727 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
728 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);
729
730
731 ostei_general_vrr_I(5, 0, 7, 0, 5,
732 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
733 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);
734
735
736 ostei_general_vrr1_K(8, 14,
737 one_over_2q, a_over_q, aoq_PQ, Q_PA,
738 PRIM_INT__s_s_k_s, PRIM_INT__s_s_i_s, PRIM_INT__s_s_l_s);
739
740
741 ostei_general_vrr_I(1, 0, 8, 0, 9,
742 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
743 PRIM_INT__s_s_l_s, NULL, NULL, PRIM_INT__s_s_k_s, NULL, PRIM_INT__p_s_l_s);
744
745
746 ostei_general_vrr_I(2, 0, 8, 0, 8,
747 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
748 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);
749
750
751 ostei_general_vrr_I(3, 0, 8, 0, 7,
752 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
753 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);
754
755
756 ostei_general_vrr_I(4, 0, 8, 0, 6,
757 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
758 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);
759
760
761 ostei_general_vrr_I(5, 0, 8, 0, 5,
762 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
763 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);
764
765
766
767 // Forming PRIM_INT__p_s_d_s[9 * 18];
768 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
769 {
770
771 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
772 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]);
773 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]);
774
775 PRIM_INT__p_s_d_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 1]);
776 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]);
777 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]);
778
779 PRIM_INT__p_s_d_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 2]);
780 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]);
781 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]);
782
783 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 3]);
784 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]);
785
786 PRIM_INT__p_s_d_s[n * 18 + 4] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 4]);
787 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]);
788
789 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_d_s[n * 6 + 5]);
790 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]);
791
792 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 0]);
793 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]);
794
795 PRIM_INT__p_s_d_s[n * 18 + 7] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 1]);
796 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]);
797 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]);
798
799 PRIM_INT__p_s_d_s[n * 18 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 2]);
800 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]);
801
802 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
803 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]);
804 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]);
805
806 PRIM_INT__p_s_d_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 4]);
807 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]);
808 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]);
809
810 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_d_s[n * 6 + 5]);
811 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]);
812
813 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 0]);
814 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]);
815
816 PRIM_INT__p_s_d_s[n * 18 + 13] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 1]);
817 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]);
818
819 PRIM_INT__p_s_d_s[n * 18 + 14] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 2]);
820 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]);
821 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]);
822
823 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 3]);
824 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]);
825
826 PRIM_INT__p_s_d_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 4]);
827 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]);
828 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]);
829
830 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
831 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]);
832 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]);
833
834 }
835
836
837 VRR_I_d_s_f_s(
838 PRIM_INT__d_s_f_s,
839 PRIM_INT__p_s_f_s,
840 PRIM_INT__s_s_f_s,
841 PRIM_INT__p_s_d_s,
842 P_PA,
843 a_over_p,
844 aop_PQ,
845 one_over_2p,
846 one_over_2pq,
847 8);
848
849
850 ostei_general_vrr_I(3, 0, 4, 0, 7,
851 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
852 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);
853
854
855 ostei_general_vrr_I(4, 0, 5, 0, 6,
856 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
857 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);
858
859
860 ostei_general_vrr_I(5, 0, 6, 0, 5,
861 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
862 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);
863
864
865 ostei_general_vrr_I(6, 0, 7, 0, 4,
866 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
867 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);
868
869
870 ostei_general_vrr1_K(9, 13,
871 one_over_2q, a_over_q, aoq_PQ, Q_PA,
872 PRIM_INT__s_s_l_s, PRIM_INT__s_s_k_s, PRIM_INT__s_s_m_s);
873
874
875 ostei_general_vrr_I(1, 0, 9, 0, 9,
876 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
877 PRIM_INT__s_s_m_s, NULL, NULL, PRIM_INT__s_s_l_s, NULL, PRIM_INT__p_s_m_s);
878
879
880 ostei_general_vrr_I(2, 0, 9, 0, 8,
881 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
882 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);
883
884
885 ostei_general_vrr_I(3, 0, 9, 0, 7,
886 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
887 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);
888
889
890 ostei_general_vrr_I(4, 0, 9, 0, 6,
891 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
892 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);
893
894
895 ostei_general_vrr_I(5, 0, 9, 0, 5,
896 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
897 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);
898
899
900 ostei_general_vrr_I(6, 0, 8, 0, 4,
901 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
902 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);
903
904
905
906 // Forming PRIM_INT__p_s_p_s[9 * 9];
907 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
908 {
909
910 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
911 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]);
912 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]);
913
914 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 1]);
915 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]);
916
917 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_p_s[n * 3 + 2]);
918 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]);
919
920 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 0]);
921 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]);
922
923 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
924 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]);
925 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]);
926
927 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_p_s[n * 3 + 2]);
928 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]);
929
930 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 0]);
931 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]);
932
933 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 1]);
934 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]);
935
936 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
937 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]);
938 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]);
939
940 }
941
942
943 VRR_I_d_s_d_s(
944 PRIM_INT__d_s_d_s,
945 PRIM_INT__p_s_d_s,
946 PRIM_INT__s_s_d_s,
947 PRIM_INT__p_s_p_s,
948 P_PA,
949 a_over_p,
950 aop_PQ,
951 one_over_2p,
952 one_over_2pq,
953 8);
954
955
956 ostei_general_vrr_I(3, 0, 3, 0, 7,
957 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
958 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);
959
960
961 ostei_general_vrr_I(4, 0, 4, 0, 6,
962 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
963 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);
964
965
966 ostei_general_vrr_I(5, 0, 5, 0, 5,
967 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
968 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);
969
970
971 ostei_general_vrr_I(6, 0, 6, 0, 4,
972 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
973 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);
974
975
976 ostei_general_vrr_I(7, 0, 7, 0, 3,
977 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
978 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);
979
980
981 ostei_general_vrr1_K(10, 12,
982 one_over_2q, a_over_q, aoq_PQ, Q_PA,
983 PRIM_INT__s_s_m_s, PRIM_INT__s_s_l_s, PRIM_INT__s_s_n_s);
984
985
986 ostei_general_vrr_I(1, 0, 10, 0, 9,
987 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
988 PRIM_INT__s_s_n_s, NULL, NULL, PRIM_INT__s_s_m_s, NULL, PRIM_INT__p_s_n_s);
989
990
991 ostei_general_vrr_I(2, 0, 10, 0, 8,
992 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
993 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);
994
995
996 ostei_general_vrr_I(3, 0, 10, 0, 7,
997 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
998 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);
999
1000
1001 ostei_general_vrr_I(4, 0, 10, 0, 6,
1002 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1003 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);
1004
1005
1006 ostei_general_vrr_I(5, 0, 10, 0, 5,
1007 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1008 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);
1009
1010
1011 ostei_general_vrr_I(6, 0, 9, 0, 4,
1012 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1013 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);
1014
1015
1016 ostei_general_vrr_I(7, 0, 8, 0, 3,
1017 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1018 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);
1019
1020
1021
1022 // Forming PRIM_INT__p_s_s_s[9 * 3];
1023 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
1024 {
1025
1026 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
1027 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]);
1028
1029 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
1030 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]);
1031
1032 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
1033 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]);
1034
1035 }
1036
1037
1038
1039 // Forming PRIM_INT__d_s_p_s[8 * 18];
1040 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
1041 {
1042
1043 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
1044 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]);
1045 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]);
1046 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]);
1047
1048 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 1]);
1049 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]);
1050 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]);
1051
1052 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_p_s[n * 9 + 2]);
1053 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]);
1054 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]);
1055
1056 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 3]);
1057 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]);
1058 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]);
1059
1060 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
1061 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]);
1062 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]);
1063 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]);
1064
1065 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_p_s[n * 9 + 5]);
1066 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]);
1067 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]);
1068
1069 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 6]);
1070 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]);
1071 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]);
1072
1073 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 7]);
1074 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]);
1075 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]);
1076
1077 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
1078 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]);
1079 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]);
1080 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]);
1081
1082 }
1083
1084
1085 VRR_I_f_s_d_s(
1086 PRIM_INT__f_s_d_s,
1087 PRIM_INT__d_s_d_s,
1088 PRIM_INT__p_s_d_s,
1089 PRIM_INT__d_s_p_s,
1090 P_PA,
1091 a_over_p,
1092 aop_PQ,
1093 one_over_2p,
1094 one_over_2pq,
1095 7);
1096
1097
1098 ostei_general_vrr_I(4, 0, 3, 0, 6,
1099 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1100 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);
1101
1102
1103 ostei_general_vrr_I(5, 0, 4, 0, 5,
1104 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1105 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);
1106
1107
1108 ostei_general_vrr_I(6, 0, 5, 0, 4,
1109 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1110 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);
1111
1112
1113 ostei_general_vrr_I(7, 0, 6, 0, 3,
1114 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1115 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);
1116
1117
1118 ostei_general_vrr_I(8, 0, 7, 0, 2,
1119 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1120 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);
1121
1122
1123 ostei_general_vrr1_K(11, 11,
1124 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1125 PRIM_INT__s_s_n_s, PRIM_INT__s_s_m_s, PRIM_INT__s_s_o_s);
1126
1127
1128 ostei_general_vrr_I(1, 0, 11, 0, 9,
1129 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1130 PRIM_INT__s_s_o_s, NULL, NULL, PRIM_INT__s_s_n_s, NULL, PRIM_INT__p_s_o_s);
1131
1132
1133 ostei_general_vrr_I(2, 0, 11, 0, 8,
1134 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1135 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);
1136
1137
1138 ostei_general_vrr_I(3, 0, 11, 0, 7,
1139 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1140 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);
1141
1142
1143 ostei_general_vrr_I(4, 0, 11, 0, 6,
1144 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1145 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);
1146
1147
1148 ostei_general_vrr_I(5, 0, 11, 0, 5,
1149 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1150 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);
1151
1152
1153 ostei_general_vrr_I(6, 0, 10, 0, 4,
1154 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1155 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);
1156
1157
1158 ostei_general_vrr_I(7, 0, 9, 0, 3,
1159 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1160 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);
1161
1162
1163 ostei_general_vrr_I(8, 0, 8, 0, 2,
1164 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1165 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);
1166
1167
1168
1169 // Forming PRIM_INT__d_s_s_s[8 * 6];
1170 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
1171 {
1172
1173 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
1174 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]);
1175 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]);
1176
1177 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
1178 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]);
1179 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]);
1180
1181 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
1182 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]);
1183 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]);
1184
1185 }
1186
1187
1188 VRR_I_f_s_p_s(
1189 PRIM_INT__f_s_p_s,
1190 PRIM_INT__d_s_p_s,
1191 PRIM_INT__p_s_p_s,
1192 PRIM_INT__d_s_s_s,
1193 P_PA,
1194 a_over_p,
1195 aop_PQ,
1196 one_over_2p,
1197 one_over_2pq,
1198 7);
1199
1200
1201 ostei_general_vrr_I(4, 0, 2, 0, 6,
1202 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1203 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);
1204
1205
1206 ostei_general_vrr_I(5, 0, 3, 0, 5,
1207 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1208 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);
1209
1210
1211 ostei_general_vrr_I(6, 0, 4, 0, 4,
1212 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1213 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);
1214
1215
1216 ostei_general_vrr_I(7, 0, 5, 0, 3,
1217 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1218 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);
1219
1220
1221 ostei_general_vrr_I(8, 0, 6, 0, 2,
1222 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1223 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);
1224
1225
1226 ostei_general_vrr_I(9, 0, 7, 0, 1,
1227 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1228 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);
1229
1230
1231 ostei_general_vrr1_K(12, 10,
1232 one_over_2q, a_over_q, aoq_PQ, Q_PA,
1233 PRIM_INT__s_s_o_s, PRIM_INT__s_s_n_s, PRIM_INT__s_s_q_s);
1234
1235
1236 ostei_general_vrr_I(1, 0, 12, 0, 9,
1237 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1238 PRIM_INT__s_s_q_s, NULL, NULL, PRIM_INT__s_s_o_s, NULL, PRIM_INT__p_s_q_s);
1239
1240
1241 ostei_general_vrr_I(2, 0, 12, 0, 8,
1242 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1243 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);
1244
1245
1246 ostei_general_vrr_I(3, 0, 12, 0, 7,
1247 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1248 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);
1249
1250
1251 ostei_general_vrr_I(4, 0, 12, 0, 6,
1252 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1253 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);
1254
1255
1256 ostei_general_vrr_I(5, 0, 12, 0, 5,
1257 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1258 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);
1259
1260
1261 ostei_general_vrr_I(6, 0, 11, 0, 4,
1262 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1263 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);
1264
1265
1266 ostei_general_vrr_I(7, 0, 10, 0, 3,
1267 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1268 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);
1269
1270
1271 ostei_general_vrr_I(8, 0, 9, 0, 2,
1272 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1273 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);
1274
1275
1276 ostei_general_vrr_I(9, 0, 8, 0, 1,
1277 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1278 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);
1279
1280
1281 ostei_general_vrr_I(6, 0, 12, 0, 4,
1282 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1283 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);
1284
1285
1286 ostei_general_vrr_I(7, 0, 11, 0, 3,
1287 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1288 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);
1289
1290
1291 ostei_general_vrr_I(8, 0, 10, 0, 2,
1292 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1293 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);
1294
1295
1296 ostei_general_vrr_I(9, 0, 9, 0, 1,
1297 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1298 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);
1299
1300
1301 ostei_general_vrr_I(7, 0, 12, 0, 3,
1302 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1303 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);
1304
1305
1306 ostei_general_vrr_I(8, 0, 11, 0, 2,
1307 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1308 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);
1309
1310
1311 ostei_general_vrr_I(9, 0, 10, 0, 1,
1312 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1313 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);
1314
1315
1316 ostei_general_vrr_I(8, 0, 12, 0, 2,
1317 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1318 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);
1319
1320
1321 ostei_general_vrr_I(9, 0, 11, 0, 1,
1322 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1323 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);
1324
1325
1326 ostei_general_vrr_I(9, 0, 12, 0, 1,
1327 one_over_2p, a_over_p, one_over_2pq, aop_PQ, P_PA,
1328 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);
1329
1330
1331
1332
1333 ////////////////////////////////////
1334 // Accumulate contracted integrals
1335 ////////////////////////////////////
1336 if(lastoffset == 0)
1337 {
1338 contract_all(756, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1339 contract_all(945, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1340 contract_all(1155, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1341 contract_all(1386, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1342 contract_all(1638, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1343 contract_all(1911, PRIM_INT__h_s_q_s, PRIM_PTR_INT__h_s_q_s);
1344 contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1345 contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1346 contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1347 contract_all(1848, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1348 contract_all(2184, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1349 contract_all(2548, PRIM_INT__i_s_q_s, PRIM_PTR_INT__i_s_q_s);
1350 contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1351 contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1352 contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1353 contract_all(2376, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1354 contract_all(2808, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1355 contract_all(3276, PRIM_INT__k_s_q_s, PRIM_PTR_INT__k_s_q_s);
1356 contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1357 contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1358 contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1359 contract_all(2970, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1360 contract_all(3510, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1361 contract_all(4095, PRIM_INT__l_s_q_s, PRIM_PTR_INT__l_s_q_s);
1362 contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1363 contract_all(2475, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1364 contract_all(3025, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1365 contract_all(3630, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1366 contract_all(4290, PRIM_INT__m_s_o_s, PRIM_PTR_INT__m_s_o_s);
1367 contract_all(5005, PRIM_INT__m_s_q_s, PRIM_PTR_INT__m_s_q_s);
1368 }
1369 else
1370 {
1371 contract(756, shelloffsets, PRIM_INT__h_s_k_s, PRIM_PTR_INT__h_s_k_s);
1372 contract(945, shelloffsets, PRIM_INT__h_s_l_s, PRIM_PTR_INT__h_s_l_s);
1373 contract(1155, shelloffsets, PRIM_INT__h_s_m_s, PRIM_PTR_INT__h_s_m_s);
1374 contract(1386, shelloffsets, PRIM_INT__h_s_n_s, PRIM_PTR_INT__h_s_n_s);
1375 contract(1638, shelloffsets, PRIM_INT__h_s_o_s, PRIM_PTR_INT__h_s_o_s);
1376 contract(1911, shelloffsets, PRIM_INT__h_s_q_s, PRIM_PTR_INT__h_s_q_s);
1377 contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1378 contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1379 contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1380 contract(1848, shelloffsets, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1381 contract(2184, shelloffsets, PRIM_INT__i_s_o_s, PRIM_PTR_INT__i_s_o_s);
1382 contract(2548, shelloffsets, PRIM_INT__i_s_q_s, PRIM_PTR_INT__i_s_q_s);
1383 contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1384 contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1385 contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1386 contract(2376, shelloffsets, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1387 contract(2808, shelloffsets, PRIM_INT__k_s_o_s, PRIM_PTR_INT__k_s_o_s);
1388 contract(3276, shelloffsets, PRIM_INT__k_s_q_s, PRIM_PTR_INT__k_s_q_s);
1389 contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1390 contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1391 contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1392 contract(2970, shelloffsets, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1393 contract(3510, shelloffsets, PRIM_INT__l_s_o_s, PRIM_PTR_INT__l_s_o_s);
1394 contract(4095, shelloffsets, PRIM_INT__l_s_q_s, PRIM_PTR_INT__l_s_q_s);
1395 contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1396 contract(2475, shelloffsets, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1397 contract(3025, shelloffsets, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1398 contract(3630, shelloffsets, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1399 contract(4290, shelloffsets, PRIM_INT__m_s_o_s, PRIM_PTR_INT__m_s_o_s);
1400 contract(5005, shelloffsets, PRIM_INT__m_s_q_s, PRIM_PTR_INT__m_s_q_s);
1401 PRIM_PTR_INT__h_s_k_s += lastoffset*756;
1402 PRIM_PTR_INT__h_s_l_s += lastoffset*945;
1403 PRIM_PTR_INT__h_s_m_s += lastoffset*1155;
1404 PRIM_PTR_INT__h_s_n_s += lastoffset*1386;
1405 PRIM_PTR_INT__h_s_o_s += lastoffset*1638;
1406 PRIM_PTR_INT__h_s_q_s += lastoffset*1911;
1407 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1408 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1409 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1410 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
1411 PRIM_PTR_INT__i_s_o_s += lastoffset*2184;
1412 PRIM_PTR_INT__i_s_q_s += lastoffset*2548;
1413 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1414 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1415 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1416 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
1417 PRIM_PTR_INT__k_s_o_s += lastoffset*2808;
1418 PRIM_PTR_INT__k_s_q_s += lastoffset*3276;
1419 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1420 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1421 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1422 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
1423 PRIM_PTR_INT__l_s_o_s += lastoffset*3510;
1424 PRIM_PTR_INT__l_s_q_s += lastoffset*4095;
1425 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1426 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
1427 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
1428 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
1429 PRIM_PTR_INT__m_s_o_s += lastoffset*4290;
1430 PRIM_PTR_INT__m_s_q_s += lastoffset*5005;
1431 }
1432
1433 } // close loop over j
1434 } // close loop over i
1435
1436 //Advance to the next batch
1437 jstart = SIMINT_SIMD_ROUND(jend);
1438
1439 //////////////////////////////////////////////
1440 // Contracted integrals: Horizontal recurrance
1441 //////////////////////////////////////////////
1442
1443
1444 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1445
1446
1447 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1448 {
1449 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1450
1451 // set up HRR pointers
1452 double const * restrict HRR_INT__h_s_k_s = INT__h_s_k_s + abcd * 756;
1453 double const * restrict HRR_INT__h_s_l_s = INT__h_s_l_s + abcd * 945;
1454 double const * restrict HRR_INT__h_s_m_s = INT__h_s_m_s + abcd * 1155;
1455 double const * restrict HRR_INT__h_s_n_s = INT__h_s_n_s + abcd * 1386;
1456 double const * restrict HRR_INT__h_s_o_s = INT__h_s_o_s + abcd * 1638;
1457 double const * restrict HRR_INT__h_s_q_s = INT__h_s_q_s + abcd * 1911;
1458 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1459 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1460 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1461 double const * restrict HRR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
1462 double const * restrict HRR_INT__i_s_o_s = INT__i_s_o_s + abcd * 2184;
1463 double const * restrict HRR_INT__i_s_q_s = INT__i_s_q_s + abcd * 2548;
1464 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1465 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1466 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1467 double const * restrict HRR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
1468 double const * restrict HRR_INT__k_s_o_s = INT__k_s_o_s + abcd * 2808;
1469 double const * restrict HRR_INT__k_s_q_s = INT__k_s_q_s + abcd * 3276;
1470 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1471 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1472 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1473 double const * restrict HRR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
1474 double const * restrict HRR_INT__l_s_o_s = INT__l_s_o_s + abcd * 3510;
1475 double const * restrict HRR_INT__l_s_q_s = INT__l_s_q_s + abcd * 4095;
1476 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1477 double const * restrict HRR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
1478 double const * restrict HRR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
1479 double const * restrict HRR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
1480 double const * restrict HRR_INT__m_s_o_s = INT__m_s_o_s + abcd * 4290;
1481 double const * restrict HRR_INT__m_s_q_s = INT__m_s_q_s + abcd * 5005;
1482 double * restrict HRR_INT__h_g_k_h = INT__h_g_k_h + real_abcd * 238140;
1483
1484 // form INT__h_p_k_s
1485 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);
1486
1487 // form INT__h_p_l_s
1488 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);
1489
1490 // form INT__h_p_m_s
1491 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);
1492
1493 // form INT__h_p_n_s
1494 ostei_general_hrr_J(5, 1, 10, 0, hAB, HRR_INT__i_s_n_s, HRR_INT__h_s_n_s, HRR_INT__h_p_n_s);
1495
1496 // form INT__h_p_o_s
1497 ostei_general_hrr_J(5, 1, 11, 0, hAB, HRR_INT__i_s_o_s, HRR_INT__h_s_o_s, HRR_INT__h_p_o_s);
1498
1499 // form INT__h_p_q_s
1500 ostei_general_hrr_J(5, 1, 12, 0, hAB, HRR_INT__i_s_q_s, HRR_INT__h_s_q_s, HRR_INT__h_p_q_s);
1501
1502 // form INT__i_p_k_s
1503 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);
1504
1505 // form INT__i_p_l_s
1506 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);
1507
1508 // form INT__i_p_m_s
1509 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);
1510
1511 // form INT__i_p_n_s
1512 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);
1513
1514 // form INT__i_p_o_s
1515 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);
1516
1517 // form INT__i_p_q_s
1518 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);
1519
1520 // form INT__k_p_k_s
1521 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);
1522
1523 // form INT__k_p_l_s
1524 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);
1525
1526 // form INT__k_p_m_s
1527 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);
1528
1529 // form INT__k_p_n_s
1530 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);
1531
1532 // form INT__k_p_o_s
1533 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);
1534
1535 // form INT__k_p_q_s
1536 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);
1537
1538 // form INT__l_p_k_s
1539 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);
1540
1541 // form INT__l_p_l_s
1542 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);
1543
1544 // form INT__l_p_m_s
1545 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);
1546
1547 // form INT__l_p_n_s
1548 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);
1549
1550 // form INT__l_p_o_s
1551 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);
1552
1553 // form INT__l_p_q_s
1554 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);
1555
1556 // form INT__h_d_k_s
1557 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);
1558
1559 // form INT__h_d_l_s
1560 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);
1561
1562 // form INT__h_d_m_s
1563 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);
1564
1565 // form INT__h_d_n_s
1566 ostei_general_hrr_J(5, 2, 10, 0, hAB, HRR_INT__i_p_n_s, HRR_INT__h_p_n_s, HRR_INT__h_d_n_s);
1567
1568 // form INT__h_d_o_s
1569 ostei_general_hrr_J(5, 2, 11, 0, hAB, HRR_INT__i_p_o_s, HRR_INT__h_p_o_s, HRR_INT__h_d_o_s);
1570
1571 // form INT__h_d_q_s
1572 ostei_general_hrr_J(5, 2, 12, 0, hAB, HRR_INT__i_p_q_s, HRR_INT__h_p_q_s, HRR_INT__h_d_q_s);
1573
1574 // form INT__i_d_k_s
1575 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);
1576
1577 // form INT__i_d_l_s
1578 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);
1579
1580 // form INT__i_d_m_s
1581 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);
1582
1583 // form INT__i_d_n_s
1584 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);
1585
1586 // form INT__i_d_o_s
1587 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);
1588
1589 // form INT__i_d_q_s
1590 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);
1591
1592 // form INT__k_d_k_s
1593 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);
1594
1595 // form INT__k_d_l_s
1596 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);
1597
1598 // form INT__k_d_m_s
1599 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);
1600
1601 // form INT__k_d_n_s
1602 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);
1603
1604 // form INT__k_d_o_s
1605 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);
1606
1607 // form INT__k_d_q_s
1608 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);
1609
1610 // form INT__h_f_k_s
1611 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);
1612
1613 // form INT__h_f_l_s
1614 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);
1615
1616 // form INT__h_f_m_s
1617 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);
1618
1619 // form INT__h_f_n_s
1620 ostei_general_hrr_J(5, 3, 10, 0, hAB, HRR_INT__i_d_n_s, HRR_INT__h_d_n_s, HRR_INT__h_f_n_s);
1621
1622 // form INT__h_f_o_s
1623 ostei_general_hrr_J(5, 3, 11, 0, hAB, HRR_INT__i_d_o_s, HRR_INT__h_d_o_s, HRR_INT__h_f_o_s);
1624
1625 // form INT__h_f_q_s
1626 ostei_general_hrr_J(5, 3, 12, 0, hAB, HRR_INT__i_d_q_s, HRR_INT__h_d_q_s, HRR_INT__h_f_q_s);
1627
1628 // form INT__i_f_k_s
1629 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);
1630
1631 // form INT__i_f_l_s
1632 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);
1633
1634 // form INT__i_f_m_s
1635 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);
1636
1637 // form INT__i_f_n_s
1638 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);
1639
1640 // form INT__i_f_o_s
1641 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);
1642
1643 // form INT__i_f_q_s
1644 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);
1645
1646 // form INT__h_g_k_s
1647 ostei_general_hrr_J(5, 4, 7, 0, hAB, HRR_INT__i_f_k_s, HRR_INT__h_f_k_s, HRR_INT__h_g_k_s);
1648
1649 // form INT__h_g_l_s
1650 ostei_general_hrr_J(5, 4, 8, 0, hAB, HRR_INT__i_f_l_s, HRR_INT__h_f_l_s, HRR_INT__h_g_l_s);
1651
1652 // form INT__h_g_m_s
1653 ostei_general_hrr_J(5, 4, 9, 0, hAB, HRR_INT__i_f_m_s, HRR_INT__h_f_m_s, HRR_INT__h_g_m_s);
1654
1655 // form INT__h_g_n_s
1656 ostei_general_hrr_J(5, 4, 10, 0, hAB, HRR_INT__i_f_n_s, HRR_INT__h_f_n_s, HRR_INT__h_g_n_s);
1657
1658 // form INT__h_g_o_s
1659 ostei_general_hrr_J(5, 4, 11, 0, hAB, HRR_INT__i_f_o_s, HRR_INT__h_f_o_s, HRR_INT__h_g_o_s);
1660
1661 // form INT__h_g_q_s
1662 ostei_general_hrr_J(5, 4, 12, 0, hAB, HRR_INT__i_f_q_s, HRR_INT__h_f_q_s, HRR_INT__h_g_q_s);
1663
1664 // form INT__h_g_k_p
1665 ostei_general_hrr_L(5, 4, 7, 1, hCD, HRR_INT__h_g_l_s, HRR_INT__h_g_k_s, HRR_INT__h_g_k_p);
1666
1667 // form INT__h_g_l_p
1668 ostei_general_hrr_L(5, 4, 8, 1, hCD, HRR_INT__h_g_m_s, HRR_INT__h_g_l_s, HRR_INT__h_g_l_p);
1669
1670 // form INT__h_g_m_p
1671 ostei_general_hrr_L(5, 4, 9, 1, hCD, HRR_INT__h_g_n_s, HRR_INT__h_g_m_s, HRR_INT__h_g_m_p);
1672
1673 // form INT__h_g_n_p
1674 ostei_general_hrr_L(5, 4, 10, 1, hCD, HRR_INT__h_g_o_s, HRR_INT__h_g_n_s, HRR_INT__h_g_n_p);
1675
1676 // form INT__h_g_o_p
1677 ostei_general_hrr_L(5, 4, 11, 1, hCD, HRR_INT__h_g_q_s, HRR_INT__h_g_o_s, HRR_INT__h_g_o_p);
1678
1679 // form INT__h_g_k_d
1680 ostei_general_hrr_L(5, 4, 7, 2, hCD, HRR_INT__h_g_l_p, HRR_INT__h_g_k_p, HRR_INT__h_g_k_d);
1681
1682 // form INT__h_g_l_d
1683 ostei_general_hrr_L(5, 4, 8, 2, hCD, HRR_INT__h_g_m_p, HRR_INT__h_g_l_p, HRR_INT__h_g_l_d);
1684
1685 // form INT__h_g_m_d
1686 ostei_general_hrr_L(5, 4, 9, 2, hCD, HRR_INT__h_g_n_p, HRR_INT__h_g_m_p, HRR_INT__h_g_m_d);
1687
1688 // form INT__h_g_n_d
1689 ostei_general_hrr_L(5, 4, 10, 2, hCD, HRR_INT__h_g_o_p, HRR_INT__h_g_n_p, HRR_INT__h_g_n_d);
1690
1691 // form INT__h_g_k_f
1692 ostei_general_hrr_L(5, 4, 7, 3, hCD, HRR_INT__h_g_l_d, HRR_INT__h_g_k_d, HRR_INT__h_g_k_f);
1693
1694 // form INT__h_g_l_f
1695 ostei_general_hrr_L(5, 4, 8, 3, hCD, HRR_INT__h_g_m_d, HRR_INT__h_g_l_d, HRR_INT__h_g_l_f);
1696
1697 // form INT__h_g_m_f
1698 ostei_general_hrr_L(5, 4, 9, 3, hCD, HRR_INT__h_g_n_d, HRR_INT__h_g_m_d, HRR_INT__h_g_m_f);
1699
1700 // form INT__h_g_k_g
1701 ostei_general_hrr_L(5, 4, 7, 4, hCD, HRR_INT__h_g_l_f, HRR_INT__h_g_k_f, HRR_INT__h_g_k_g);
1702
1703 // form INT__h_g_l_g
1704 ostei_general_hrr_L(5, 4, 8, 4, hCD, HRR_INT__h_g_m_f, HRR_INT__h_g_l_f, HRR_INT__h_g_l_g);
1705
1706 // form INT__h_g_k_h
1707 ostei_general_hrr_L(5, 4, 7, 5, hCD, HRR_INT__h_g_l_g, HRR_INT__h_g_k_g, HRR_INT__h_g_k_h);
1708
1709
1710 } // close HRR loop
1711
1712
1713 } // close loop cdbatch
1714
1715 istart = iend;
1716 } // close loop over ab
1717
1718 return P.nshell12_clip * Q.nshell12_clip;
1719 }
1720
ostei_g_h_k_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_h_k_h)1721 int ostei_g_h_k_h(struct simint_multi_shellpair const P,
1722 struct simint_multi_shellpair const Q,
1723 double screen_tol,
1724 double * const restrict work,
1725 double * const restrict INT__g_h_k_h)
1726 {
1727 double P_AB[3*P.nshell12];
1728 struct simint_multi_shellpair P_tmp = P;
1729 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1730 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1731 P_tmp.AB_x = P_AB;
1732 P_tmp.AB_y = P_AB + P.nshell12;
1733 P_tmp.AB_z = P_AB + 2*P.nshell12;
1734
1735 for(int i = 0; i < P.nshell12; i++)
1736 {
1737 P_tmp.AB_x[i] = -P.AB_x[i];
1738 P_tmp.AB_y[i] = -P.AB_y[i];
1739 P_tmp.AB_z[i] = -P.AB_z[i];
1740 }
1741
1742 int ret = ostei_h_g_k_h(P_tmp, Q, screen_tol, work, INT__g_h_k_h);
1743 double buffer[238140] SIMINT_ALIGN_ARRAY_DBL;
1744
1745 for(int q = 0; q < ret; q++)
1746 {
1747 int idx = 0;
1748 for(int a = 0; a < 15; ++a)
1749 for(int b = 0; b < 21; ++b)
1750 for(int c = 0; c < 36; ++c)
1751 for(int d = 0; d < 21; ++d)
1752 buffer[idx++] = INT__g_h_k_h[q*238140+b*11340+a*756+c*21+d];
1753
1754 memcpy(INT__g_h_k_h+q*238140, buffer, 238140*sizeof(double));
1755 }
1756
1757 return ret;
1758 }
1759
ostei_h_g_h_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__h_g_h_k)1760 int ostei_h_g_h_k(struct simint_multi_shellpair const P,
1761 struct simint_multi_shellpair const Q,
1762 double screen_tol,
1763 double * const restrict work,
1764 double * const restrict INT__h_g_h_k)
1765 {
1766 double Q_AB[3*Q.nshell12];
1767 struct simint_multi_shellpair Q_tmp = Q;
1768 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1769 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1770 Q_tmp.AB_x = Q_AB;
1771 Q_tmp.AB_y = Q_AB + Q.nshell12;
1772 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1773
1774 for(int i = 0; i < Q.nshell12; i++)
1775 {
1776 Q_tmp.AB_x[i] = -Q.AB_x[i];
1777 Q_tmp.AB_y[i] = -Q.AB_y[i];
1778 Q_tmp.AB_z[i] = -Q.AB_z[i];
1779 }
1780
1781 int ret = ostei_h_g_k_h(P, Q_tmp, screen_tol, work, INT__h_g_h_k);
1782 double buffer[238140] SIMINT_ALIGN_ARRAY_DBL;
1783
1784 for(int q = 0; q < ret; q++)
1785 {
1786 int idx = 0;
1787 for(int a = 0; a < 21; ++a)
1788 for(int b = 0; b < 15; ++b)
1789 for(int c = 0; c < 21; ++c)
1790 for(int d = 0; d < 36; ++d)
1791 buffer[idx++] = INT__h_g_h_k[q*238140+a*11340+b*756+d*21+c];
1792
1793 memcpy(INT__h_g_h_k+q*238140, buffer, 238140*sizeof(double));
1794 }
1795
1796 return ret;
1797 }
1798
ostei_g_h_h_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_h_h_k)1799 int ostei_g_h_h_k(struct simint_multi_shellpair const P,
1800 struct simint_multi_shellpair const Q,
1801 double screen_tol,
1802 double * const restrict work,
1803 double * const restrict INT__g_h_h_k)
1804 {
1805 double P_AB[3*P.nshell12];
1806 struct simint_multi_shellpair P_tmp = P;
1807 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1808 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1809 P_tmp.AB_x = P_AB;
1810 P_tmp.AB_y = P_AB + P.nshell12;
1811 P_tmp.AB_z = P_AB + 2*P.nshell12;
1812
1813 for(int i = 0; i < P.nshell12; i++)
1814 {
1815 P_tmp.AB_x[i] = -P.AB_x[i];
1816 P_tmp.AB_y[i] = -P.AB_y[i];
1817 P_tmp.AB_z[i] = -P.AB_z[i];
1818 }
1819
1820 double Q_AB[3*Q.nshell12];
1821 struct simint_multi_shellpair Q_tmp = Q;
1822 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1823 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1824 Q_tmp.AB_x = Q_AB;
1825 Q_tmp.AB_y = Q_AB + Q.nshell12;
1826 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1827
1828 for(int i = 0; i < Q.nshell12; i++)
1829 {
1830 Q_tmp.AB_x[i] = -Q.AB_x[i];
1831 Q_tmp.AB_y[i] = -Q.AB_y[i];
1832 Q_tmp.AB_z[i] = -Q.AB_z[i];
1833 }
1834
1835 int ret = ostei_h_g_k_h(P_tmp, Q_tmp, screen_tol, work, INT__g_h_h_k);
1836 double buffer[238140] SIMINT_ALIGN_ARRAY_DBL;
1837
1838 for(int q = 0; q < ret; q++)
1839 {
1840 int idx = 0;
1841 for(int a = 0; a < 15; ++a)
1842 for(int b = 0; b < 21; ++b)
1843 for(int c = 0; c < 21; ++c)
1844 for(int d = 0; d < 36; ++d)
1845 buffer[idx++] = INT__g_h_h_k[q*238140+b*11340+a*756+d*21+c];
1846
1847 memcpy(INT__g_h_h_k+q*238140, buffer, 238140*sizeof(double));
1848 }
1849
1850 return ret;
1851 }
1852
1853