1 #include "simint/boys/boys.h"
2 #include "simint/ostei/gen/ostei_generated.h"
3 #include "simint/vectorization/vectorization.h"
4 #include <math.h>
5 #include <string.h>
6
7
ostei_k_k_g_f(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__k_k_g_f)8 int ostei_k_k_g_f(struct simint_multi_shellpair const P,
9 struct simint_multi_shellpair const Q,
10 double screen_tol,
11 double * const restrict work,
12 double * const restrict INT__k_k_g_f)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__k_k_g_f);
17 int ab, cd, abcd;
18 int istart, jstart;
19 int iprimcd, nprim_icd, icd;
20 const int check_screen = (screen_tol > 0.0);
21 int i, j;
22 int n;
23 int not_screened;
24 int real_abcd;
25 int iket;
26 int ibra;
27
28 // partition workspace
29 double * const INT__k_s_g_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__k_s_h_s = work + (SIMINT_NSHELL_SIMD * 540);
31 double * const INT__k_s_i_s = work + (SIMINT_NSHELL_SIMD * 1296);
32 double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 2304);
33 double * const INT__l_s_g_s = work + (SIMINT_NSHELL_SIMD * 3600);
34 double * const INT__l_s_h_s = work + (SIMINT_NSHELL_SIMD * 4275);
35 double * const INT__l_s_i_s = work + (SIMINT_NSHELL_SIMD * 5220);
36 double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 6480);
37 double * const INT__m_s_g_s = work + (SIMINT_NSHELL_SIMD * 8100);
38 double * const INT__m_s_h_s = work + (SIMINT_NSHELL_SIMD * 8925);
39 double * const INT__m_s_i_s = work + (SIMINT_NSHELL_SIMD * 10080);
40 double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 11620);
41 double * const INT__n_s_g_s = work + (SIMINT_NSHELL_SIMD * 13600);
42 double * const INT__n_s_h_s = work + (SIMINT_NSHELL_SIMD * 14590);
43 double * const INT__n_s_i_s = work + (SIMINT_NSHELL_SIMD * 15976);
44 double * const INT__n_s_k_s = work + (SIMINT_NSHELL_SIMD * 17824);
45 double * const INT__o_s_g_s = work + (SIMINT_NSHELL_SIMD * 20200);
46 double * const INT__o_s_h_s = work + (SIMINT_NSHELL_SIMD * 21370);
47 double * const INT__o_s_i_s = work + (SIMINT_NSHELL_SIMD * 23008);
48 double * const INT__o_s_k_s = work + (SIMINT_NSHELL_SIMD * 25192);
49 double * const INT__q_s_g_s = work + (SIMINT_NSHELL_SIMD * 28000);
50 double * const INT__q_s_h_s = work + (SIMINT_NSHELL_SIMD * 29365);
51 double * const INT__q_s_i_s = work + (SIMINT_NSHELL_SIMD * 31276);
52 double * const INT__q_s_k_s = work + (SIMINT_NSHELL_SIMD * 33824);
53 double * const INT__r_s_g_s = work + (SIMINT_NSHELL_SIMD * 37100);
54 double * const INT__r_s_h_s = work + (SIMINT_NSHELL_SIMD * 38675);
55 double * const INT__r_s_i_s = work + (SIMINT_NSHELL_SIMD * 40880);
56 double * const INT__r_s_k_s = work + (SIMINT_NSHELL_SIMD * 43820);
57 double * const INT__t_s_g_s = work + (SIMINT_NSHELL_SIMD * 47600);
58 double * const INT__t_s_h_s = work + (SIMINT_NSHELL_SIMD * 49400);
59 double * const INT__t_s_i_s = work + (SIMINT_NSHELL_SIMD * 51920);
60 double * const INT__t_s_k_s = work + (SIMINT_NSHELL_SIMD * 55280);
61 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*59600);
62 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 22;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 85;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 148;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 268;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 394;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 610;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 800;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 1010;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 1370;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 1870;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 2140;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 2455;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 2995;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 3745;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 4645;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 5002;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 5443;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 6199;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 7249;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 8509;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 9832;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 10280;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 10868;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 11876;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 13276;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 14956;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 16720;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 18288;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 18828;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 19584;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 20880;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 22680;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 24840;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 27108;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 29124;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 30420;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 31050;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 31995;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 33615;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 35865;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 38565;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 41400;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 43920;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 45540;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 46255;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 47410;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 49390;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 52140;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 55440;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 58905;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 61985;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_s_s = primwork + 63965;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_p_s = primwork + 64757;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_d_s = primwork + 66143;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_f_s = primwork + 68519;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_g_s = primwork + 71819;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_h_s = primwork + 75779;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_i_s = primwork + 79937;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_k_s = primwork + 83633;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_s_s = primwork + 86009;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_p_s = primwork + 86867;
124 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_d_s = primwork + 88505;
125 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_f_s = primwork + 91313;
126 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_g_s = primwork + 95213;
127 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_h_s = primwork + 99893;
128 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_i_s = primwork + 104807;
129 SIMINT_DBLTYPE * const restrict PRIM_INT__o_s_k_s = primwork + 109175;
130 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_s_s = primwork + 111983;
131 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_p_s = primwork + 112893;
132 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_d_s = primwork + 114804;
133 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_f_s = primwork + 118080;
134 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_g_s = primwork + 122630;
135 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_h_s = primwork + 128090;
136 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_i_s = primwork + 133823;
137 SIMINT_DBLTYPE * const restrict PRIM_INT__q_s_k_s = primwork + 138919;
138 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_s_s = primwork + 142195;
139 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_p_s = primwork + 143140;
140 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_d_s = primwork + 145345;
141 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_f_s = primwork + 149125;
142 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_g_s = primwork + 154375;
143 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_h_s = primwork + 160675;
144 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_i_s = primwork + 167290;
145 SIMINT_DBLTYPE * const restrict PRIM_INT__r_s_k_s = primwork + 173170;
146 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_s_s = primwork + 176950;
147 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_p_s = primwork + 177910;
148 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_d_s = primwork + 180430;
149 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_f_s = primwork + 184750;
150 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_g_s = primwork + 190750;
151 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_h_s = primwork + 197950;
152 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_i_s = primwork + 205510;
153 SIMINT_DBLTYPE * const restrict PRIM_INT__t_s_k_s = primwork + 212230;
154 double * const hrrwork = (double *)(primwork + 216550);
155 double * const HRR_INT__k_p_g_s = hrrwork + 0;
156 double * const HRR_INT__k_p_h_s = hrrwork + 1620;
157 double * const HRR_INT__k_p_i_s = hrrwork + 3888;
158 double * const HRR_INT__k_p_k_s = hrrwork + 6912;
159 double * const HRR_INT__k_d_g_s = hrrwork + 10800;
160 double * const HRR_INT__k_d_h_s = hrrwork + 14040;
161 double * const HRR_INT__k_d_i_s = hrrwork + 18576;
162 double * const HRR_INT__k_d_k_s = hrrwork + 24624;
163 double * const HRR_INT__k_f_g_s = hrrwork + 32400;
164 double * const HRR_INT__k_f_h_s = hrrwork + 37800;
165 double * const HRR_INT__k_f_i_s = hrrwork + 45360;
166 double * const HRR_INT__k_f_k_s = hrrwork + 55440;
167 double * const HRR_INT__k_g_g_s = hrrwork + 68400;
168 double * const HRR_INT__k_g_h_s = hrrwork + 76500;
169 double * const HRR_INT__k_g_i_s = hrrwork + 87840;
170 double * const HRR_INT__k_g_k_s = hrrwork + 102960;
171 double * const HRR_INT__k_h_g_s = hrrwork + 122400;
172 double * const HRR_INT__k_h_h_s = hrrwork + 133740;
173 double * const HRR_INT__k_h_i_s = hrrwork + 149616;
174 double * const HRR_INT__k_h_k_s = hrrwork + 170784;
175 double * const HRR_INT__k_i_g_s = hrrwork + 198000;
176 double * const HRR_INT__k_i_h_s = hrrwork + 213120;
177 double * const HRR_INT__k_i_i_s = hrrwork + 234288;
178 double * const HRR_INT__k_i_k_s = hrrwork + 262512;
179 double * const HRR_INT__k_k_g_s = hrrwork + 298800;
180 double * const HRR_INT__k_k_g_p = hrrwork + 318240;
181 double * const HRR_INT__k_k_g_d = hrrwork + 376560;
182 double * const HRR_INT__k_k_h_s = hrrwork + 493200;
183 double * const HRR_INT__k_k_h_p = hrrwork + 520416;
184 double * const HRR_INT__k_k_h_d = hrrwork + 602064;
185 double * const HRR_INT__k_k_i_s = hrrwork + 765360;
186 double * const HRR_INT__k_k_i_p = hrrwork + 801648;
187 double * const HRR_INT__k_k_k_s = hrrwork + 910512;
188 double * const HRR_INT__l_p_g_s = hrrwork + 957168;
189 double * const HRR_INT__l_p_h_s = hrrwork + 959193;
190 double * const HRR_INT__l_p_i_s = hrrwork + 962028;
191 double * const HRR_INT__l_p_k_s = hrrwork + 965808;
192 double * const HRR_INT__l_d_g_s = hrrwork + 970668;
193 double * const HRR_INT__l_d_h_s = hrrwork + 974718;
194 double * const HRR_INT__l_d_i_s = hrrwork + 980388;
195 double * const HRR_INT__l_d_k_s = hrrwork + 987948;
196 double * const HRR_INT__l_f_g_s = hrrwork + 997668;
197 double * const HRR_INT__l_f_h_s = hrrwork + 1004418;
198 double * const HRR_INT__l_f_i_s = hrrwork + 1013868;
199 double * const HRR_INT__l_f_k_s = hrrwork + 1026468;
200 double * const HRR_INT__l_g_g_s = hrrwork + 1042668;
201 double * const HRR_INT__l_g_h_s = hrrwork + 1052793;
202 double * const HRR_INT__l_g_i_s = hrrwork + 1066968;
203 double * const HRR_INT__l_g_k_s = hrrwork + 1085868;
204 double * const HRR_INT__l_h_g_s = hrrwork + 1110168;
205 double * const HRR_INT__l_h_h_s = hrrwork + 1124343;
206 double * const HRR_INT__l_h_i_s = hrrwork + 1144188;
207 double * const HRR_INT__l_h_k_s = hrrwork + 1170648;
208 double * const HRR_INT__l_i_g_s = hrrwork + 1204668;
209 double * const HRR_INT__l_i_h_s = hrrwork + 1223568;
210 double * const HRR_INT__l_i_i_s = hrrwork + 1250028;
211 double * const HRR_INT__l_i_k_s = hrrwork + 1285308;
212 double * const HRR_INT__m_p_g_s = hrrwork + 1330668;
213 double * const HRR_INT__m_p_h_s = hrrwork + 1333143;
214 double * const HRR_INT__m_p_i_s = hrrwork + 1336608;
215 double * const HRR_INT__m_p_k_s = hrrwork + 1341228;
216 double * const HRR_INT__m_d_g_s = hrrwork + 1347168;
217 double * const HRR_INT__m_d_h_s = hrrwork + 1352118;
218 double * const HRR_INT__m_d_i_s = hrrwork + 1359048;
219 double * const HRR_INT__m_d_k_s = hrrwork + 1368288;
220 double * const HRR_INT__m_f_g_s = hrrwork + 1380168;
221 double * const HRR_INT__m_f_h_s = hrrwork + 1388418;
222 double * const HRR_INT__m_f_i_s = hrrwork + 1399968;
223 double * const HRR_INT__m_f_k_s = hrrwork + 1415368;
224 double * const HRR_INT__m_g_g_s = hrrwork + 1435168;
225 double * const HRR_INT__m_g_h_s = hrrwork + 1447543;
226 double * const HRR_INT__m_g_i_s = hrrwork + 1464868;
227 double * const HRR_INT__m_g_k_s = hrrwork + 1487968;
228 double * const HRR_INT__m_h_g_s = hrrwork + 1517668;
229 double * const HRR_INT__m_h_h_s = hrrwork + 1534993;
230 double * const HRR_INT__m_h_i_s = hrrwork + 1559248;
231 double * const HRR_INT__m_h_k_s = hrrwork + 1591588;
232 double * const HRR_INT__n_p_g_s = hrrwork + 1633168;
233 double * const HRR_INT__n_p_h_s = hrrwork + 1636138;
234 double * const HRR_INT__n_p_i_s = hrrwork + 1640296;
235 double * const HRR_INT__n_p_k_s = hrrwork + 1645840;
236 double * const HRR_INT__n_d_g_s = hrrwork + 1652968;
237 double * const HRR_INT__n_d_h_s = hrrwork + 1658908;
238 double * const HRR_INT__n_d_i_s = hrrwork + 1667224;
239 double * const HRR_INT__n_d_k_s = hrrwork + 1678312;
240 double * const HRR_INT__n_f_g_s = hrrwork + 1692568;
241 double * const HRR_INT__n_f_h_s = hrrwork + 1702468;
242 double * const HRR_INT__n_f_i_s = hrrwork + 1716328;
243 double * const HRR_INT__n_f_k_s = hrrwork + 1734808;
244 double * const HRR_INT__n_g_g_s = hrrwork + 1758568;
245 double * const HRR_INT__n_g_h_s = hrrwork + 1773418;
246 double * const HRR_INT__n_g_i_s = hrrwork + 1794208;
247 double * const HRR_INT__n_g_k_s = hrrwork + 1821928;
248 double * const HRR_INT__o_p_g_s = hrrwork + 1857568;
249 double * const HRR_INT__o_p_h_s = hrrwork + 1861078;
250 double * const HRR_INT__o_p_i_s = hrrwork + 1865992;
251 double * const HRR_INT__o_p_k_s = hrrwork + 1872544;
252 double * const HRR_INT__o_d_g_s = hrrwork + 1880968;
253 double * const HRR_INT__o_d_h_s = hrrwork + 1887988;
254 double * const HRR_INT__o_d_i_s = hrrwork + 1897816;
255 double * const HRR_INT__o_d_k_s = hrrwork + 1910920;
256 double * const HRR_INT__o_f_g_s = hrrwork + 1927768;
257 double * const HRR_INT__o_f_h_s = hrrwork + 1939468;
258 double * const HRR_INT__o_f_i_s = hrrwork + 1955848;
259 double * const HRR_INT__o_f_k_s = hrrwork + 1977688;
260 double * const HRR_INT__q_p_g_s = hrrwork + 2005768;
261 double * const HRR_INT__q_p_h_s = hrrwork + 2009863;
262 double * const HRR_INT__q_p_i_s = hrrwork + 2015596;
263 double * const HRR_INT__q_p_k_s = hrrwork + 2023240;
264 double * const HRR_INT__q_d_g_s = hrrwork + 2033068;
265 double * const HRR_INT__q_d_h_s = hrrwork + 2041258;
266 double * const HRR_INT__q_d_i_s = hrrwork + 2052724;
267 double * const HRR_INT__q_d_k_s = hrrwork + 2068012;
268 double * const HRR_INT__r_p_g_s = hrrwork + 2087668;
269 double * const HRR_INT__r_p_h_s = hrrwork + 2092393;
270 double * const HRR_INT__r_p_i_s = hrrwork + 2099008;
271 double * const HRR_INT__r_p_k_s = hrrwork + 2107828;
272
273
274 // Create constants
275 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
276 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
277 const SIMINT_DBLTYPE const_11 = SIMINT_DBLSET1(11);
278 const SIMINT_DBLTYPE const_12 = SIMINT_DBLSET1(12);
279 const SIMINT_DBLTYPE const_13 = SIMINT_DBLSET1(13);
280 const SIMINT_DBLTYPE const_14 = SIMINT_DBLSET1(14);
281 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
282 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
283 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
284 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
285 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
286 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
287 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
288 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
289 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
290
291
292 ////////////////////////////////////////
293 // Loop over shells and primitives
294 ////////////////////////////////////////
295
296 real_abcd = 0;
297 istart = 0;
298 for(ab = 0; ab < P.nshell12_clip; ++ab)
299 {
300 const int iend = istart + P.nprim12[ab];
301
302 cd = 0;
303 jstart = 0;
304
305 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
306 {
307 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
308 int jend = jstart;
309 for(i = 0; i < nshellbatch; i++)
310 jend += Q.nprim12[cd+i];
311
312 // Clear the beginning of the workspace (where we are accumulating integrals)
313 memset(work, 0, SIMINT_NSHELL_SIMD * 59600 * sizeof(double));
314 abcd = 0;
315
316
317 for(i = istart; i < iend; ++i)
318 {
319 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
320
321 if(check_screen)
322 {
323 // Skip this whole thing if always insignificant
324 if((P.screen[i] * Q.screen_max) < screen_tol)
325 continue;
326 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
327 }
328
329 icd = 0;
330 iprimcd = 0;
331 nprim_icd = Q.nprim12[cd];
332 double * restrict PRIM_PTR_INT__k_s_g_s = INT__k_s_g_s + abcd * 540;
333 double * restrict PRIM_PTR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
334 double * restrict PRIM_PTR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
335 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
336 double * restrict PRIM_PTR_INT__l_s_g_s = INT__l_s_g_s + abcd * 675;
337 double * restrict PRIM_PTR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
338 double * restrict PRIM_PTR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
339 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
340 double * restrict PRIM_PTR_INT__m_s_g_s = INT__m_s_g_s + abcd * 825;
341 double * restrict PRIM_PTR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
342 double * restrict PRIM_PTR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
343 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
344 double * restrict PRIM_PTR_INT__n_s_g_s = INT__n_s_g_s + abcd * 990;
345 double * restrict PRIM_PTR_INT__n_s_h_s = INT__n_s_h_s + abcd * 1386;
346 double * restrict PRIM_PTR_INT__n_s_i_s = INT__n_s_i_s + abcd * 1848;
347 double * restrict PRIM_PTR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
348 double * restrict PRIM_PTR_INT__o_s_g_s = INT__o_s_g_s + abcd * 1170;
349 double * restrict PRIM_PTR_INT__o_s_h_s = INT__o_s_h_s + abcd * 1638;
350 double * restrict PRIM_PTR_INT__o_s_i_s = INT__o_s_i_s + abcd * 2184;
351 double * restrict PRIM_PTR_INT__o_s_k_s = INT__o_s_k_s + abcd * 2808;
352 double * restrict PRIM_PTR_INT__q_s_g_s = INT__q_s_g_s + abcd * 1365;
353 double * restrict PRIM_PTR_INT__q_s_h_s = INT__q_s_h_s + abcd * 1911;
354 double * restrict PRIM_PTR_INT__q_s_i_s = INT__q_s_i_s + abcd * 2548;
355 double * restrict PRIM_PTR_INT__q_s_k_s = INT__q_s_k_s + abcd * 3276;
356 double * restrict PRIM_PTR_INT__r_s_g_s = INT__r_s_g_s + abcd * 1575;
357 double * restrict PRIM_PTR_INT__r_s_h_s = INT__r_s_h_s + abcd * 2205;
358 double * restrict PRIM_PTR_INT__r_s_i_s = INT__r_s_i_s + abcd * 2940;
359 double * restrict PRIM_PTR_INT__r_s_k_s = INT__r_s_k_s + abcd * 3780;
360 double * restrict PRIM_PTR_INT__t_s_g_s = INT__t_s_g_s + abcd * 1800;
361 double * restrict PRIM_PTR_INT__t_s_h_s = INT__t_s_h_s + abcd * 2520;
362 double * restrict PRIM_PTR_INT__t_s_i_s = INT__t_s_i_s + abcd * 3360;
363 double * restrict PRIM_PTR_INT__t_s_k_s = INT__t_s_k_s + abcd * 4320;
364
365
366
367 // Load these one per loop over i
368 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
369 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
370 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
371
372 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
373
374 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
375 {
376 // calculate the shell offsets
377 // these are the offset from the shell pointed to by cd
378 // for each element
379 int shelloffsets[SIMINT_SIMD_LEN] = {0};
380 int lastoffset = 0;
381 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
382
383 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
384 {
385 // Handle if the first element of the vector is a new shell
386 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
387 {
388 nprim_icd += Q.nprim12[cd + (++icd)];
389 PRIM_PTR_INT__k_s_g_s += 540;
390 PRIM_PTR_INT__k_s_h_s += 756;
391 PRIM_PTR_INT__k_s_i_s += 1008;
392 PRIM_PTR_INT__k_s_k_s += 1296;
393 PRIM_PTR_INT__l_s_g_s += 675;
394 PRIM_PTR_INT__l_s_h_s += 945;
395 PRIM_PTR_INT__l_s_i_s += 1260;
396 PRIM_PTR_INT__l_s_k_s += 1620;
397 PRIM_PTR_INT__m_s_g_s += 825;
398 PRIM_PTR_INT__m_s_h_s += 1155;
399 PRIM_PTR_INT__m_s_i_s += 1540;
400 PRIM_PTR_INT__m_s_k_s += 1980;
401 PRIM_PTR_INT__n_s_g_s += 990;
402 PRIM_PTR_INT__n_s_h_s += 1386;
403 PRIM_PTR_INT__n_s_i_s += 1848;
404 PRIM_PTR_INT__n_s_k_s += 2376;
405 PRIM_PTR_INT__o_s_g_s += 1170;
406 PRIM_PTR_INT__o_s_h_s += 1638;
407 PRIM_PTR_INT__o_s_i_s += 2184;
408 PRIM_PTR_INT__o_s_k_s += 2808;
409 PRIM_PTR_INT__q_s_g_s += 1365;
410 PRIM_PTR_INT__q_s_h_s += 1911;
411 PRIM_PTR_INT__q_s_i_s += 2548;
412 PRIM_PTR_INT__q_s_k_s += 3276;
413 PRIM_PTR_INT__r_s_g_s += 1575;
414 PRIM_PTR_INT__r_s_h_s += 2205;
415 PRIM_PTR_INT__r_s_i_s += 2940;
416 PRIM_PTR_INT__r_s_k_s += 3780;
417 PRIM_PTR_INT__t_s_g_s += 1800;
418 PRIM_PTR_INT__t_s_h_s += 2520;
419 PRIM_PTR_INT__t_s_i_s += 3360;
420 PRIM_PTR_INT__t_s_k_s += 4320;
421 }
422 iprimcd++;
423 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
424 {
425 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
426 {
427 shelloffsets[n] = shelloffsets[n-1] + 1;
428 lastoffset++;
429 nprim_icd += Q.nprim12[cd + (++icd)];
430 }
431 else
432 shelloffsets[n] = shelloffsets[n-1];
433 iprimcd++;
434 }
435 }
436 else
437 iprimcd += SIMINT_SIMD_LEN;
438
439 // Do we have to compute this vector (or has it been screened out)?
440 // (not_screened != 0 means we have to do this vector)
441 if(check_screen)
442 {
443 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
444 if(vmax < screen_tol)
445 {
446 PRIM_PTR_INT__k_s_g_s += lastoffset*540;
447 PRIM_PTR_INT__k_s_h_s += lastoffset*756;
448 PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
449 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
450 PRIM_PTR_INT__l_s_g_s += lastoffset*675;
451 PRIM_PTR_INT__l_s_h_s += lastoffset*945;
452 PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
453 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
454 PRIM_PTR_INT__m_s_g_s += lastoffset*825;
455 PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
456 PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
457 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
458 PRIM_PTR_INT__n_s_g_s += lastoffset*990;
459 PRIM_PTR_INT__n_s_h_s += lastoffset*1386;
460 PRIM_PTR_INT__n_s_i_s += lastoffset*1848;
461 PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
462 PRIM_PTR_INT__o_s_g_s += lastoffset*1170;
463 PRIM_PTR_INT__o_s_h_s += lastoffset*1638;
464 PRIM_PTR_INT__o_s_i_s += lastoffset*2184;
465 PRIM_PTR_INT__o_s_k_s += lastoffset*2808;
466 PRIM_PTR_INT__q_s_g_s += lastoffset*1365;
467 PRIM_PTR_INT__q_s_h_s += lastoffset*1911;
468 PRIM_PTR_INT__q_s_i_s += lastoffset*2548;
469 PRIM_PTR_INT__q_s_k_s += lastoffset*3276;
470 PRIM_PTR_INT__r_s_g_s += lastoffset*1575;
471 PRIM_PTR_INT__r_s_h_s += lastoffset*2205;
472 PRIM_PTR_INT__r_s_i_s += lastoffset*2940;
473 PRIM_PTR_INT__r_s_k_s += lastoffset*3780;
474 PRIM_PTR_INT__t_s_g_s += lastoffset*1800;
475 PRIM_PTR_INT__t_s_h_s += lastoffset*2520;
476 PRIM_PTR_INT__t_s_i_s += lastoffset*3360;
477 PRIM_PTR_INT__t_s_k_s += lastoffset*4320;
478 continue;
479 }
480 }
481
482 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
483 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
484 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
485 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
486
487
488 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
489 SIMINT_DBLTYPE PQ[3];
490 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
491 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
492 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
493 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
494 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
495 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
496
497 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
498 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
499 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
500 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
501 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
502 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
503 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
504
505 // NOTE: Minus sign!
506 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
507 SIMINT_DBLTYPE aop_PQ[3];
508 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
509 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
510 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
511
512 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
513 SIMINT_DBLTYPE aoq_PQ[3];
514 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
515 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
516 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
517 // Put a minus sign here so we don't have to in RR routines
518 a_over_q = SIMINT_NEG(a_over_q);
519
520
521 //////////////////////////////////////////////
522 // Fjt function section
523 // Maximum v value: 21
524 //////////////////////////////////////////////
525 // The parameter to the Fjt function
526 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
527
528
529 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
530
531
532 boys_F_split(PRIM_INT__s_s_s_s, F_x, 21);
533 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
534 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
535 for(n = 0; n <= 21; n++)
536 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
537
538 //////////////////////////////////////////////
539 // Primitive integrals: Vertical recurrance
540 //////////////////////////////////////////////
541
542 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
543 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
544 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
545 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
546 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
547 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
548 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
549 const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
550 const SIMINT_DBLTYPE vrr_const_9_over_2p = SIMINT_MUL(const_9, one_over_2p);
551 const SIMINT_DBLTYPE vrr_const_10_over_2p = SIMINT_MUL(const_10, one_over_2p);
552 const SIMINT_DBLTYPE vrr_const_11_over_2p = SIMINT_MUL(const_11, one_over_2p);
553 const SIMINT_DBLTYPE vrr_const_12_over_2p = SIMINT_MUL(const_12, one_over_2p);
554 const SIMINT_DBLTYPE vrr_const_13_over_2p = SIMINT_MUL(const_13, one_over_2p);
555 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
556 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
557 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
558 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
559 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
560 const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
561 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
562 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
563 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
564 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
565 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
566 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
567 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
568 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
569 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
570 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
571 const SIMINT_DBLTYPE vrr_const_11_over_2pq = SIMINT_MUL(const_11, one_over_2pq);
572 const SIMINT_DBLTYPE vrr_const_12_over_2pq = SIMINT_MUL(const_12, one_over_2pq);
573 const SIMINT_DBLTYPE vrr_const_13_over_2pq = SIMINT_MUL(const_13, one_over_2pq);
574 const SIMINT_DBLTYPE vrr_const_14_over_2pq = SIMINT_MUL(const_14, one_over_2pq);
575
576
577
578 // Forming PRIM_INT__p_s_s_s[21 * 3];
579 for(n = 0; n < 21; ++n) // loop over orders of auxiliary function
580 {
581
582 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
583 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]);
584
585 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
586 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]);
587
588 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
589 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]);
590
591 }
592
593
594
595 // Forming PRIM_INT__d_s_s_s[20 * 6];
596 for(n = 0; n < 20; ++n) // loop over orders of auxiliary function
597 {
598
599 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
600 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]);
601 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]);
602
603 PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
604 PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 1]);
605
606 PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
607 PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_s_s[n * 6 + 2]);
608
609 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
610 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]);
611 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]);
612
613 PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
614 PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_s_s[n * 6 + 4]);
615
616 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
617 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]);
618 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]);
619
620 }
621
622
623
624 // Forming PRIM_INT__f_s_s_s[19 * 10];
625 for(n = 0; n < 19; ++n) // loop over orders of auxiliary function
626 {
627
628 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
629 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 0]);
630 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__f_s_s_s[n * 10 + 0]);
631
632 PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
633 PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 1]);
634
635 PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
636 PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__f_s_s_s[n * 10 + 2]);
637
638 PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
639 PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 3]);
640
641 PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
642 PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__f_s_s_s[n * 10 + 4]);
643
644 PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
645 PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_FMADD( aop_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 5]);
646
647 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
648 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 6]);
649 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__f_s_s_s[n * 10 + 6]);
650
651 PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
652 PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__f_s_s_s[n * 10 + 7]);
653
654 PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
655 PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_FMADD( aop_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 8]);
656
657 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
658 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( aop_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__f_s_s_s[n * 10 + 9]);
659 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_FMADD( vrr_const_2_over_2p, SIMINT_FMADD(a_over_p, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__f_s_s_s[n * 10 + 9]);
660
661 }
662
663
664 VRR_I_g_s_s_s(
665 PRIM_INT__g_s_s_s,
666 PRIM_INT__f_s_s_s,
667 PRIM_INT__d_s_s_s,
668 P_PA,
669 a_over_p,
670 aop_PQ,
671 one_over_2p,
672 18);
673
674
675 VRR_I_h_s_s_s(
676 PRIM_INT__h_s_s_s,
677 PRIM_INT__g_s_s_s,
678 PRIM_INT__f_s_s_s,
679 P_PA,
680 a_over_p,
681 aop_PQ,
682 one_over_2p,
683 17);
684
685
686 ostei_general_vrr1_I(6, 16,
687 one_over_2p, a_over_p, aop_PQ, P_PA,
688 PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
689
690
691 ostei_general_vrr1_I(7, 15,
692 one_over_2p, a_over_p, aop_PQ, P_PA,
693 PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
694
695
696 ostei_general_vrr_K(7, 0, 1, 0, 7,
697 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
698 PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
699
700
701 ostei_general_vrr_K(6, 0, 1, 0, 7,
702 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
703 PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
704
705
706 ostei_general_vrr_K(7, 0, 2, 0, 6,
707 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
708 PRIM_INT__k_s_p_s, PRIM_INT__k_s_s_s, NULL, PRIM_INT__i_s_p_s, NULL, PRIM_INT__k_s_d_s);
709
710
711 ostei_general_vrr_K(5, 0, 1, 0, 7,
712 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
713 PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
714
715
716 ostei_general_vrr_K(6, 0, 2, 0, 6,
717 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
718 PRIM_INT__i_s_p_s, PRIM_INT__i_s_s_s, NULL, PRIM_INT__h_s_p_s, NULL, PRIM_INT__i_s_d_s);
719
720
721 ostei_general_vrr_K(7, 0, 3, 0, 5,
722 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
723 PRIM_INT__k_s_d_s, PRIM_INT__k_s_p_s, NULL, PRIM_INT__i_s_d_s, NULL, PRIM_INT__k_s_f_s);
724
725
726 VRR_K_g_s_p_s(
727 PRIM_INT__g_s_p_s,
728 PRIM_INT__g_s_s_s,
729 PRIM_INT__f_s_s_s,
730 Q_PA,
731 aoq_PQ,
732 one_over_2pq,
733 7);
734
735
736 ostei_general_vrr_K(5, 0, 2, 0, 6,
737 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
738 PRIM_INT__h_s_p_s, PRIM_INT__h_s_s_s, NULL, PRIM_INT__g_s_p_s, NULL, PRIM_INT__h_s_d_s);
739
740
741 ostei_general_vrr_K(6, 0, 3, 0, 5,
742 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
743 PRIM_INT__i_s_d_s, PRIM_INT__i_s_p_s, NULL, PRIM_INT__h_s_d_s, NULL, PRIM_INT__i_s_f_s);
744
745
746 ostei_general_vrr_K(7, 0, 4, 0, 4,
747 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
748 PRIM_INT__k_s_f_s, PRIM_INT__k_s_d_s, NULL, PRIM_INT__i_s_f_s, NULL, PRIM_INT__k_s_g_s);
749
750
751 VRR_K_f_s_p_s(
752 PRIM_INT__f_s_p_s,
753 PRIM_INT__f_s_s_s,
754 PRIM_INT__d_s_s_s,
755 Q_PA,
756 aoq_PQ,
757 one_over_2pq,
758 7);
759
760
761 ostei_general_vrr_K(4, 0, 2, 0, 6,
762 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
763 PRIM_INT__g_s_p_s, PRIM_INT__g_s_s_s, NULL, PRIM_INT__f_s_p_s, NULL, PRIM_INT__g_s_d_s);
764
765
766 ostei_general_vrr_K(5, 0, 3, 0, 5,
767 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
768 PRIM_INT__h_s_d_s, PRIM_INT__h_s_p_s, NULL, PRIM_INT__g_s_d_s, NULL, PRIM_INT__h_s_f_s);
769
770
771 ostei_general_vrr_K(6, 0, 4, 0, 4,
772 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
773 PRIM_INT__i_s_f_s, PRIM_INT__i_s_d_s, NULL, PRIM_INT__h_s_f_s, NULL, PRIM_INT__i_s_g_s);
774
775
776 ostei_general_vrr_K(7, 0, 5, 0, 3,
777 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
778 PRIM_INT__k_s_g_s, PRIM_INT__k_s_f_s, NULL, PRIM_INT__i_s_g_s, NULL, PRIM_INT__k_s_h_s);
779
780
781 ostei_general_vrr1_I(8, 14,
782 one_over_2p, a_over_p, aop_PQ, P_PA,
783 PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
784
785
786 ostei_general_vrr_K(8, 0, 1, 0, 7,
787 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
788 PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
789
790
791 ostei_general_vrr_K(8, 0, 2, 0, 6,
792 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
793 PRIM_INT__l_s_p_s, PRIM_INT__l_s_s_s, NULL, PRIM_INT__k_s_p_s, NULL, PRIM_INT__l_s_d_s);
794
795
796 ostei_general_vrr_K(8, 0, 3, 0, 5,
797 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
798 PRIM_INT__l_s_d_s, PRIM_INT__l_s_p_s, NULL, PRIM_INT__k_s_d_s, NULL, PRIM_INT__l_s_f_s);
799
800
801 ostei_general_vrr_K(8, 0, 4, 0, 4,
802 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
803 PRIM_INT__l_s_f_s, PRIM_INT__l_s_d_s, NULL, PRIM_INT__k_s_f_s, NULL, PRIM_INT__l_s_g_s);
804
805
806
807 // Forming PRIM_INT__d_s_p_s[7 * 18];
808 for(n = 0; n < 7; ++n) // loop over orders of auxiliary function
809 {
810
811 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
812 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
813 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_p_s[n * 18 + 0]);
814
815 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
816 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 1]);
817
818 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
819 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 0], PRIM_INT__d_s_p_s[n * 18 + 2]);
820
821 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
822 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 3]);
823 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_p_s[n * 18 + 3]);
824
825 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
826 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 4]);
827 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_p_s[n * 18 + 4]);
828
829 PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
830 PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 1], PRIM_INT__d_s_p_s[n * 18 + 5]);
831
832 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
833 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 6]);
834 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_p_s[n * 18 + 6]);
835
836 PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
837 PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 7]);
838
839 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
840 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 2], PRIM_INT__d_s_p_s[n * 18 + 8]);
841 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__d_s_p_s[n * 18 + 8]);
842
843 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
844 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 9]);
845
846 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
847 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 10]);
848 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_p_s[n * 18 + 10]);
849
850 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
851 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 3], PRIM_INT__d_s_p_s[n * 18 + 11]);
852
853 PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
854 PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 12]);
855
856 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
857 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 13]);
858 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_p_s[n * 18 + 13]);
859
860 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
861 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 4], PRIM_INT__d_s_p_s[n * 18 + 14]);
862 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_FMADD( vrr_const_1_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__d_s_p_s[n * 18 + 14]);
863
864 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
865 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 15]);
866
867 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
868 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 16]);
869
870 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
871 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__d_s_s_s[(n+1) * 6 + 5], PRIM_INT__d_s_p_s[n * 18 + 17]);
872 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_2_over_2pq, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__d_s_p_s[n * 18 + 17]);
873
874 }
875
876
877 VRR_K_f_s_d_s(
878 PRIM_INT__f_s_d_s,
879 PRIM_INT__f_s_p_s,
880 PRIM_INT__f_s_s_s,
881 PRIM_INT__d_s_p_s,
882 Q_PA,
883 a_over_q,
884 aoq_PQ,
885 one_over_2pq,
886 one_over_2q,
887 6);
888
889
890 ostei_general_vrr_K(4, 0, 3, 0, 5,
891 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
892 PRIM_INT__g_s_d_s, PRIM_INT__g_s_p_s, NULL, PRIM_INT__f_s_d_s, NULL, PRIM_INT__g_s_f_s);
893
894
895 ostei_general_vrr_K(5, 0, 4, 0, 4,
896 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
897 PRIM_INT__h_s_f_s, PRIM_INT__h_s_d_s, NULL, PRIM_INT__g_s_f_s, NULL, PRIM_INT__h_s_g_s);
898
899
900 ostei_general_vrr_K(6, 0, 5, 0, 3,
901 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
902 PRIM_INT__i_s_g_s, PRIM_INT__i_s_f_s, NULL, PRIM_INT__h_s_g_s, NULL, PRIM_INT__i_s_h_s);
903
904
905 ostei_general_vrr_K(7, 0, 6, 0, 2,
906 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
907 PRIM_INT__k_s_h_s, PRIM_INT__k_s_g_s, NULL, PRIM_INT__i_s_h_s, NULL, PRIM_INT__k_s_i_s);
908
909
910 ostei_general_vrr_K(8, 0, 5, 0, 3,
911 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
912 PRIM_INT__l_s_g_s, PRIM_INT__l_s_f_s, NULL, PRIM_INT__k_s_g_s, NULL, PRIM_INT__l_s_h_s);
913
914
915 ostei_general_vrr1_I(9, 13,
916 one_over_2p, a_over_p, aop_PQ, P_PA,
917 PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
918
919
920 ostei_general_vrr_K(9, 0, 1, 0, 7,
921 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
922 PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
923
924
925 ostei_general_vrr_K(9, 0, 2, 0, 6,
926 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
927 PRIM_INT__m_s_p_s, PRIM_INT__m_s_s_s, NULL, PRIM_INT__l_s_p_s, NULL, PRIM_INT__m_s_d_s);
928
929
930 ostei_general_vrr_K(9, 0, 3, 0, 5,
931 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
932 PRIM_INT__m_s_d_s, PRIM_INT__m_s_p_s, NULL, PRIM_INT__l_s_d_s, NULL, PRIM_INT__m_s_f_s);
933
934
935 ostei_general_vrr_K(9, 0, 4, 0, 4,
936 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
937 PRIM_INT__m_s_f_s, PRIM_INT__m_s_d_s, NULL, PRIM_INT__l_s_f_s, NULL, PRIM_INT__m_s_g_s);
938
939
940
941 // Forming PRIM_INT__p_s_p_s[7 * 9];
942 for(n = 0; n < 7; ++n) // loop over orders of auxiliary function
943 {
944
945 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
946 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 0]);
947 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]);
948
949 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
950 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 1]);
951
952 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
953 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_p_s[n * 9 + 2]);
954
955 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 1]);
956 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 3]);
957
958 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
959 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 4]);
960 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]);
961
962 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
963 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_p_s[n * 9 + 5]);
964
965 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 2]);
966 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 6]);
967
968 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 2]);
969 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 7]);
970
971 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
972 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_p_s[n * 9 + 8]);
973 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]);
974
975 }
976
977
978 VRR_K_d_s_d_s(
979 PRIM_INT__d_s_d_s,
980 PRIM_INT__d_s_p_s,
981 PRIM_INT__d_s_s_s,
982 PRIM_INT__p_s_p_s,
983 Q_PA,
984 a_over_q,
985 aoq_PQ,
986 one_over_2pq,
987 one_over_2q,
988 6);
989
990
991 ostei_general_vrr_K(3, 0, 3, 0, 5,
992 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
993 PRIM_INT__f_s_d_s, PRIM_INT__f_s_p_s, NULL, PRIM_INT__d_s_d_s, NULL, PRIM_INT__f_s_f_s);
994
995
996 ostei_general_vrr_K(4, 0, 4, 0, 4,
997 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
998 PRIM_INT__g_s_f_s, PRIM_INT__g_s_d_s, NULL, PRIM_INT__f_s_f_s, NULL, PRIM_INT__g_s_g_s);
999
1000
1001 ostei_general_vrr_K(5, 0, 5, 0, 3,
1002 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1003 PRIM_INT__h_s_g_s, PRIM_INT__h_s_f_s, NULL, PRIM_INT__g_s_g_s, NULL, PRIM_INT__h_s_h_s);
1004
1005
1006 ostei_general_vrr_K(6, 0, 6, 0, 2,
1007 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1008 PRIM_INT__i_s_h_s, PRIM_INT__i_s_g_s, NULL, PRIM_INT__h_s_h_s, NULL, PRIM_INT__i_s_i_s);
1009
1010
1011 ostei_general_vrr_K(7, 0, 7, 0, 1,
1012 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1013 PRIM_INT__k_s_i_s, PRIM_INT__k_s_h_s, NULL, PRIM_INT__i_s_i_s, NULL, PRIM_INT__k_s_k_s);
1014
1015
1016 ostei_general_vrr_K(8, 0, 6, 0, 2,
1017 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1018 PRIM_INT__l_s_h_s, PRIM_INT__l_s_g_s, NULL, PRIM_INT__k_s_h_s, NULL, PRIM_INT__l_s_i_s);
1019
1020
1021 ostei_general_vrr_K(9, 0, 5, 0, 3,
1022 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1023 PRIM_INT__m_s_g_s, PRIM_INT__m_s_f_s, NULL, PRIM_INT__l_s_g_s, NULL, PRIM_INT__m_s_h_s);
1024
1025
1026 ostei_general_vrr1_I(10, 12,
1027 one_over_2p, a_over_p, aop_PQ, P_PA,
1028 PRIM_INT__m_s_s_s, PRIM_INT__l_s_s_s, PRIM_INT__n_s_s_s);
1029
1030
1031 ostei_general_vrr_K(10, 0, 1, 0, 7,
1032 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1033 PRIM_INT__n_s_s_s, NULL, NULL, PRIM_INT__m_s_s_s, NULL, PRIM_INT__n_s_p_s);
1034
1035
1036 ostei_general_vrr_K(10, 0, 2, 0, 6,
1037 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1038 PRIM_INT__n_s_p_s, PRIM_INT__n_s_s_s, NULL, PRIM_INT__m_s_p_s, NULL, PRIM_INT__n_s_d_s);
1039
1040
1041 ostei_general_vrr_K(10, 0, 3, 0, 5,
1042 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1043 PRIM_INT__n_s_d_s, PRIM_INT__n_s_p_s, NULL, PRIM_INT__m_s_d_s, NULL, PRIM_INT__n_s_f_s);
1044
1045
1046 ostei_general_vrr_K(10, 0, 4, 0, 4,
1047 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1048 PRIM_INT__n_s_f_s, PRIM_INT__n_s_d_s, NULL, PRIM_INT__m_s_f_s, NULL, PRIM_INT__n_s_g_s);
1049
1050
1051 ostei_general_vrr_K(8, 0, 7, 0, 1,
1052 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1053 PRIM_INT__l_s_i_s, PRIM_INT__l_s_h_s, NULL, PRIM_INT__k_s_i_s, NULL, PRIM_INT__l_s_k_s);
1054
1055
1056 ostei_general_vrr_K(9, 0, 6, 0, 2,
1057 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1058 PRIM_INT__m_s_h_s, PRIM_INT__m_s_g_s, NULL, PRIM_INT__l_s_h_s, NULL, PRIM_INT__m_s_i_s);
1059
1060
1061 ostei_general_vrr_K(10, 0, 5, 0, 3,
1062 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1063 PRIM_INT__n_s_g_s, PRIM_INT__n_s_f_s, NULL, PRIM_INT__m_s_g_s, NULL, PRIM_INT__n_s_h_s);
1064
1065
1066 ostei_general_vrr1_I(11, 11,
1067 one_over_2p, a_over_p, aop_PQ, P_PA,
1068 PRIM_INT__n_s_s_s, PRIM_INT__m_s_s_s, PRIM_INT__o_s_s_s);
1069
1070
1071 ostei_general_vrr_K(11, 0, 1, 0, 7,
1072 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1073 PRIM_INT__o_s_s_s, NULL, NULL, PRIM_INT__n_s_s_s, NULL, PRIM_INT__o_s_p_s);
1074
1075
1076 ostei_general_vrr_K(11, 0, 2, 0, 6,
1077 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1078 PRIM_INT__o_s_p_s, PRIM_INT__o_s_s_s, NULL, PRIM_INT__n_s_p_s, NULL, PRIM_INT__o_s_d_s);
1079
1080
1081 ostei_general_vrr_K(11, 0, 3, 0, 5,
1082 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1083 PRIM_INT__o_s_d_s, PRIM_INT__o_s_p_s, NULL, PRIM_INT__n_s_d_s, NULL, PRIM_INT__o_s_f_s);
1084
1085
1086 ostei_general_vrr_K(11, 0, 4, 0, 4,
1087 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1088 PRIM_INT__o_s_f_s, PRIM_INT__o_s_d_s, NULL, PRIM_INT__n_s_f_s, NULL, PRIM_INT__o_s_g_s);
1089
1090
1091 ostei_general_vrr_K(9, 0, 7, 0, 1,
1092 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1093 PRIM_INT__m_s_i_s, PRIM_INT__m_s_h_s, NULL, PRIM_INT__l_s_i_s, NULL, PRIM_INT__m_s_k_s);
1094
1095
1096 ostei_general_vrr_K(10, 0, 6, 0, 2,
1097 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1098 PRIM_INT__n_s_h_s, PRIM_INT__n_s_g_s, NULL, PRIM_INT__m_s_h_s, NULL, PRIM_INT__n_s_i_s);
1099
1100
1101 ostei_general_vrr_K(11, 0, 5, 0, 3,
1102 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1103 PRIM_INT__o_s_g_s, PRIM_INT__o_s_f_s, NULL, PRIM_INT__n_s_g_s, NULL, PRIM_INT__o_s_h_s);
1104
1105
1106 ostei_general_vrr1_I(12, 10,
1107 one_over_2p, a_over_p, aop_PQ, P_PA,
1108 PRIM_INT__o_s_s_s, PRIM_INT__n_s_s_s, PRIM_INT__q_s_s_s);
1109
1110
1111 ostei_general_vrr_K(12, 0, 1, 0, 7,
1112 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1113 PRIM_INT__q_s_s_s, NULL, NULL, PRIM_INT__o_s_s_s, NULL, PRIM_INT__q_s_p_s);
1114
1115
1116 ostei_general_vrr_K(12, 0, 2, 0, 6,
1117 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1118 PRIM_INT__q_s_p_s, PRIM_INT__q_s_s_s, NULL, PRIM_INT__o_s_p_s, NULL, PRIM_INT__q_s_d_s);
1119
1120
1121 ostei_general_vrr_K(12, 0, 3, 0, 5,
1122 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1123 PRIM_INT__q_s_d_s, PRIM_INT__q_s_p_s, NULL, PRIM_INT__o_s_d_s, NULL, PRIM_INT__q_s_f_s);
1124
1125
1126 ostei_general_vrr_K(12, 0, 4, 0, 4,
1127 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1128 PRIM_INT__q_s_f_s, PRIM_INT__q_s_d_s, NULL, PRIM_INT__o_s_f_s, NULL, PRIM_INT__q_s_g_s);
1129
1130
1131 ostei_general_vrr_K(10, 0, 7, 0, 1,
1132 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1133 PRIM_INT__n_s_i_s, PRIM_INT__n_s_h_s, NULL, PRIM_INT__m_s_i_s, NULL, PRIM_INT__n_s_k_s);
1134
1135
1136 ostei_general_vrr_K(11, 0, 6, 0, 2,
1137 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1138 PRIM_INT__o_s_h_s, PRIM_INT__o_s_g_s, NULL, PRIM_INT__n_s_h_s, NULL, PRIM_INT__o_s_i_s);
1139
1140
1141 ostei_general_vrr_K(12, 0, 5, 0, 3,
1142 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1143 PRIM_INT__q_s_g_s, PRIM_INT__q_s_f_s, NULL, PRIM_INT__o_s_g_s, NULL, PRIM_INT__q_s_h_s);
1144
1145
1146 ostei_general_vrr1_I(13, 9,
1147 one_over_2p, a_over_p, aop_PQ, P_PA,
1148 PRIM_INT__q_s_s_s, PRIM_INT__o_s_s_s, PRIM_INT__r_s_s_s);
1149
1150
1151 ostei_general_vrr_K(13, 0, 1, 0, 7,
1152 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1153 PRIM_INT__r_s_s_s, NULL, NULL, PRIM_INT__q_s_s_s, NULL, PRIM_INT__r_s_p_s);
1154
1155
1156 ostei_general_vrr_K(13, 0, 2, 0, 6,
1157 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1158 PRIM_INT__r_s_p_s, PRIM_INT__r_s_s_s, NULL, PRIM_INT__q_s_p_s, NULL, PRIM_INT__r_s_d_s);
1159
1160
1161 ostei_general_vrr_K(13, 0, 3, 0, 5,
1162 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1163 PRIM_INT__r_s_d_s, PRIM_INT__r_s_p_s, NULL, PRIM_INT__q_s_d_s, NULL, PRIM_INT__r_s_f_s);
1164
1165
1166 ostei_general_vrr_K(13, 0, 4, 0, 4,
1167 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1168 PRIM_INT__r_s_f_s, PRIM_INT__r_s_d_s, NULL, PRIM_INT__q_s_f_s, NULL, PRIM_INT__r_s_g_s);
1169
1170
1171 ostei_general_vrr_K(11, 0, 7, 0, 1,
1172 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1173 PRIM_INT__o_s_i_s, PRIM_INT__o_s_h_s, NULL, PRIM_INT__n_s_i_s, NULL, PRIM_INT__o_s_k_s);
1174
1175
1176 ostei_general_vrr_K(12, 0, 6, 0, 2,
1177 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1178 PRIM_INT__q_s_h_s, PRIM_INT__q_s_g_s, NULL, PRIM_INT__o_s_h_s, NULL, PRIM_INT__q_s_i_s);
1179
1180
1181 ostei_general_vrr_K(13, 0, 5, 0, 3,
1182 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1183 PRIM_INT__r_s_g_s, PRIM_INT__r_s_f_s, NULL, PRIM_INT__q_s_g_s, NULL, PRIM_INT__r_s_h_s);
1184
1185
1186 ostei_general_vrr1_I(14, 8,
1187 one_over_2p, a_over_p, aop_PQ, P_PA,
1188 PRIM_INT__r_s_s_s, PRIM_INT__q_s_s_s, PRIM_INT__t_s_s_s);
1189
1190
1191 ostei_general_vrr_K(14, 0, 1, 0, 7,
1192 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1193 PRIM_INT__t_s_s_s, NULL, NULL, PRIM_INT__r_s_s_s, NULL, PRIM_INT__t_s_p_s);
1194
1195
1196 ostei_general_vrr_K(14, 0, 2, 0, 6,
1197 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1198 PRIM_INT__t_s_p_s, PRIM_INT__t_s_s_s, NULL, PRIM_INT__r_s_p_s, NULL, PRIM_INT__t_s_d_s);
1199
1200
1201 ostei_general_vrr_K(14, 0, 3, 0, 5,
1202 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1203 PRIM_INT__t_s_d_s, PRIM_INT__t_s_p_s, NULL, PRIM_INT__r_s_d_s, NULL, PRIM_INT__t_s_f_s);
1204
1205
1206 ostei_general_vrr_K(14, 0, 4, 0, 4,
1207 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1208 PRIM_INT__t_s_f_s, PRIM_INT__t_s_d_s, NULL, PRIM_INT__r_s_f_s, NULL, PRIM_INT__t_s_g_s);
1209
1210
1211 ostei_general_vrr_K(12, 0, 7, 0, 1,
1212 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1213 PRIM_INT__q_s_i_s, PRIM_INT__q_s_h_s, NULL, PRIM_INT__o_s_i_s, NULL, PRIM_INT__q_s_k_s);
1214
1215
1216 ostei_general_vrr_K(13, 0, 6, 0, 2,
1217 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1218 PRIM_INT__r_s_h_s, PRIM_INT__r_s_g_s, NULL, PRIM_INT__q_s_h_s, NULL, PRIM_INT__r_s_i_s);
1219
1220
1221 ostei_general_vrr_K(14, 0, 5, 0, 3,
1222 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1223 PRIM_INT__t_s_g_s, PRIM_INT__t_s_f_s, NULL, PRIM_INT__r_s_g_s, NULL, PRIM_INT__t_s_h_s);
1224
1225
1226 ostei_general_vrr_K(13, 0, 7, 0, 1,
1227 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1228 PRIM_INT__r_s_i_s, PRIM_INT__r_s_h_s, NULL, PRIM_INT__q_s_i_s, NULL, PRIM_INT__r_s_k_s);
1229
1230
1231 ostei_general_vrr_K(14, 0, 6, 0, 2,
1232 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1233 PRIM_INT__t_s_h_s, PRIM_INT__t_s_g_s, NULL, PRIM_INT__r_s_h_s, NULL, PRIM_INT__t_s_i_s);
1234
1235
1236 ostei_general_vrr_K(14, 0, 7, 0, 1,
1237 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1238 PRIM_INT__t_s_i_s, PRIM_INT__t_s_h_s, NULL, PRIM_INT__r_s_i_s, NULL, PRIM_INT__t_s_k_s);
1239
1240
1241
1242
1243 ////////////////////////////////////
1244 // Accumulate contracted integrals
1245 ////////////////////////////////////
1246 if(lastoffset == 0)
1247 {
1248 contract_all(540, PRIM_INT__k_s_g_s, PRIM_PTR_INT__k_s_g_s);
1249 contract_all(756, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1250 contract_all(1008, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1251 contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1252 contract_all(675, PRIM_INT__l_s_g_s, PRIM_PTR_INT__l_s_g_s);
1253 contract_all(945, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1254 contract_all(1260, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1255 contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1256 contract_all(825, PRIM_INT__m_s_g_s, PRIM_PTR_INT__m_s_g_s);
1257 contract_all(1155, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1258 contract_all(1540, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1259 contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1260 contract_all(990, PRIM_INT__n_s_g_s, PRIM_PTR_INT__n_s_g_s);
1261 contract_all(1386, PRIM_INT__n_s_h_s, PRIM_PTR_INT__n_s_h_s);
1262 contract_all(1848, PRIM_INT__n_s_i_s, PRIM_PTR_INT__n_s_i_s);
1263 contract_all(2376, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1264 contract_all(1170, PRIM_INT__o_s_g_s, PRIM_PTR_INT__o_s_g_s);
1265 contract_all(1638, PRIM_INT__o_s_h_s, PRIM_PTR_INT__o_s_h_s);
1266 contract_all(2184, PRIM_INT__o_s_i_s, PRIM_PTR_INT__o_s_i_s);
1267 contract_all(2808, PRIM_INT__o_s_k_s, PRIM_PTR_INT__o_s_k_s);
1268 contract_all(1365, PRIM_INT__q_s_g_s, PRIM_PTR_INT__q_s_g_s);
1269 contract_all(1911, PRIM_INT__q_s_h_s, PRIM_PTR_INT__q_s_h_s);
1270 contract_all(2548, PRIM_INT__q_s_i_s, PRIM_PTR_INT__q_s_i_s);
1271 contract_all(3276, PRIM_INT__q_s_k_s, PRIM_PTR_INT__q_s_k_s);
1272 contract_all(1575, PRIM_INT__r_s_g_s, PRIM_PTR_INT__r_s_g_s);
1273 contract_all(2205, PRIM_INT__r_s_h_s, PRIM_PTR_INT__r_s_h_s);
1274 contract_all(2940, PRIM_INT__r_s_i_s, PRIM_PTR_INT__r_s_i_s);
1275 contract_all(3780, PRIM_INT__r_s_k_s, PRIM_PTR_INT__r_s_k_s);
1276 contract_all(1800, PRIM_INT__t_s_g_s, PRIM_PTR_INT__t_s_g_s);
1277 contract_all(2520, PRIM_INT__t_s_h_s, PRIM_PTR_INT__t_s_h_s);
1278 contract_all(3360, PRIM_INT__t_s_i_s, PRIM_PTR_INT__t_s_i_s);
1279 contract_all(4320, PRIM_INT__t_s_k_s, PRIM_PTR_INT__t_s_k_s);
1280 }
1281 else
1282 {
1283 contract(540, shelloffsets, PRIM_INT__k_s_g_s, PRIM_PTR_INT__k_s_g_s);
1284 contract(756, shelloffsets, PRIM_INT__k_s_h_s, PRIM_PTR_INT__k_s_h_s);
1285 contract(1008, shelloffsets, PRIM_INT__k_s_i_s, PRIM_PTR_INT__k_s_i_s);
1286 contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1287 contract(675, shelloffsets, PRIM_INT__l_s_g_s, PRIM_PTR_INT__l_s_g_s);
1288 contract(945, shelloffsets, PRIM_INT__l_s_h_s, PRIM_PTR_INT__l_s_h_s);
1289 contract(1260, shelloffsets, PRIM_INT__l_s_i_s, PRIM_PTR_INT__l_s_i_s);
1290 contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1291 contract(825, shelloffsets, PRIM_INT__m_s_g_s, PRIM_PTR_INT__m_s_g_s);
1292 contract(1155, shelloffsets, PRIM_INT__m_s_h_s, PRIM_PTR_INT__m_s_h_s);
1293 contract(1540, shelloffsets, PRIM_INT__m_s_i_s, PRIM_PTR_INT__m_s_i_s);
1294 contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1295 contract(990, shelloffsets, PRIM_INT__n_s_g_s, PRIM_PTR_INT__n_s_g_s);
1296 contract(1386, shelloffsets, PRIM_INT__n_s_h_s, PRIM_PTR_INT__n_s_h_s);
1297 contract(1848, shelloffsets, PRIM_INT__n_s_i_s, PRIM_PTR_INT__n_s_i_s);
1298 contract(2376, shelloffsets, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1299 contract(1170, shelloffsets, PRIM_INT__o_s_g_s, PRIM_PTR_INT__o_s_g_s);
1300 contract(1638, shelloffsets, PRIM_INT__o_s_h_s, PRIM_PTR_INT__o_s_h_s);
1301 contract(2184, shelloffsets, PRIM_INT__o_s_i_s, PRIM_PTR_INT__o_s_i_s);
1302 contract(2808, shelloffsets, PRIM_INT__o_s_k_s, PRIM_PTR_INT__o_s_k_s);
1303 contract(1365, shelloffsets, PRIM_INT__q_s_g_s, PRIM_PTR_INT__q_s_g_s);
1304 contract(1911, shelloffsets, PRIM_INT__q_s_h_s, PRIM_PTR_INT__q_s_h_s);
1305 contract(2548, shelloffsets, PRIM_INT__q_s_i_s, PRIM_PTR_INT__q_s_i_s);
1306 contract(3276, shelloffsets, PRIM_INT__q_s_k_s, PRIM_PTR_INT__q_s_k_s);
1307 contract(1575, shelloffsets, PRIM_INT__r_s_g_s, PRIM_PTR_INT__r_s_g_s);
1308 contract(2205, shelloffsets, PRIM_INT__r_s_h_s, PRIM_PTR_INT__r_s_h_s);
1309 contract(2940, shelloffsets, PRIM_INT__r_s_i_s, PRIM_PTR_INT__r_s_i_s);
1310 contract(3780, shelloffsets, PRIM_INT__r_s_k_s, PRIM_PTR_INT__r_s_k_s);
1311 contract(1800, shelloffsets, PRIM_INT__t_s_g_s, PRIM_PTR_INT__t_s_g_s);
1312 contract(2520, shelloffsets, PRIM_INT__t_s_h_s, PRIM_PTR_INT__t_s_h_s);
1313 contract(3360, shelloffsets, PRIM_INT__t_s_i_s, PRIM_PTR_INT__t_s_i_s);
1314 contract(4320, shelloffsets, PRIM_INT__t_s_k_s, PRIM_PTR_INT__t_s_k_s);
1315 PRIM_PTR_INT__k_s_g_s += lastoffset*540;
1316 PRIM_PTR_INT__k_s_h_s += lastoffset*756;
1317 PRIM_PTR_INT__k_s_i_s += lastoffset*1008;
1318 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1319 PRIM_PTR_INT__l_s_g_s += lastoffset*675;
1320 PRIM_PTR_INT__l_s_h_s += lastoffset*945;
1321 PRIM_PTR_INT__l_s_i_s += lastoffset*1260;
1322 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1323 PRIM_PTR_INT__m_s_g_s += lastoffset*825;
1324 PRIM_PTR_INT__m_s_h_s += lastoffset*1155;
1325 PRIM_PTR_INT__m_s_i_s += lastoffset*1540;
1326 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1327 PRIM_PTR_INT__n_s_g_s += lastoffset*990;
1328 PRIM_PTR_INT__n_s_h_s += lastoffset*1386;
1329 PRIM_PTR_INT__n_s_i_s += lastoffset*1848;
1330 PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
1331 PRIM_PTR_INT__o_s_g_s += lastoffset*1170;
1332 PRIM_PTR_INT__o_s_h_s += lastoffset*1638;
1333 PRIM_PTR_INT__o_s_i_s += lastoffset*2184;
1334 PRIM_PTR_INT__o_s_k_s += lastoffset*2808;
1335 PRIM_PTR_INT__q_s_g_s += lastoffset*1365;
1336 PRIM_PTR_INT__q_s_h_s += lastoffset*1911;
1337 PRIM_PTR_INT__q_s_i_s += lastoffset*2548;
1338 PRIM_PTR_INT__q_s_k_s += lastoffset*3276;
1339 PRIM_PTR_INT__r_s_g_s += lastoffset*1575;
1340 PRIM_PTR_INT__r_s_h_s += lastoffset*2205;
1341 PRIM_PTR_INT__r_s_i_s += lastoffset*2940;
1342 PRIM_PTR_INT__r_s_k_s += lastoffset*3780;
1343 PRIM_PTR_INT__t_s_g_s += lastoffset*1800;
1344 PRIM_PTR_INT__t_s_h_s += lastoffset*2520;
1345 PRIM_PTR_INT__t_s_i_s += lastoffset*3360;
1346 PRIM_PTR_INT__t_s_k_s += lastoffset*4320;
1347 }
1348
1349 } // close loop over j
1350 } // close loop over i
1351
1352 //Advance to the next batch
1353 jstart = SIMINT_SIMD_ROUND(jend);
1354
1355 //////////////////////////////////////////////
1356 // Contracted integrals: Horizontal recurrance
1357 //////////////////////////////////////////////
1358
1359
1360 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1361
1362
1363 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1364 {
1365 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1366
1367 // set up HRR pointers
1368 double const * restrict HRR_INT__k_s_g_s = INT__k_s_g_s + abcd * 540;
1369 double const * restrict HRR_INT__k_s_h_s = INT__k_s_h_s + abcd * 756;
1370 double const * restrict HRR_INT__k_s_i_s = INT__k_s_i_s + abcd * 1008;
1371 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1372 double const * restrict HRR_INT__l_s_g_s = INT__l_s_g_s + abcd * 675;
1373 double const * restrict HRR_INT__l_s_h_s = INT__l_s_h_s + abcd * 945;
1374 double const * restrict HRR_INT__l_s_i_s = INT__l_s_i_s + abcd * 1260;
1375 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1376 double const * restrict HRR_INT__m_s_g_s = INT__m_s_g_s + abcd * 825;
1377 double const * restrict HRR_INT__m_s_h_s = INT__m_s_h_s + abcd * 1155;
1378 double const * restrict HRR_INT__m_s_i_s = INT__m_s_i_s + abcd * 1540;
1379 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1380 double const * restrict HRR_INT__n_s_g_s = INT__n_s_g_s + abcd * 990;
1381 double const * restrict HRR_INT__n_s_h_s = INT__n_s_h_s + abcd * 1386;
1382 double const * restrict HRR_INT__n_s_i_s = INT__n_s_i_s + abcd * 1848;
1383 double const * restrict HRR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
1384 double const * restrict HRR_INT__o_s_g_s = INT__o_s_g_s + abcd * 1170;
1385 double const * restrict HRR_INT__o_s_h_s = INT__o_s_h_s + abcd * 1638;
1386 double const * restrict HRR_INT__o_s_i_s = INT__o_s_i_s + abcd * 2184;
1387 double const * restrict HRR_INT__o_s_k_s = INT__o_s_k_s + abcd * 2808;
1388 double const * restrict HRR_INT__q_s_g_s = INT__q_s_g_s + abcd * 1365;
1389 double const * restrict HRR_INT__q_s_h_s = INT__q_s_h_s + abcd * 1911;
1390 double const * restrict HRR_INT__q_s_i_s = INT__q_s_i_s + abcd * 2548;
1391 double const * restrict HRR_INT__q_s_k_s = INT__q_s_k_s + abcd * 3276;
1392 double const * restrict HRR_INT__r_s_g_s = INT__r_s_g_s + abcd * 1575;
1393 double const * restrict HRR_INT__r_s_h_s = INT__r_s_h_s + abcd * 2205;
1394 double const * restrict HRR_INT__r_s_i_s = INT__r_s_i_s + abcd * 2940;
1395 double const * restrict HRR_INT__r_s_k_s = INT__r_s_k_s + abcd * 3780;
1396 double const * restrict HRR_INT__t_s_g_s = INT__t_s_g_s + abcd * 1800;
1397 double const * restrict HRR_INT__t_s_h_s = INT__t_s_h_s + abcd * 2520;
1398 double const * restrict HRR_INT__t_s_i_s = INT__t_s_i_s + abcd * 3360;
1399 double const * restrict HRR_INT__t_s_k_s = INT__t_s_k_s + abcd * 4320;
1400 double * restrict HRR_INT__k_k_g_f = INT__k_k_g_f + real_abcd * 194400;
1401
1402 // form INT__k_p_g_s
1403 ostei_general_hrr_J(7, 1, 4, 0, hAB, HRR_INT__l_s_g_s, HRR_INT__k_s_g_s, HRR_INT__k_p_g_s);
1404
1405 // form INT__k_p_h_s
1406 ostei_general_hrr_J(7, 1, 5, 0, hAB, HRR_INT__l_s_h_s, HRR_INT__k_s_h_s, HRR_INT__k_p_h_s);
1407
1408 // form INT__k_p_i_s
1409 ostei_general_hrr_J(7, 1, 6, 0, hAB, HRR_INT__l_s_i_s, HRR_INT__k_s_i_s, HRR_INT__k_p_i_s);
1410
1411 // form INT__k_p_k_s
1412 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);
1413
1414 // form INT__l_p_g_s
1415 ostei_general_hrr_J(8, 1, 4, 0, hAB, HRR_INT__m_s_g_s, HRR_INT__l_s_g_s, HRR_INT__l_p_g_s);
1416
1417 // form INT__l_p_h_s
1418 ostei_general_hrr_J(8, 1, 5, 0, hAB, HRR_INT__m_s_h_s, HRR_INT__l_s_h_s, HRR_INT__l_p_h_s);
1419
1420 // form INT__l_p_i_s
1421 ostei_general_hrr_J(8, 1, 6, 0, hAB, HRR_INT__m_s_i_s, HRR_INT__l_s_i_s, HRR_INT__l_p_i_s);
1422
1423 // form INT__l_p_k_s
1424 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);
1425
1426 // form INT__m_p_g_s
1427 ostei_general_hrr_J(9, 1, 4, 0, hAB, HRR_INT__n_s_g_s, HRR_INT__m_s_g_s, HRR_INT__m_p_g_s);
1428
1429 // form INT__m_p_h_s
1430 ostei_general_hrr_J(9, 1, 5, 0, hAB, HRR_INT__n_s_h_s, HRR_INT__m_s_h_s, HRR_INT__m_p_h_s);
1431
1432 // form INT__m_p_i_s
1433 ostei_general_hrr_J(9, 1, 6, 0, hAB, HRR_INT__n_s_i_s, HRR_INT__m_s_i_s, HRR_INT__m_p_i_s);
1434
1435 // form INT__m_p_k_s
1436 ostei_general_hrr_J(9, 1, 7, 0, hAB, HRR_INT__n_s_k_s, HRR_INT__m_s_k_s, HRR_INT__m_p_k_s);
1437
1438 // form INT__n_p_g_s
1439 ostei_general_hrr_J(10, 1, 4, 0, hAB, HRR_INT__o_s_g_s, HRR_INT__n_s_g_s, HRR_INT__n_p_g_s);
1440
1441 // form INT__n_p_h_s
1442 ostei_general_hrr_J(10, 1, 5, 0, hAB, HRR_INT__o_s_h_s, HRR_INT__n_s_h_s, HRR_INT__n_p_h_s);
1443
1444 // form INT__n_p_i_s
1445 ostei_general_hrr_J(10, 1, 6, 0, hAB, HRR_INT__o_s_i_s, HRR_INT__n_s_i_s, HRR_INT__n_p_i_s);
1446
1447 // form INT__n_p_k_s
1448 ostei_general_hrr_J(10, 1, 7, 0, hAB, HRR_INT__o_s_k_s, HRR_INT__n_s_k_s, HRR_INT__n_p_k_s);
1449
1450 // form INT__o_p_g_s
1451 ostei_general_hrr_J(11, 1, 4, 0, hAB, HRR_INT__q_s_g_s, HRR_INT__o_s_g_s, HRR_INT__o_p_g_s);
1452
1453 // form INT__o_p_h_s
1454 ostei_general_hrr_J(11, 1, 5, 0, hAB, HRR_INT__q_s_h_s, HRR_INT__o_s_h_s, HRR_INT__o_p_h_s);
1455
1456 // form INT__o_p_i_s
1457 ostei_general_hrr_J(11, 1, 6, 0, hAB, HRR_INT__q_s_i_s, HRR_INT__o_s_i_s, HRR_INT__o_p_i_s);
1458
1459 // form INT__o_p_k_s
1460 ostei_general_hrr_J(11, 1, 7, 0, hAB, HRR_INT__q_s_k_s, HRR_INT__o_s_k_s, HRR_INT__o_p_k_s);
1461
1462 // form INT__q_p_g_s
1463 ostei_general_hrr_J(12, 1, 4, 0, hAB, HRR_INT__r_s_g_s, HRR_INT__q_s_g_s, HRR_INT__q_p_g_s);
1464
1465 // form INT__q_p_h_s
1466 ostei_general_hrr_J(12, 1, 5, 0, hAB, HRR_INT__r_s_h_s, HRR_INT__q_s_h_s, HRR_INT__q_p_h_s);
1467
1468 // form INT__q_p_i_s
1469 ostei_general_hrr_J(12, 1, 6, 0, hAB, HRR_INT__r_s_i_s, HRR_INT__q_s_i_s, HRR_INT__q_p_i_s);
1470
1471 // form INT__q_p_k_s
1472 ostei_general_hrr_J(12, 1, 7, 0, hAB, HRR_INT__r_s_k_s, HRR_INT__q_s_k_s, HRR_INT__q_p_k_s);
1473
1474 // form INT__r_p_g_s
1475 ostei_general_hrr_J(13, 1, 4, 0, hAB, HRR_INT__t_s_g_s, HRR_INT__r_s_g_s, HRR_INT__r_p_g_s);
1476
1477 // form INT__r_p_h_s
1478 ostei_general_hrr_J(13, 1, 5, 0, hAB, HRR_INT__t_s_h_s, HRR_INT__r_s_h_s, HRR_INT__r_p_h_s);
1479
1480 // form INT__r_p_i_s
1481 ostei_general_hrr_J(13, 1, 6, 0, hAB, HRR_INT__t_s_i_s, HRR_INT__r_s_i_s, HRR_INT__r_p_i_s);
1482
1483 // form INT__r_p_k_s
1484 ostei_general_hrr_J(13, 1, 7, 0, hAB, HRR_INT__t_s_k_s, HRR_INT__r_s_k_s, HRR_INT__r_p_k_s);
1485
1486 // form INT__k_d_g_s
1487 ostei_general_hrr_J(7, 2, 4, 0, hAB, HRR_INT__l_p_g_s, HRR_INT__k_p_g_s, HRR_INT__k_d_g_s);
1488
1489 // form INT__k_d_h_s
1490 ostei_general_hrr_J(7, 2, 5, 0, hAB, HRR_INT__l_p_h_s, HRR_INT__k_p_h_s, HRR_INT__k_d_h_s);
1491
1492 // form INT__k_d_i_s
1493 ostei_general_hrr_J(7, 2, 6, 0, hAB, HRR_INT__l_p_i_s, HRR_INT__k_p_i_s, HRR_INT__k_d_i_s);
1494
1495 // form INT__k_d_k_s
1496 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);
1497
1498 // form INT__l_d_g_s
1499 ostei_general_hrr_J(8, 2, 4, 0, hAB, HRR_INT__m_p_g_s, HRR_INT__l_p_g_s, HRR_INT__l_d_g_s);
1500
1501 // form INT__l_d_h_s
1502 ostei_general_hrr_J(8, 2, 5, 0, hAB, HRR_INT__m_p_h_s, HRR_INT__l_p_h_s, HRR_INT__l_d_h_s);
1503
1504 // form INT__l_d_i_s
1505 ostei_general_hrr_J(8, 2, 6, 0, hAB, HRR_INT__m_p_i_s, HRR_INT__l_p_i_s, HRR_INT__l_d_i_s);
1506
1507 // form INT__l_d_k_s
1508 ostei_general_hrr_J(8, 2, 7, 0, hAB, HRR_INT__m_p_k_s, HRR_INT__l_p_k_s, HRR_INT__l_d_k_s);
1509
1510 // form INT__m_d_g_s
1511 ostei_general_hrr_J(9, 2, 4, 0, hAB, HRR_INT__n_p_g_s, HRR_INT__m_p_g_s, HRR_INT__m_d_g_s);
1512
1513 // form INT__m_d_h_s
1514 ostei_general_hrr_J(9, 2, 5, 0, hAB, HRR_INT__n_p_h_s, HRR_INT__m_p_h_s, HRR_INT__m_d_h_s);
1515
1516 // form INT__m_d_i_s
1517 ostei_general_hrr_J(9, 2, 6, 0, hAB, HRR_INT__n_p_i_s, HRR_INT__m_p_i_s, HRR_INT__m_d_i_s);
1518
1519 // form INT__m_d_k_s
1520 ostei_general_hrr_J(9, 2, 7, 0, hAB, HRR_INT__n_p_k_s, HRR_INT__m_p_k_s, HRR_INT__m_d_k_s);
1521
1522 // form INT__n_d_g_s
1523 ostei_general_hrr_J(10, 2, 4, 0, hAB, HRR_INT__o_p_g_s, HRR_INT__n_p_g_s, HRR_INT__n_d_g_s);
1524
1525 // form INT__n_d_h_s
1526 ostei_general_hrr_J(10, 2, 5, 0, hAB, HRR_INT__o_p_h_s, HRR_INT__n_p_h_s, HRR_INT__n_d_h_s);
1527
1528 // form INT__n_d_i_s
1529 ostei_general_hrr_J(10, 2, 6, 0, hAB, HRR_INT__o_p_i_s, HRR_INT__n_p_i_s, HRR_INT__n_d_i_s);
1530
1531 // form INT__n_d_k_s
1532 ostei_general_hrr_J(10, 2, 7, 0, hAB, HRR_INT__o_p_k_s, HRR_INT__n_p_k_s, HRR_INT__n_d_k_s);
1533
1534 // form INT__o_d_g_s
1535 ostei_general_hrr_J(11, 2, 4, 0, hAB, HRR_INT__q_p_g_s, HRR_INT__o_p_g_s, HRR_INT__o_d_g_s);
1536
1537 // form INT__o_d_h_s
1538 ostei_general_hrr_J(11, 2, 5, 0, hAB, HRR_INT__q_p_h_s, HRR_INT__o_p_h_s, HRR_INT__o_d_h_s);
1539
1540 // form INT__o_d_i_s
1541 ostei_general_hrr_J(11, 2, 6, 0, hAB, HRR_INT__q_p_i_s, HRR_INT__o_p_i_s, HRR_INT__o_d_i_s);
1542
1543 // form INT__o_d_k_s
1544 ostei_general_hrr_J(11, 2, 7, 0, hAB, HRR_INT__q_p_k_s, HRR_INT__o_p_k_s, HRR_INT__o_d_k_s);
1545
1546 // form INT__q_d_g_s
1547 ostei_general_hrr_J(12, 2, 4, 0, hAB, HRR_INT__r_p_g_s, HRR_INT__q_p_g_s, HRR_INT__q_d_g_s);
1548
1549 // form INT__q_d_h_s
1550 ostei_general_hrr_J(12, 2, 5, 0, hAB, HRR_INT__r_p_h_s, HRR_INT__q_p_h_s, HRR_INT__q_d_h_s);
1551
1552 // form INT__q_d_i_s
1553 ostei_general_hrr_J(12, 2, 6, 0, hAB, HRR_INT__r_p_i_s, HRR_INT__q_p_i_s, HRR_INT__q_d_i_s);
1554
1555 // form INT__q_d_k_s
1556 ostei_general_hrr_J(12, 2, 7, 0, hAB, HRR_INT__r_p_k_s, HRR_INT__q_p_k_s, HRR_INT__q_d_k_s);
1557
1558 // form INT__k_f_g_s
1559 ostei_general_hrr_J(7, 3, 4, 0, hAB, HRR_INT__l_d_g_s, HRR_INT__k_d_g_s, HRR_INT__k_f_g_s);
1560
1561 // form INT__k_f_h_s
1562 ostei_general_hrr_J(7, 3, 5, 0, hAB, HRR_INT__l_d_h_s, HRR_INT__k_d_h_s, HRR_INT__k_f_h_s);
1563
1564 // form INT__k_f_i_s
1565 ostei_general_hrr_J(7, 3, 6, 0, hAB, HRR_INT__l_d_i_s, HRR_INT__k_d_i_s, HRR_INT__k_f_i_s);
1566
1567 // form INT__k_f_k_s
1568 ostei_general_hrr_J(7, 3, 7, 0, hAB, HRR_INT__l_d_k_s, HRR_INT__k_d_k_s, HRR_INT__k_f_k_s);
1569
1570 // form INT__l_f_g_s
1571 ostei_general_hrr_J(8, 3, 4, 0, hAB, HRR_INT__m_d_g_s, HRR_INT__l_d_g_s, HRR_INT__l_f_g_s);
1572
1573 // form INT__l_f_h_s
1574 ostei_general_hrr_J(8, 3, 5, 0, hAB, HRR_INT__m_d_h_s, HRR_INT__l_d_h_s, HRR_INT__l_f_h_s);
1575
1576 // form INT__l_f_i_s
1577 ostei_general_hrr_J(8, 3, 6, 0, hAB, HRR_INT__m_d_i_s, HRR_INT__l_d_i_s, HRR_INT__l_f_i_s);
1578
1579 // form INT__l_f_k_s
1580 ostei_general_hrr_J(8, 3, 7, 0, hAB, HRR_INT__m_d_k_s, HRR_INT__l_d_k_s, HRR_INT__l_f_k_s);
1581
1582 // form INT__m_f_g_s
1583 ostei_general_hrr_J(9, 3, 4, 0, hAB, HRR_INT__n_d_g_s, HRR_INT__m_d_g_s, HRR_INT__m_f_g_s);
1584
1585 // form INT__m_f_h_s
1586 ostei_general_hrr_J(9, 3, 5, 0, hAB, HRR_INT__n_d_h_s, HRR_INT__m_d_h_s, HRR_INT__m_f_h_s);
1587
1588 // form INT__m_f_i_s
1589 ostei_general_hrr_J(9, 3, 6, 0, hAB, HRR_INT__n_d_i_s, HRR_INT__m_d_i_s, HRR_INT__m_f_i_s);
1590
1591 // form INT__m_f_k_s
1592 ostei_general_hrr_J(9, 3, 7, 0, hAB, HRR_INT__n_d_k_s, HRR_INT__m_d_k_s, HRR_INT__m_f_k_s);
1593
1594 // form INT__n_f_g_s
1595 ostei_general_hrr_J(10, 3, 4, 0, hAB, HRR_INT__o_d_g_s, HRR_INT__n_d_g_s, HRR_INT__n_f_g_s);
1596
1597 // form INT__n_f_h_s
1598 ostei_general_hrr_J(10, 3, 5, 0, hAB, HRR_INT__o_d_h_s, HRR_INT__n_d_h_s, HRR_INT__n_f_h_s);
1599
1600 // form INT__n_f_i_s
1601 ostei_general_hrr_J(10, 3, 6, 0, hAB, HRR_INT__o_d_i_s, HRR_INT__n_d_i_s, HRR_INT__n_f_i_s);
1602
1603 // form INT__n_f_k_s
1604 ostei_general_hrr_J(10, 3, 7, 0, hAB, HRR_INT__o_d_k_s, HRR_INT__n_d_k_s, HRR_INT__n_f_k_s);
1605
1606 // form INT__o_f_g_s
1607 ostei_general_hrr_J(11, 3, 4, 0, hAB, HRR_INT__q_d_g_s, HRR_INT__o_d_g_s, HRR_INT__o_f_g_s);
1608
1609 // form INT__o_f_h_s
1610 ostei_general_hrr_J(11, 3, 5, 0, hAB, HRR_INT__q_d_h_s, HRR_INT__o_d_h_s, HRR_INT__o_f_h_s);
1611
1612 // form INT__o_f_i_s
1613 ostei_general_hrr_J(11, 3, 6, 0, hAB, HRR_INT__q_d_i_s, HRR_INT__o_d_i_s, HRR_INT__o_f_i_s);
1614
1615 // form INT__o_f_k_s
1616 ostei_general_hrr_J(11, 3, 7, 0, hAB, HRR_INT__q_d_k_s, HRR_INT__o_d_k_s, HRR_INT__o_f_k_s);
1617
1618 // form INT__k_g_g_s
1619 ostei_general_hrr_J(7, 4, 4, 0, hAB, HRR_INT__l_f_g_s, HRR_INT__k_f_g_s, HRR_INT__k_g_g_s);
1620
1621 // form INT__k_g_h_s
1622 ostei_general_hrr_J(7, 4, 5, 0, hAB, HRR_INT__l_f_h_s, HRR_INT__k_f_h_s, HRR_INT__k_g_h_s);
1623
1624 // form INT__k_g_i_s
1625 ostei_general_hrr_J(7, 4, 6, 0, hAB, HRR_INT__l_f_i_s, HRR_INT__k_f_i_s, HRR_INT__k_g_i_s);
1626
1627 // form INT__k_g_k_s
1628 ostei_general_hrr_J(7, 4, 7, 0, hAB, HRR_INT__l_f_k_s, HRR_INT__k_f_k_s, HRR_INT__k_g_k_s);
1629
1630 // form INT__l_g_g_s
1631 ostei_general_hrr_J(8, 4, 4, 0, hAB, HRR_INT__m_f_g_s, HRR_INT__l_f_g_s, HRR_INT__l_g_g_s);
1632
1633 // form INT__l_g_h_s
1634 ostei_general_hrr_J(8, 4, 5, 0, hAB, HRR_INT__m_f_h_s, HRR_INT__l_f_h_s, HRR_INT__l_g_h_s);
1635
1636 // form INT__l_g_i_s
1637 ostei_general_hrr_J(8, 4, 6, 0, hAB, HRR_INT__m_f_i_s, HRR_INT__l_f_i_s, HRR_INT__l_g_i_s);
1638
1639 // form INT__l_g_k_s
1640 ostei_general_hrr_J(8, 4, 7, 0, hAB, HRR_INT__m_f_k_s, HRR_INT__l_f_k_s, HRR_INT__l_g_k_s);
1641
1642 // form INT__m_g_g_s
1643 ostei_general_hrr_J(9, 4, 4, 0, hAB, HRR_INT__n_f_g_s, HRR_INT__m_f_g_s, HRR_INT__m_g_g_s);
1644
1645 // form INT__m_g_h_s
1646 ostei_general_hrr_J(9, 4, 5, 0, hAB, HRR_INT__n_f_h_s, HRR_INT__m_f_h_s, HRR_INT__m_g_h_s);
1647
1648 // form INT__m_g_i_s
1649 ostei_general_hrr_J(9, 4, 6, 0, hAB, HRR_INT__n_f_i_s, HRR_INT__m_f_i_s, HRR_INT__m_g_i_s);
1650
1651 // form INT__m_g_k_s
1652 ostei_general_hrr_J(9, 4, 7, 0, hAB, HRR_INT__n_f_k_s, HRR_INT__m_f_k_s, HRR_INT__m_g_k_s);
1653
1654 // form INT__n_g_g_s
1655 ostei_general_hrr_J(10, 4, 4, 0, hAB, HRR_INT__o_f_g_s, HRR_INT__n_f_g_s, HRR_INT__n_g_g_s);
1656
1657 // form INT__n_g_h_s
1658 ostei_general_hrr_J(10, 4, 5, 0, hAB, HRR_INT__o_f_h_s, HRR_INT__n_f_h_s, HRR_INT__n_g_h_s);
1659
1660 // form INT__n_g_i_s
1661 ostei_general_hrr_J(10, 4, 6, 0, hAB, HRR_INT__o_f_i_s, HRR_INT__n_f_i_s, HRR_INT__n_g_i_s);
1662
1663 // form INT__n_g_k_s
1664 ostei_general_hrr_J(10, 4, 7, 0, hAB, HRR_INT__o_f_k_s, HRR_INT__n_f_k_s, HRR_INT__n_g_k_s);
1665
1666 // form INT__k_h_g_s
1667 ostei_general_hrr_J(7, 5, 4, 0, hAB, HRR_INT__l_g_g_s, HRR_INT__k_g_g_s, HRR_INT__k_h_g_s);
1668
1669 // form INT__k_h_h_s
1670 ostei_general_hrr_J(7, 5, 5, 0, hAB, HRR_INT__l_g_h_s, HRR_INT__k_g_h_s, HRR_INT__k_h_h_s);
1671
1672 // form INT__k_h_i_s
1673 ostei_general_hrr_J(7, 5, 6, 0, hAB, HRR_INT__l_g_i_s, HRR_INT__k_g_i_s, HRR_INT__k_h_i_s);
1674
1675 // form INT__k_h_k_s
1676 ostei_general_hrr_J(7, 5, 7, 0, hAB, HRR_INT__l_g_k_s, HRR_INT__k_g_k_s, HRR_INT__k_h_k_s);
1677
1678 // form INT__l_h_g_s
1679 ostei_general_hrr_J(8, 5, 4, 0, hAB, HRR_INT__m_g_g_s, HRR_INT__l_g_g_s, HRR_INT__l_h_g_s);
1680
1681 // form INT__l_h_h_s
1682 ostei_general_hrr_J(8, 5, 5, 0, hAB, HRR_INT__m_g_h_s, HRR_INT__l_g_h_s, HRR_INT__l_h_h_s);
1683
1684 // form INT__l_h_i_s
1685 ostei_general_hrr_J(8, 5, 6, 0, hAB, HRR_INT__m_g_i_s, HRR_INT__l_g_i_s, HRR_INT__l_h_i_s);
1686
1687 // form INT__l_h_k_s
1688 ostei_general_hrr_J(8, 5, 7, 0, hAB, HRR_INT__m_g_k_s, HRR_INT__l_g_k_s, HRR_INT__l_h_k_s);
1689
1690 // form INT__m_h_g_s
1691 ostei_general_hrr_J(9, 5, 4, 0, hAB, HRR_INT__n_g_g_s, HRR_INT__m_g_g_s, HRR_INT__m_h_g_s);
1692
1693 // form INT__m_h_h_s
1694 ostei_general_hrr_J(9, 5, 5, 0, hAB, HRR_INT__n_g_h_s, HRR_INT__m_g_h_s, HRR_INT__m_h_h_s);
1695
1696 // form INT__m_h_i_s
1697 ostei_general_hrr_J(9, 5, 6, 0, hAB, HRR_INT__n_g_i_s, HRR_INT__m_g_i_s, HRR_INT__m_h_i_s);
1698
1699 // form INT__m_h_k_s
1700 ostei_general_hrr_J(9, 5, 7, 0, hAB, HRR_INT__n_g_k_s, HRR_INT__m_g_k_s, HRR_INT__m_h_k_s);
1701
1702 // form INT__k_i_g_s
1703 ostei_general_hrr_J(7, 6, 4, 0, hAB, HRR_INT__l_h_g_s, HRR_INT__k_h_g_s, HRR_INT__k_i_g_s);
1704
1705 // form INT__k_i_h_s
1706 ostei_general_hrr_J(7, 6, 5, 0, hAB, HRR_INT__l_h_h_s, HRR_INT__k_h_h_s, HRR_INT__k_i_h_s);
1707
1708 // form INT__k_i_i_s
1709 ostei_general_hrr_J(7, 6, 6, 0, hAB, HRR_INT__l_h_i_s, HRR_INT__k_h_i_s, HRR_INT__k_i_i_s);
1710
1711 // form INT__k_i_k_s
1712 ostei_general_hrr_J(7, 6, 7, 0, hAB, HRR_INT__l_h_k_s, HRR_INT__k_h_k_s, HRR_INT__k_i_k_s);
1713
1714 // form INT__l_i_g_s
1715 ostei_general_hrr_J(8, 6, 4, 0, hAB, HRR_INT__m_h_g_s, HRR_INT__l_h_g_s, HRR_INT__l_i_g_s);
1716
1717 // form INT__l_i_h_s
1718 ostei_general_hrr_J(8, 6, 5, 0, hAB, HRR_INT__m_h_h_s, HRR_INT__l_h_h_s, HRR_INT__l_i_h_s);
1719
1720 // form INT__l_i_i_s
1721 ostei_general_hrr_J(8, 6, 6, 0, hAB, HRR_INT__m_h_i_s, HRR_INT__l_h_i_s, HRR_INT__l_i_i_s);
1722
1723 // form INT__l_i_k_s
1724 ostei_general_hrr_J(8, 6, 7, 0, hAB, HRR_INT__m_h_k_s, HRR_INT__l_h_k_s, HRR_INT__l_i_k_s);
1725
1726 // form INT__k_k_g_s
1727 ostei_general_hrr_J(7, 7, 4, 0, hAB, HRR_INT__l_i_g_s, HRR_INT__k_i_g_s, HRR_INT__k_k_g_s);
1728
1729 // form INT__k_k_h_s
1730 ostei_general_hrr_J(7, 7, 5, 0, hAB, HRR_INT__l_i_h_s, HRR_INT__k_i_h_s, HRR_INT__k_k_h_s);
1731
1732 // form INT__k_k_i_s
1733 ostei_general_hrr_J(7, 7, 6, 0, hAB, HRR_INT__l_i_i_s, HRR_INT__k_i_i_s, HRR_INT__k_k_i_s);
1734
1735 // form INT__k_k_k_s
1736 ostei_general_hrr_J(7, 7, 7, 0, hAB, HRR_INT__l_i_k_s, HRR_INT__k_i_k_s, HRR_INT__k_k_k_s);
1737
1738 // form INT__k_k_g_p
1739 HRR_L_g_p(
1740 HRR_INT__k_k_g_p,
1741 HRR_INT__k_k_g_s,
1742 HRR_INT__k_k_h_s,
1743 hCD, 1296);
1744
1745 // form INT__k_k_h_p
1746 ostei_general_hrr_L(7, 7, 5, 1, hCD, HRR_INT__k_k_i_s, HRR_INT__k_k_h_s, HRR_INT__k_k_h_p);
1747
1748 // form INT__k_k_i_p
1749 ostei_general_hrr_L(7, 7, 6, 1, hCD, HRR_INT__k_k_k_s, HRR_INT__k_k_i_s, HRR_INT__k_k_i_p);
1750
1751 // form INT__k_k_g_d
1752 ostei_general_hrr_L(7, 7, 4, 2, hCD, HRR_INT__k_k_h_p, HRR_INT__k_k_g_p, HRR_INT__k_k_g_d);
1753
1754 // form INT__k_k_h_d
1755 ostei_general_hrr_L(7, 7, 5, 2, hCD, HRR_INT__k_k_i_p, HRR_INT__k_k_h_p, HRR_INT__k_k_h_d);
1756
1757 // form INT__k_k_g_f
1758 ostei_general_hrr_L(7, 7, 4, 3, hCD, HRR_INT__k_k_h_d, HRR_INT__k_k_g_d, HRR_INT__k_k_g_f);
1759
1760
1761 } // close HRR loop
1762
1763
1764 } // close loop cdbatch
1765
1766 istart = iend;
1767 } // close loop over ab
1768
1769 return P.nshell12_clip * Q.nshell12_clip;
1770 }
1771
ostei_k_k_f_g(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__k_k_f_g)1772 int ostei_k_k_f_g(struct simint_multi_shellpair const P,
1773 struct simint_multi_shellpair const Q,
1774 double screen_tol,
1775 double * const restrict work,
1776 double * const restrict INT__k_k_f_g)
1777 {
1778 double Q_AB[3*Q.nshell12];
1779 struct simint_multi_shellpair Q_tmp = Q;
1780 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1781 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1782 Q_tmp.AB_x = Q_AB;
1783 Q_tmp.AB_y = Q_AB + Q.nshell12;
1784 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1785
1786 for(int i = 0; i < Q.nshell12; i++)
1787 {
1788 Q_tmp.AB_x[i] = -Q.AB_x[i];
1789 Q_tmp.AB_y[i] = -Q.AB_y[i];
1790 Q_tmp.AB_z[i] = -Q.AB_z[i];
1791 }
1792
1793 int ret = ostei_k_k_g_f(P, Q_tmp, screen_tol, work, INT__k_k_f_g);
1794 double buffer[194400] SIMINT_ALIGN_ARRAY_DBL;
1795
1796 for(int q = 0; q < ret; q++)
1797 {
1798 int idx = 0;
1799 for(int a = 0; a < 36; ++a)
1800 for(int b = 0; b < 36; ++b)
1801 for(int c = 0; c < 10; ++c)
1802 for(int d = 0; d < 15; ++d)
1803 buffer[idx++] = INT__k_k_f_g[q*194400+a*5400+b*150+d*10+c];
1804
1805 memcpy(INT__k_k_f_g+q*194400, buffer, 194400*sizeof(double));
1806 }
1807
1808 return ret;
1809 }
1810
1811