1 #include "simint/boys/boys.h"
2 #include "simint/ostei/gen/ostei_generated.h"
3 #include "simint/vectorization/vectorization.h"
4 #include <math.h>
5 #include <string.h>
6
7
ostei_i_g_k_f(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_g_k_f)8 int ostei_i_g_k_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__i_g_k_f)
13 {
14
15 SIMINT_ASSUME_ALIGN_DBL(work);
16 SIMINT_ASSUME_ALIGN_DBL(INT__i_g_k_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__i_s_k_s = work + (SIMINT_NSHELL_SIMD * 0);
30 double * const INT__i_s_l_s = work + (SIMINT_NSHELL_SIMD * 1008);
31 double * const INT__i_s_m_s = work + (SIMINT_NSHELL_SIMD * 2268);
32 double * const INT__i_s_n_s = work + (SIMINT_NSHELL_SIMD * 3808);
33 double * const INT__k_s_k_s = work + (SIMINT_NSHELL_SIMD * 5656);
34 double * const INT__k_s_l_s = work + (SIMINT_NSHELL_SIMD * 6952);
35 double * const INT__k_s_m_s = work + (SIMINT_NSHELL_SIMD * 8572);
36 double * const INT__k_s_n_s = work + (SIMINT_NSHELL_SIMD * 10552);
37 double * const INT__l_s_k_s = work + (SIMINT_NSHELL_SIMD * 12928);
38 double * const INT__l_s_l_s = work + (SIMINT_NSHELL_SIMD * 14548);
39 double * const INT__l_s_m_s = work + (SIMINT_NSHELL_SIMD * 16573);
40 double * const INT__l_s_n_s = work + (SIMINT_NSHELL_SIMD * 19048);
41 double * const INT__m_s_k_s = work + (SIMINT_NSHELL_SIMD * 22018);
42 double * const INT__m_s_l_s = work + (SIMINT_NSHELL_SIMD * 23998);
43 double * const INT__m_s_m_s = work + (SIMINT_NSHELL_SIMD * 26473);
44 double * const INT__m_s_n_s = work + (SIMINT_NSHELL_SIMD * 29498);
45 double * const INT__n_s_k_s = work + (SIMINT_NSHELL_SIMD * 33128);
46 double * const INT__n_s_l_s = work + (SIMINT_NSHELL_SIMD * 35504);
47 double * const INT__n_s_m_s = work + (SIMINT_NSHELL_SIMD * 38474);
48 double * const INT__n_s_n_s = work + (SIMINT_NSHELL_SIMD * 42104);
49 SIMINT_DBLTYPE * const primwork = (SIMINT_DBLTYPE *)(work + SIMINT_NSHELL_SIMD*46460);
50 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_s_s = primwork + 0;
51 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_p_s = primwork + 21;
52 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_d_s = primwork + 51;
53 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_f_s = primwork + 105;
54 SIMINT_DBLTYPE * const restrict PRIM_INT__s_s_g_s = primwork + 185;
55 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_s_s = primwork + 290;
56 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_p_s = primwork + 350;
57 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_d_s = primwork + 440;
58 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_f_s = primwork + 602;
59 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_g_s = primwork + 842;
60 SIMINT_DBLTYPE * const restrict PRIM_INT__p_s_h_s = primwork + 1157;
61 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_s_s = primwork + 1535;
62 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_p_s = primwork + 1649;
63 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_d_s = primwork + 1829;
64 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_f_s = primwork + 2153;
65 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_g_s = primwork + 2633;
66 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_h_s = primwork + 3263;
67 SIMINT_DBLTYPE * const restrict PRIM_INT__d_s_i_s = primwork + 4019;
68 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_s_s = primwork + 4859;
69 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_p_s = primwork + 5039;
70 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_d_s = primwork + 5339;
71 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_f_s = primwork + 5879;
72 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_g_s = primwork + 6679;
73 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_h_s = primwork + 7729;
74 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_i_s = primwork + 8989;
75 SIMINT_DBLTYPE * const restrict PRIM_INT__f_s_k_s = primwork + 10389;
76 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_s_s = primwork + 11829;
77 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_p_s = primwork + 12084;
78 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_d_s = primwork + 12534;
79 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_f_s = primwork + 13344;
80 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_g_s = primwork + 14544;
81 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_h_s = primwork + 16119;
82 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_i_s = primwork + 18009;
83 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_k_s = primwork + 20109;
84 SIMINT_DBLTYPE * const restrict PRIM_INT__g_s_l_s = primwork + 22269;
85 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_s_s = primwork + 24294;
86 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_p_s = primwork + 24630;
87 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_d_s = primwork + 25260;
88 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_f_s = primwork + 26394;
89 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_g_s = primwork + 28074;
90 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_h_s = primwork + 30279;
91 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_i_s = primwork + 32925;
92 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_k_s = primwork + 35865;
93 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_l_s = primwork + 38889;
94 SIMINT_DBLTYPE * const restrict PRIM_INT__h_s_m_s = primwork + 41724;
95 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_s_s = primwork + 44034;
96 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_p_s = primwork + 44454;
97 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_d_s = primwork + 45294;
98 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_f_s = primwork + 46806;
99 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_g_s = primwork + 49046;
100 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_h_s = primwork + 51986;
101 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_i_s = primwork + 55514;
102 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_k_s = primwork + 59434;
103 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_l_s = primwork + 63466;
104 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_m_s = primwork + 67246;
105 SIMINT_DBLTYPE * const restrict PRIM_INT__i_s_n_s = primwork + 70326;
106 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_s_s = primwork + 72174;
107 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_p_s = primwork + 72678;
108 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_d_s = primwork + 73758;
109 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_f_s = primwork + 75702;
110 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_g_s = primwork + 78582;
111 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_h_s = primwork + 82362;
112 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_i_s = primwork + 86898;
113 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_k_s = primwork + 91938;
114 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_l_s = primwork + 97122;
115 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_m_s = primwork + 101982;
116 SIMINT_DBLTYPE * const restrict PRIM_INT__k_s_n_s = primwork + 105942;
117 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_s_s = primwork + 108318;
118 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_p_s = primwork + 108903;
119 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_d_s = primwork + 110253;
120 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_f_s = primwork + 112683;
121 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_g_s = primwork + 116283;
122 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_h_s = primwork + 121008;
123 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_i_s = primwork + 126678;
124 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_k_s = primwork + 132978;
125 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_l_s = primwork + 139458;
126 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_m_s = primwork + 145533;
127 SIMINT_DBLTYPE * const restrict PRIM_INT__l_s_n_s = primwork + 150483;
128 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_s_s = primwork + 153453;
129 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_p_s = primwork + 154113;
130 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_d_s = primwork + 155763;
131 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_f_s = primwork + 158733;
132 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_g_s = primwork + 163133;
133 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_h_s = primwork + 168908;
134 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_i_s = primwork + 175838;
135 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_k_s = primwork + 183538;
136 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_l_s = primwork + 191458;
137 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_m_s = primwork + 198883;
138 SIMINT_DBLTYPE * const restrict PRIM_INT__m_s_n_s = primwork + 204933;
139 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_s_s = primwork + 208563;
140 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_p_s = primwork + 209289;
141 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_d_s = primwork + 211269;
142 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_f_s = primwork + 214833;
143 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_g_s = primwork + 220113;
144 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_h_s = primwork + 227043;
145 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_i_s = primwork + 235359;
146 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_k_s = primwork + 244599;
147 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_l_s = primwork + 254103;
148 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_m_s = primwork + 263013;
149 SIMINT_DBLTYPE * const restrict PRIM_INT__n_s_n_s = primwork + 270273;
150 double * const hrrwork = (double *)(primwork + 274629);
151 double * const HRR_INT__i_p_k_s = hrrwork + 0;
152 double * const HRR_INT__i_p_l_s = hrrwork + 3024;
153 double * const HRR_INT__i_p_m_s = hrrwork + 6804;
154 double * const HRR_INT__i_p_n_s = hrrwork + 11424;
155 double * const HRR_INT__i_d_k_s = hrrwork + 16968;
156 double * const HRR_INT__i_d_l_s = hrrwork + 23016;
157 double * const HRR_INT__i_d_m_s = hrrwork + 30576;
158 double * const HRR_INT__i_d_n_s = hrrwork + 39816;
159 double * const HRR_INT__i_f_k_s = hrrwork + 50904;
160 double * const HRR_INT__i_f_l_s = hrrwork + 60984;
161 double * const HRR_INT__i_f_m_s = hrrwork + 73584;
162 double * const HRR_INT__i_f_n_s = hrrwork + 88984;
163 double * const HRR_INT__i_g_k_s = hrrwork + 107464;
164 double * const HRR_INT__i_g_k_p = hrrwork + 122584;
165 double * const HRR_INT__i_g_k_d = hrrwork + 167944;
166 double * const HRR_INT__i_g_l_s = hrrwork + 258664;
167 double * const HRR_INT__i_g_l_p = hrrwork + 277564;
168 double * const HRR_INT__i_g_l_d = hrrwork + 334264;
169 double * const HRR_INT__i_g_m_s = hrrwork + 447664;
170 double * const HRR_INT__i_g_m_p = hrrwork + 470764;
171 double * const HRR_INT__i_g_n_s = hrrwork + 540064;
172 double * const HRR_INT__k_p_k_s = hrrwork + 567784;
173 double * const HRR_INT__k_p_l_s = hrrwork + 571672;
174 double * const HRR_INT__k_p_m_s = hrrwork + 576532;
175 double * const HRR_INT__k_p_n_s = hrrwork + 582472;
176 double * const HRR_INT__k_d_k_s = hrrwork + 589600;
177 double * const HRR_INT__k_d_l_s = hrrwork + 597376;
178 double * const HRR_INT__k_d_m_s = hrrwork + 607096;
179 double * const HRR_INT__k_d_n_s = hrrwork + 618976;
180 double * const HRR_INT__k_f_k_s = hrrwork + 633232;
181 double * const HRR_INT__k_f_l_s = hrrwork + 646192;
182 double * const HRR_INT__k_f_m_s = hrrwork + 662392;
183 double * const HRR_INT__k_f_n_s = hrrwork + 682192;
184 double * const HRR_INT__l_p_k_s = hrrwork + 705952;
185 double * const HRR_INT__l_p_l_s = hrrwork + 710812;
186 double * const HRR_INT__l_p_m_s = hrrwork + 716887;
187 double * const HRR_INT__l_p_n_s = hrrwork + 724312;
188 double * const HRR_INT__l_d_k_s = hrrwork + 733222;
189 double * const HRR_INT__l_d_l_s = hrrwork + 742942;
190 double * const HRR_INT__l_d_m_s = hrrwork + 755092;
191 double * const HRR_INT__l_d_n_s = hrrwork + 769942;
192 double * const HRR_INT__m_p_k_s = hrrwork + 787762;
193 double * const HRR_INT__m_p_l_s = hrrwork + 793702;
194 double * const HRR_INT__m_p_m_s = hrrwork + 801127;
195 double * const HRR_INT__m_p_n_s = hrrwork + 810202;
196
197
198 // Create constants
199 const SIMINT_DBLTYPE const_1 = SIMINT_DBLSET1(1);
200 const SIMINT_DBLTYPE const_10 = SIMINT_DBLSET1(10);
201 const SIMINT_DBLTYPE const_2 = SIMINT_DBLSET1(2);
202 const SIMINT_DBLTYPE const_3 = SIMINT_DBLSET1(3);
203 const SIMINT_DBLTYPE const_4 = SIMINT_DBLSET1(4);
204 const SIMINT_DBLTYPE const_5 = SIMINT_DBLSET1(5);
205 const SIMINT_DBLTYPE const_6 = SIMINT_DBLSET1(6);
206 const SIMINT_DBLTYPE const_7 = SIMINT_DBLSET1(7);
207 const SIMINT_DBLTYPE const_8 = SIMINT_DBLSET1(8);
208 const SIMINT_DBLTYPE const_9 = SIMINT_DBLSET1(9);
209 const SIMINT_DBLTYPE one_half = SIMINT_DBLSET1(0.5);
210
211
212 ////////////////////////////////////////
213 // Loop over shells and primitives
214 ////////////////////////////////////////
215
216 real_abcd = 0;
217 istart = 0;
218 for(ab = 0; ab < P.nshell12_clip; ++ab)
219 {
220 const int iend = istart + P.nprim12[ab];
221
222 cd = 0;
223 jstart = 0;
224
225 for(cd = 0; cd < Q.nshell12_clip; cd += SIMINT_NSHELL_SIMD)
226 {
227 const int nshellbatch = ((cd + SIMINT_NSHELL_SIMD) > Q.nshell12_clip) ? Q.nshell12_clip - cd : SIMINT_NSHELL_SIMD;
228 int jend = jstart;
229 for(i = 0; i < nshellbatch; i++)
230 jend += Q.nprim12[cd+i];
231
232 // Clear the beginning of the workspace (where we are accumulating integrals)
233 memset(work, 0, SIMINT_NSHELL_SIMD * 46460 * sizeof(double));
234 abcd = 0;
235
236
237 for(i = istart; i < iend; ++i)
238 {
239 SIMINT_DBLTYPE bra_screen_max; // only used if check_screen
240
241 if(check_screen)
242 {
243 // Skip this whole thing if always insignificant
244 if((P.screen[i] * Q.screen_max) < screen_tol)
245 continue;
246 bra_screen_max = SIMINT_DBLSET1(P.screen[i]);
247 }
248
249 icd = 0;
250 iprimcd = 0;
251 nprim_icd = Q.nprim12[cd];
252 double * restrict PRIM_PTR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
253 double * restrict PRIM_PTR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
254 double * restrict PRIM_PTR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
255 double * restrict PRIM_PTR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
256 double * restrict PRIM_PTR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
257 double * restrict PRIM_PTR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
258 double * restrict PRIM_PTR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
259 double * restrict PRIM_PTR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
260 double * restrict PRIM_PTR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
261 double * restrict PRIM_PTR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
262 double * restrict PRIM_PTR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
263 double * restrict PRIM_PTR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
264 double * restrict PRIM_PTR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
265 double * restrict PRIM_PTR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
266 double * restrict PRIM_PTR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
267 double * restrict PRIM_PTR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
268 double * restrict PRIM_PTR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
269 double * restrict PRIM_PTR_INT__n_s_l_s = INT__n_s_l_s + abcd * 2970;
270 double * restrict PRIM_PTR_INT__n_s_m_s = INT__n_s_m_s + abcd * 3630;
271 double * restrict PRIM_PTR_INT__n_s_n_s = INT__n_s_n_s + abcd * 4356;
272
273
274
275 // Load these one per loop over i
276 const SIMINT_DBLTYPE P_alpha = SIMINT_DBLSET1(P.alpha[i]);
277 const SIMINT_DBLTYPE P_prefac = SIMINT_DBLSET1(P.prefac[i]);
278 const SIMINT_DBLTYPE Pxyz[3] = { SIMINT_DBLSET1(P.x[i]), SIMINT_DBLSET1(P.y[i]), SIMINT_DBLSET1(P.z[i]) };
279
280 const SIMINT_DBLTYPE P_PA[3] = { SIMINT_DBLSET1(P.PA_x[i]), SIMINT_DBLSET1(P.PA_y[i]), SIMINT_DBLSET1(P.PA_z[i]) };
281
282 for(j = jstart; j < jend; j += SIMINT_SIMD_LEN)
283 {
284 // calculate the shell offsets
285 // these are the offset from the shell pointed to by cd
286 // for each element
287 int shelloffsets[SIMINT_SIMD_LEN] = {0};
288 int lastoffset = 0;
289 const int nlane = ( ((j + SIMINT_SIMD_LEN) < jend) ? SIMINT_SIMD_LEN : (jend - j));
290
291 if((iprimcd + SIMINT_SIMD_LEN) >= nprim_icd)
292 {
293 // Handle if the first element of the vector is a new shell
294 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
295 {
296 nprim_icd += Q.nprim12[cd + (++icd)];
297 PRIM_PTR_INT__i_s_k_s += 1008;
298 PRIM_PTR_INT__i_s_l_s += 1260;
299 PRIM_PTR_INT__i_s_m_s += 1540;
300 PRIM_PTR_INT__i_s_n_s += 1848;
301 PRIM_PTR_INT__k_s_k_s += 1296;
302 PRIM_PTR_INT__k_s_l_s += 1620;
303 PRIM_PTR_INT__k_s_m_s += 1980;
304 PRIM_PTR_INT__k_s_n_s += 2376;
305 PRIM_PTR_INT__l_s_k_s += 1620;
306 PRIM_PTR_INT__l_s_l_s += 2025;
307 PRIM_PTR_INT__l_s_m_s += 2475;
308 PRIM_PTR_INT__l_s_n_s += 2970;
309 PRIM_PTR_INT__m_s_k_s += 1980;
310 PRIM_PTR_INT__m_s_l_s += 2475;
311 PRIM_PTR_INT__m_s_m_s += 3025;
312 PRIM_PTR_INT__m_s_n_s += 3630;
313 PRIM_PTR_INT__n_s_k_s += 2376;
314 PRIM_PTR_INT__n_s_l_s += 2970;
315 PRIM_PTR_INT__n_s_m_s += 3630;
316 PRIM_PTR_INT__n_s_n_s += 4356;
317 }
318 iprimcd++;
319 for(n = 1; n < SIMINT_SIMD_LEN; ++n)
320 {
321 if(iprimcd >= nprim_icd && ((icd+1) < nshellbatch))
322 {
323 shelloffsets[n] = shelloffsets[n-1] + 1;
324 lastoffset++;
325 nprim_icd += Q.nprim12[cd + (++icd)];
326 }
327 else
328 shelloffsets[n] = shelloffsets[n-1];
329 iprimcd++;
330 }
331 }
332 else
333 iprimcd += SIMINT_SIMD_LEN;
334
335 // Do we have to compute this vector (or has it been screened out)?
336 // (not_screened != 0 means we have to do this vector)
337 if(check_screen)
338 {
339 const double vmax = vector_max(SIMINT_MUL(bra_screen_max, SIMINT_DBLLOAD(Q.screen, j)));
340 if(vmax < screen_tol)
341 {
342 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
343 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
344 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
345 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
346 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
347 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
348 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
349 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
350 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
351 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
352 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
353 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
354 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
355 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
356 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
357 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
358 PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
359 PRIM_PTR_INT__n_s_l_s += lastoffset*2970;
360 PRIM_PTR_INT__n_s_m_s += lastoffset*3630;
361 PRIM_PTR_INT__n_s_n_s += lastoffset*4356;
362 continue;
363 }
364 }
365
366 const SIMINT_DBLTYPE Q_alpha = SIMINT_DBLLOAD(Q.alpha, j);
367 const SIMINT_DBLTYPE PQalpha_mul = SIMINT_MUL(P_alpha, Q_alpha);
368 const SIMINT_DBLTYPE PQalpha_sum = SIMINT_ADD(P_alpha, Q_alpha);
369 const SIMINT_DBLTYPE one_over_PQalpha_sum = SIMINT_DIV(const_1, PQalpha_sum);
370
371
372 /* construct R2 = (Px - Qx)**2 + (Py - Qy)**2 + (Pz -Qz)**2 */
373 SIMINT_DBLTYPE PQ[3];
374 PQ[0] = SIMINT_SUB(Pxyz[0], SIMINT_DBLLOAD(Q.x, j));
375 PQ[1] = SIMINT_SUB(Pxyz[1], SIMINT_DBLLOAD(Q.y, j));
376 PQ[2] = SIMINT_SUB(Pxyz[2], SIMINT_DBLLOAD(Q.z, j));
377 SIMINT_DBLTYPE R2 = SIMINT_MUL(PQ[0], PQ[0]);
378 R2 = SIMINT_FMADD(PQ[1], PQ[1], R2);
379 R2 = SIMINT_FMADD(PQ[2], PQ[2], R2);
380
381 const SIMINT_DBLTYPE alpha = SIMINT_MUL(PQalpha_mul, one_over_PQalpha_sum); // alpha from MEST
382 const SIMINT_DBLTYPE one_over_p = SIMINT_DIV(const_1, P_alpha);
383 const SIMINT_DBLTYPE one_over_q = SIMINT_DIV(const_1, Q_alpha);
384 const SIMINT_DBLTYPE one_over_2p = SIMINT_MUL(one_half, one_over_p);
385 const SIMINT_DBLTYPE one_over_2q = SIMINT_MUL(one_half, one_over_q);
386 const SIMINT_DBLTYPE one_over_2pq = SIMINT_MUL(one_half, one_over_PQalpha_sum);
387 const SIMINT_DBLTYPE Q_PA[3] = { SIMINT_DBLLOAD(Q.PA_x, j), SIMINT_DBLLOAD(Q.PA_y, j), SIMINT_DBLLOAD(Q.PA_z, j) };
388
389 // NOTE: Minus sign!
390 const SIMINT_DBLTYPE a_over_p = SIMINT_MUL(SIMINT_NEG(alpha), one_over_p);
391 SIMINT_DBLTYPE aop_PQ[3];
392 aop_PQ[0] = SIMINT_MUL(a_over_p, PQ[0]);
393 aop_PQ[1] = SIMINT_MUL(a_over_p, PQ[1]);
394 aop_PQ[2] = SIMINT_MUL(a_over_p, PQ[2]);
395
396 SIMINT_DBLTYPE a_over_q = SIMINT_MUL(alpha, one_over_q);
397 SIMINT_DBLTYPE aoq_PQ[3];
398 aoq_PQ[0] = SIMINT_MUL(a_over_q, PQ[0]);
399 aoq_PQ[1] = SIMINT_MUL(a_over_q, PQ[1]);
400 aoq_PQ[2] = SIMINT_MUL(a_over_q, PQ[2]);
401 // Put a minus sign here so we don't have to in RR routines
402 a_over_q = SIMINT_NEG(a_over_q);
403
404
405 //////////////////////////////////////////////
406 // Fjt function section
407 // Maximum v value: 20
408 //////////////////////////////////////////////
409 // The parameter to the Fjt function
410 const SIMINT_DBLTYPE F_x = SIMINT_MUL(R2, alpha);
411
412
413 const SIMINT_DBLTYPE Q_prefac = mask_load(nlane, Q.prefac + j);
414
415
416 boys_F_split(PRIM_INT__s_s_s_s, F_x, 20);
417 SIMINT_DBLTYPE prefac = SIMINT_SQRT(one_over_PQalpha_sum);
418 prefac = SIMINT_MUL(SIMINT_MUL(P_prefac, Q_prefac), prefac);
419 for(n = 0; n <= 20; n++)
420 PRIM_INT__s_s_s_s[n] = SIMINT_MUL(PRIM_INT__s_s_s_s[n], prefac);
421
422 //////////////////////////////////////////////
423 // Primitive integrals: Vertical recurrance
424 //////////////////////////////////////////////
425
426 const SIMINT_DBLTYPE vrr_const_1_over_2p = one_over_2p;
427 const SIMINT_DBLTYPE vrr_const_2_over_2p = SIMINT_MUL(const_2, one_over_2p);
428 const SIMINT_DBLTYPE vrr_const_3_over_2p = SIMINT_MUL(const_3, one_over_2p);
429 const SIMINT_DBLTYPE vrr_const_4_over_2p = SIMINT_MUL(const_4, one_over_2p);
430 const SIMINT_DBLTYPE vrr_const_5_over_2p = SIMINT_MUL(const_5, one_over_2p);
431 const SIMINT_DBLTYPE vrr_const_6_over_2p = SIMINT_MUL(const_6, one_over_2p);
432 const SIMINT_DBLTYPE vrr_const_7_over_2p = SIMINT_MUL(const_7, one_over_2p);
433 const SIMINT_DBLTYPE vrr_const_8_over_2p = SIMINT_MUL(const_8, one_over_2p);
434 const SIMINT_DBLTYPE vrr_const_9_over_2p = SIMINT_MUL(const_9, one_over_2p);
435 const SIMINT_DBLTYPE vrr_const_1_over_2q = one_over_2q;
436 const SIMINT_DBLTYPE vrr_const_2_over_2q = SIMINT_MUL(const_2, one_over_2q);
437 const SIMINT_DBLTYPE vrr_const_3_over_2q = SIMINT_MUL(const_3, one_over_2q);
438 const SIMINT_DBLTYPE vrr_const_4_over_2q = SIMINT_MUL(const_4, one_over_2q);
439 const SIMINT_DBLTYPE vrr_const_5_over_2q = SIMINT_MUL(const_5, one_over_2q);
440 const SIMINT_DBLTYPE vrr_const_6_over_2q = SIMINT_MUL(const_6, one_over_2q);
441 const SIMINT_DBLTYPE vrr_const_7_over_2q = SIMINT_MUL(const_7, one_over_2q);
442 const SIMINT_DBLTYPE vrr_const_8_over_2q = SIMINT_MUL(const_8, one_over_2q);
443 const SIMINT_DBLTYPE vrr_const_9_over_2q = SIMINT_MUL(const_9, one_over_2q);
444 const SIMINT_DBLTYPE vrr_const_1_over_2pq = one_over_2pq;
445 const SIMINT_DBLTYPE vrr_const_2_over_2pq = SIMINT_MUL(const_2, one_over_2pq);
446 const SIMINT_DBLTYPE vrr_const_3_over_2pq = SIMINT_MUL(const_3, one_over_2pq);
447 const SIMINT_DBLTYPE vrr_const_4_over_2pq = SIMINT_MUL(const_4, one_over_2pq);
448 const SIMINT_DBLTYPE vrr_const_5_over_2pq = SIMINT_MUL(const_5, one_over_2pq);
449 const SIMINT_DBLTYPE vrr_const_6_over_2pq = SIMINT_MUL(const_6, one_over_2pq);
450 const SIMINT_DBLTYPE vrr_const_7_over_2pq = SIMINT_MUL(const_7, one_over_2pq);
451 const SIMINT_DBLTYPE vrr_const_8_over_2pq = SIMINT_MUL(const_8, one_over_2pq);
452 const SIMINT_DBLTYPE vrr_const_9_over_2pq = SIMINT_MUL(const_9, one_over_2pq);
453 const SIMINT_DBLTYPE vrr_const_10_over_2pq = SIMINT_MUL(const_10, one_over_2pq);
454
455
456
457 // Forming PRIM_INT__p_s_s_s[20 * 3];
458 for(n = 0; n < 20; ++n) // loop over orders of auxiliary function
459 {
460
461 PRIM_INT__p_s_s_s[n * 3 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
462 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]);
463
464 PRIM_INT__p_s_s_s[n * 3 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
465 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]);
466
467 PRIM_INT__p_s_s_s[n * 3 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
468 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]);
469
470 }
471
472
473
474 // Forming PRIM_INT__d_s_s_s[19 * 6];
475 for(n = 0; n < 19; ++n) // loop over orders of auxiliary function
476 {
477
478 PRIM_INT__d_s_s_s[n * 6 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
479 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]);
480 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]);
481
482 PRIM_INT__d_s_s_s[n * 6 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
483 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]);
484
485 PRIM_INT__d_s_s_s[n * 6 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
486 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]);
487
488 PRIM_INT__d_s_s_s[n * 6 + 3] = SIMINT_MUL(P_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
489 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]);
490 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]);
491
492 PRIM_INT__d_s_s_s[n * 6 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
493 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]);
494
495 PRIM_INT__d_s_s_s[n * 6 + 5] = SIMINT_MUL(P_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
496 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]);
497 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]);
498
499 }
500
501
502
503 // Forming PRIM_INT__f_s_s_s[18 * 10];
504 for(n = 0; n < 18; ++n) // loop over orders of auxiliary function
505 {
506
507 PRIM_INT__f_s_s_s[n * 10 + 0] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
508 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]);
509 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]);
510
511 PRIM_INT__f_s_s_s[n * 10 + 1] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
512 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]);
513
514 PRIM_INT__f_s_s_s[n * 10 + 2] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
515 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]);
516
517 PRIM_INT__f_s_s_s[n * 10 + 3] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
518 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]);
519
520 PRIM_INT__f_s_s_s[n * 10 + 4] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
521 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]);
522
523 PRIM_INT__f_s_s_s[n * 10 + 5] = SIMINT_MUL(P_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
524 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]);
525
526 PRIM_INT__f_s_s_s[n * 10 + 6] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
527 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]);
528 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]);
529
530 PRIM_INT__f_s_s_s[n * 10 + 7] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
531 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]);
532
533 PRIM_INT__f_s_s_s[n * 10 + 8] = SIMINT_MUL(P_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
534 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]);
535
536 PRIM_INT__f_s_s_s[n * 10 + 9] = SIMINT_MUL(P_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
537 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]);
538 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]);
539
540 }
541
542
543 VRR_I_g_s_s_s(
544 PRIM_INT__g_s_s_s,
545 PRIM_INT__f_s_s_s,
546 PRIM_INT__d_s_s_s,
547 P_PA,
548 a_over_p,
549 aop_PQ,
550 one_over_2p,
551 17);
552
553
554 VRR_I_h_s_s_s(
555 PRIM_INT__h_s_s_s,
556 PRIM_INT__g_s_s_s,
557 PRIM_INT__f_s_s_s,
558 P_PA,
559 a_over_p,
560 aop_PQ,
561 one_over_2p,
562 16);
563
564
565 ostei_general_vrr1_I(6, 15,
566 one_over_2p, a_over_p, aop_PQ, P_PA,
567 PRIM_INT__h_s_s_s, PRIM_INT__g_s_s_s, PRIM_INT__i_s_s_s);
568
569
570 ostei_general_vrr_K(6, 0, 1, 0, 10,
571 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
572 PRIM_INT__i_s_s_s, NULL, NULL, PRIM_INT__h_s_s_s, NULL, PRIM_INT__i_s_p_s);
573
574
575 ostei_general_vrr_K(5, 0, 1, 0, 10,
576 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
577 PRIM_INT__h_s_s_s, NULL, NULL, PRIM_INT__g_s_s_s, NULL, PRIM_INT__h_s_p_s);
578
579
580 ostei_general_vrr_K(6, 0, 2, 0, 9,
581 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
582 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);
583
584
585 VRR_K_g_s_p_s(
586 PRIM_INT__g_s_p_s,
587 PRIM_INT__g_s_s_s,
588 PRIM_INT__f_s_s_s,
589 Q_PA,
590 aoq_PQ,
591 one_over_2pq,
592 10);
593
594
595 ostei_general_vrr_K(5, 0, 2, 0, 9,
596 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
597 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);
598
599
600 ostei_general_vrr_K(6, 0, 3, 0, 8,
601 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
602 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);
603
604
605 VRR_K_f_s_p_s(
606 PRIM_INT__f_s_p_s,
607 PRIM_INT__f_s_s_s,
608 PRIM_INT__d_s_s_s,
609 Q_PA,
610 aoq_PQ,
611 one_over_2pq,
612 10);
613
614
615 ostei_general_vrr_K(4, 0, 2, 0, 9,
616 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
617 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);
618
619
620 ostei_general_vrr_K(5, 0, 3, 0, 8,
621 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
622 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);
623
624
625 ostei_general_vrr_K(6, 0, 4, 0, 7,
626 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
627 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);
628
629
630
631 // Forming PRIM_INT__d_s_p_s[10 * 18];
632 for(n = 0; n < 10; ++n) // loop over orders of auxiliary function
633 {
634
635 PRIM_INT__d_s_p_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 0]);
636 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]);
637 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]);
638
639 PRIM_INT__d_s_p_s[n * 18 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 0]);
640 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]);
641
642 PRIM_INT__d_s_p_s[n * 18 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 0]);
643 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]);
644
645 PRIM_INT__d_s_p_s[n * 18 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 1]);
646 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]);
647 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]);
648
649 PRIM_INT__d_s_p_s[n * 18 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 1]);
650 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]);
651 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]);
652
653 PRIM_INT__d_s_p_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 1]);
654 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]);
655
656 PRIM_INT__d_s_p_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 2]);
657 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]);
658 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]);
659
660 PRIM_INT__d_s_p_s[n * 18 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 2]);
661 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]);
662
663 PRIM_INT__d_s_p_s[n * 18 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 2]);
664 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]);
665 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]);
666
667 PRIM_INT__d_s_p_s[n * 18 + 9] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 3]);
668 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]);
669
670 PRIM_INT__d_s_p_s[n * 18 + 10] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 3]);
671 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]);
672 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]);
673
674 PRIM_INT__d_s_p_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 3]);
675 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]);
676
677 PRIM_INT__d_s_p_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 4]);
678 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]);
679
680 PRIM_INT__d_s_p_s[n * 18 + 13] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 4]);
681 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]);
682 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]);
683
684 PRIM_INT__d_s_p_s[n * 18 + 14] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 4]);
685 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]);
686 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]);
687
688 PRIM_INT__d_s_p_s[n * 18 + 15] = SIMINT_MUL(Q_PA[0], PRIM_INT__d_s_s_s[n * 6 + 5]);
689 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]);
690
691 PRIM_INT__d_s_p_s[n * 18 + 16] = SIMINT_MUL(Q_PA[1], PRIM_INT__d_s_s_s[n * 6 + 5]);
692 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]);
693
694 PRIM_INT__d_s_p_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__d_s_s_s[n * 6 + 5]);
695 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]);
696 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]);
697
698 }
699
700
701 VRR_K_f_s_d_s(
702 PRIM_INT__f_s_d_s,
703 PRIM_INT__f_s_p_s,
704 PRIM_INT__f_s_s_s,
705 PRIM_INT__d_s_p_s,
706 Q_PA,
707 a_over_q,
708 aoq_PQ,
709 one_over_2pq,
710 one_over_2q,
711 9);
712
713
714 ostei_general_vrr_K(4, 0, 3, 0, 8,
715 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
716 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);
717
718
719 ostei_general_vrr_K(5, 0, 4, 0, 7,
720 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
721 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);
722
723
724 ostei_general_vrr_K(6, 0, 5, 0, 6,
725 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
726 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);
727
728
729
730 // Forming PRIM_INT__p_s_p_s[10 * 9];
731 for(n = 0; n < 10; ++n) // loop over orders of auxiliary function
732 {
733
734 PRIM_INT__p_s_p_s[n * 9 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 0]);
735 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]);
736 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]);
737
738 PRIM_INT__p_s_p_s[n * 9 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 0]);
739 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]);
740
741 PRIM_INT__p_s_p_s[n * 9 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 0]);
742 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]);
743
744 PRIM_INT__p_s_p_s[n * 9 + 3] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 1]);
745 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]);
746
747 PRIM_INT__p_s_p_s[n * 9 + 4] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 1]);
748 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]);
749 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]);
750
751 PRIM_INT__p_s_p_s[n * 9 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 1]);
752 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]);
753
754 PRIM_INT__p_s_p_s[n * 9 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_s_s[n * 3 + 2]);
755 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]);
756
757 PRIM_INT__p_s_p_s[n * 9 + 7] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_s_s[n * 3 + 2]);
758 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]);
759
760 PRIM_INT__p_s_p_s[n * 9 + 8] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_s_s[n * 3 + 2]);
761 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]);
762 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]);
763
764 }
765
766
767 VRR_K_d_s_d_s(
768 PRIM_INT__d_s_d_s,
769 PRIM_INT__d_s_p_s,
770 PRIM_INT__d_s_s_s,
771 PRIM_INT__p_s_p_s,
772 Q_PA,
773 a_over_q,
774 aoq_PQ,
775 one_over_2pq,
776 one_over_2q,
777 9);
778
779
780 ostei_general_vrr_K(3, 0, 3, 0, 8,
781 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
782 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);
783
784
785 ostei_general_vrr_K(4, 0, 4, 0, 7,
786 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
787 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);
788
789
790 ostei_general_vrr_K(5, 0, 5, 0, 6,
791 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
792 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);
793
794
795 ostei_general_vrr_K(6, 0, 6, 0, 5,
796 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
797 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);
798
799
800
801 // Forming PRIM_INT__s_s_p_s[10 * 3];
802 for(n = 0; n < 10; ++n) // loop over orders of auxiliary function
803 {
804
805 PRIM_INT__s_s_p_s[n * 3 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_s_s[n * 1 + 0]);
806 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]);
807
808 PRIM_INT__s_s_p_s[n * 3 + 1] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_s_s[n * 1 + 0]);
809 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]);
810
811 PRIM_INT__s_s_p_s[n * 3 + 2] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_s_s[n * 1 + 0]);
812 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]);
813
814 }
815
816
817
818 // Forming PRIM_INT__p_s_d_s[9 * 18];
819 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
820 {
821
822 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 0]);
823 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 0], PRIM_INT__p_s_d_s[n * 18 + 0]);
824 PRIM_INT__p_s_d_s[n * 18 + 0] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 0]);
825 PRIM_INT__p_s_d_s[n * 18 + 0] = 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 + 0]);
826
827 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 1]);
828 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 1], PRIM_INT__p_s_d_s[n * 18 + 3]);
829 PRIM_INT__p_s_d_s[n * 18 + 3] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 3]);
830
831 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 2]);
832 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 2], PRIM_INT__p_s_d_s[n * 18 + 5]);
833 PRIM_INT__p_s_d_s[n * 18 + 5] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 0], PRIM_INT__p_s_s_s[n * 3 + 0]), PRIM_INT__p_s_d_s[n * 18 + 5]);
834
835 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 3]);
836 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 3], PRIM_INT__p_s_d_s[n * 18 + 6]);
837 PRIM_INT__p_s_d_s[n * 18 + 6] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 6]);
838
839 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 4]);
840 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 4], PRIM_INT__p_s_d_s[n * 18 + 9]);
841 PRIM_INT__p_s_d_s[n * 18 + 9] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 9]);
842 PRIM_INT__p_s_d_s[n * 18 + 9] = 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 + 9]);
843
844 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 5]);
845 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 5], PRIM_INT__p_s_d_s[n * 18 + 11]);
846 PRIM_INT__p_s_d_s[n * 18 + 11] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 1], PRIM_INT__p_s_s_s[n * 3 + 1]), PRIM_INT__p_s_d_s[n * 18 + 11]);
847
848 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_MUL(Q_PA[0], PRIM_INT__p_s_p_s[n * 9 + 6]);
849 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( aoq_PQ[0], PRIM_INT__p_s_p_s[(n+1) * 9 + 6], PRIM_INT__p_s_d_s[n * 18 + 12]);
850 PRIM_INT__p_s_d_s[n * 18 + 12] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 12]);
851
852 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_MUL(Q_PA[1], PRIM_INT__p_s_p_s[n * 9 + 7]);
853 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( aoq_PQ[1], PRIM_INT__p_s_p_s[(n+1) * 9 + 7], PRIM_INT__p_s_d_s[n * 18 + 15]);
854 PRIM_INT__p_s_d_s[n * 18 + 15] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 15]);
855
856 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_MUL(Q_PA[2], PRIM_INT__p_s_p_s[n * 9 + 8]);
857 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( aoq_PQ[2], PRIM_INT__p_s_p_s[(n+1) * 9 + 8], PRIM_INT__p_s_d_s[n * 18 + 17]);
858 PRIM_INT__p_s_d_s[n * 18 + 17] = SIMINT_FMADD( vrr_const_1_over_2q, SIMINT_FMADD(a_over_q, PRIM_INT__p_s_s_s[(n+1) * 3 + 2], PRIM_INT__p_s_s_s[n * 3 + 2]), PRIM_INT__p_s_d_s[n * 18 + 17]);
859 PRIM_INT__p_s_d_s[n * 18 + 17] = 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 + 17]);
860
861 }
862
863
864 VRR_K_d_s_f_s(
865 PRIM_INT__d_s_f_s,
866 PRIM_INT__d_s_d_s,
867 PRIM_INT__d_s_p_s,
868 PRIM_INT__p_s_d_s,
869 Q_PA,
870 a_over_q,
871 aoq_PQ,
872 one_over_2pq,
873 one_over_2q,
874 8);
875
876
877 ostei_general_vrr_K(3, 0, 4, 0, 7,
878 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
879 PRIM_INT__f_s_f_s, PRIM_INT__f_s_d_s, NULL, PRIM_INT__d_s_f_s, NULL, PRIM_INT__f_s_g_s);
880
881
882 ostei_general_vrr_K(4, 0, 5, 0, 6,
883 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
884 PRIM_INT__g_s_g_s, PRIM_INT__g_s_f_s, NULL, PRIM_INT__f_s_g_s, NULL, PRIM_INT__g_s_h_s);
885
886
887 ostei_general_vrr_K(5, 0, 6, 0, 5,
888 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
889 PRIM_INT__h_s_h_s, PRIM_INT__h_s_g_s, NULL, PRIM_INT__g_s_h_s, NULL, PRIM_INT__h_s_i_s);
890
891
892 ostei_general_vrr_K(6, 0, 7, 0, 4,
893 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
894 PRIM_INT__i_s_i_s, PRIM_INT__i_s_h_s, NULL, PRIM_INT__h_s_i_s, NULL, PRIM_INT__i_s_k_s);
895
896
897
898 // Forming PRIM_INT__s_s_d_s[9 * 6];
899 for(n = 0; n < 9; ++n) // loop over orders of auxiliary function
900 {
901
902 PRIM_INT__s_s_d_s[n * 6 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_p_s[n * 3 + 0]);
903 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]);
904 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]);
905
906 PRIM_INT__s_s_d_s[n * 6 + 3] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_p_s[n * 3 + 1]);
907 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]);
908 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]);
909
910 PRIM_INT__s_s_d_s[n * 6 + 5] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_p_s[n * 3 + 2]);
911 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]);
912 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]);
913
914 }
915
916
917 VRR_K_p_s_f_s(
918 PRIM_INT__p_s_f_s,
919 PRIM_INT__p_s_d_s,
920 PRIM_INT__p_s_p_s,
921 PRIM_INT__s_s_d_s,
922 Q_PA,
923 a_over_q,
924 aoq_PQ,
925 one_over_2pq,
926 one_over_2q,
927 8);
928
929
930 ostei_general_vrr_K(2, 0, 4, 0, 7,
931 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
932 PRIM_INT__d_s_f_s, PRIM_INT__d_s_d_s, NULL, PRIM_INT__p_s_f_s, NULL, PRIM_INT__d_s_g_s);
933
934
935 ostei_general_vrr_K(3, 0, 5, 0, 6,
936 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
937 PRIM_INT__f_s_g_s, PRIM_INT__f_s_f_s, NULL, PRIM_INT__d_s_g_s, NULL, PRIM_INT__f_s_h_s);
938
939
940 ostei_general_vrr_K(4, 0, 6, 0, 5,
941 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
942 PRIM_INT__g_s_h_s, PRIM_INT__g_s_g_s, NULL, PRIM_INT__f_s_h_s, NULL, PRIM_INT__g_s_i_s);
943
944
945 ostei_general_vrr_K(5, 0, 7, 0, 4,
946 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
947 PRIM_INT__h_s_i_s, PRIM_INT__h_s_h_s, NULL, PRIM_INT__g_s_i_s, NULL, PRIM_INT__h_s_k_s);
948
949
950 ostei_general_vrr_K(6, 0, 8, 0, 3,
951 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
952 PRIM_INT__i_s_k_s, PRIM_INT__i_s_i_s, NULL, PRIM_INT__h_s_k_s, NULL, PRIM_INT__i_s_l_s);
953
954
955 ostei_general_vrr1_I(7, 14,
956 one_over_2p, a_over_p, aop_PQ, P_PA,
957 PRIM_INT__i_s_s_s, PRIM_INT__h_s_s_s, PRIM_INT__k_s_s_s);
958
959
960 ostei_general_vrr_K(7, 0, 1, 0, 10,
961 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
962 PRIM_INT__k_s_s_s, NULL, NULL, PRIM_INT__i_s_s_s, NULL, PRIM_INT__k_s_p_s);
963
964
965 ostei_general_vrr_K(7, 0, 2, 0, 9,
966 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
967 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);
968
969
970 ostei_general_vrr_K(7, 0, 3, 0, 8,
971 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
972 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);
973
974
975 ostei_general_vrr_K(7, 0, 4, 0, 7,
976 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
977 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);
978
979
980 ostei_general_vrr_K(7, 0, 5, 0, 6,
981 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
982 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);
983
984
985 ostei_general_vrr_K(7, 0, 6, 0, 5,
986 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
987 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);
988
989
990 ostei_general_vrr_K(7, 0, 7, 0, 4,
991 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
992 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);
993
994
995
996 // Forming PRIM_INT__s_s_f_s[8 * 10];
997 for(n = 0; n < 8; ++n) // loop over orders of auxiliary function
998 {
999
1000 PRIM_INT__s_s_f_s[n * 10 + 0] = SIMINT_MUL(Q_PA[0], PRIM_INT__s_s_d_s[n * 6 + 0]);
1001 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]);
1002 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]);
1003
1004 PRIM_INT__s_s_f_s[n * 10 + 6] = SIMINT_MUL(Q_PA[1], PRIM_INT__s_s_d_s[n * 6 + 3]);
1005 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]);
1006 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]);
1007
1008 PRIM_INT__s_s_f_s[n * 10 + 9] = SIMINT_MUL(Q_PA[2], PRIM_INT__s_s_d_s[n * 6 + 5]);
1009 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]);
1010 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]);
1011
1012 }
1013
1014
1015 VRR_K_p_s_g_s(
1016 PRIM_INT__p_s_g_s,
1017 PRIM_INT__p_s_f_s,
1018 PRIM_INT__p_s_d_s,
1019 PRIM_INT__s_s_f_s,
1020 Q_PA,
1021 a_over_q,
1022 aoq_PQ,
1023 one_over_2pq,
1024 one_over_2q,
1025 7);
1026
1027
1028 ostei_general_vrr_K(2, 0, 5, 0, 6,
1029 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1030 PRIM_INT__d_s_g_s, PRIM_INT__d_s_f_s, NULL, PRIM_INT__p_s_g_s, NULL, PRIM_INT__d_s_h_s);
1031
1032
1033 ostei_general_vrr_K(3, 0, 6, 0, 5,
1034 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1035 PRIM_INT__f_s_h_s, PRIM_INT__f_s_g_s, NULL, PRIM_INT__d_s_h_s, NULL, PRIM_INT__f_s_i_s);
1036
1037
1038 ostei_general_vrr_K(4, 0, 7, 0, 4,
1039 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1040 PRIM_INT__g_s_i_s, PRIM_INT__g_s_h_s, NULL, PRIM_INT__f_s_i_s, NULL, PRIM_INT__g_s_k_s);
1041
1042
1043 ostei_general_vrr_K(5, 0, 8, 0, 3,
1044 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1045 PRIM_INT__h_s_k_s, PRIM_INT__h_s_i_s, NULL, PRIM_INT__g_s_k_s, NULL, PRIM_INT__h_s_l_s);
1046
1047
1048 ostei_general_vrr_K(6, 0, 9, 0, 2,
1049 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1050 PRIM_INT__i_s_l_s, PRIM_INT__i_s_k_s, NULL, PRIM_INT__h_s_l_s, NULL, PRIM_INT__i_s_m_s);
1051
1052
1053 ostei_general_vrr_K(7, 0, 8, 0, 3,
1054 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1055 PRIM_INT__k_s_k_s, PRIM_INT__k_s_i_s, NULL, PRIM_INT__i_s_k_s, NULL, PRIM_INT__k_s_l_s);
1056
1057
1058 ostei_general_vrr1_I(8, 13,
1059 one_over_2p, a_over_p, aop_PQ, P_PA,
1060 PRIM_INT__k_s_s_s, PRIM_INT__i_s_s_s, PRIM_INT__l_s_s_s);
1061
1062
1063 ostei_general_vrr_K(8, 0, 1, 0, 10,
1064 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1065 PRIM_INT__l_s_s_s, NULL, NULL, PRIM_INT__k_s_s_s, NULL, PRIM_INT__l_s_p_s);
1066
1067
1068 ostei_general_vrr_K(8, 0, 2, 0, 9,
1069 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1070 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);
1071
1072
1073 ostei_general_vrr_K(8, 0, 3, 0, 8,
1074 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1075 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);
1076
1077
1078 ostei_general_vrr_K(8, 0, 4, 0, 7,
1079 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1080 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);
1081
1082
1083 ostei_general_vrr_K(8, 0, 5, 0, 6,
1084 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1085 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);
1086
1087
1088 ostei_general_vrr_K(8, 0, 6, 0, 5,
1089 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1090 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);
1091
1092
1093 ostei_general_vrr_K(8, 0, 7, 0, 4,
1094 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1095 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);
1096
1097
1098 VRR_K_s_s_g_s(
1099 PRIM_INT__s_s_g_s,
1100 PRIM_INT__s_s_f_s,
1101 PRIM_INT__s_s_d_s,
1102 Q_PA,
1103 a_over_q,
1104 aoq_PQ,
1105 one_over_2q,
1106 7);
1107
1108
1109 ostei_general_vrr_K(1, 0, 5, 0, 6,
1110 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1111 PRIM_INT__p_s_g_s, PRIM_INT__p_s_f_s, NULL, PRIM_INT__s_s_g_s, NULL, PRIM_INT__p_s_h_s);
1112
1113
1114 ostei_general_vrr_K(2, 0, 6, 0, 5,
1115 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1116 PRIM_INT__d_s_h_s, PRIM_INT__d_s_g_s, NULL, PRIM_INT__p_s_h_s, NULL, PRIM_INT__d_s_i_s);
1117
1118
1119 ostei_general_vrr_K(3, 0, 7, 0, 4,
1120 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1121 PRIM_INT__f_s_i_s, PRIM_INT__f_s_h_s, NULL, PRIM_INT__d_s_i_s, NULL, PRIM_INT__f_s_k_s);
1122
1123
1124 ostei_general_vrr_K(4, 0, 8, 0, 3,
1125 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1126 PRIM_INT__g_s_k_s, PRIM_INT__g_s_i_s, NULL, PRIM_INT__f_s_k_s, NULL, PRIM_INT__g_s_l_s);
1127
1128
1129 ostei_general_vrr_K(5, 0, 9, 0, 2,
1130 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1131 PRIM_INT__h_s_l_s, PRIM_INT__h_s_k_s, NULL, PRIM_INT__g_s_l_s, NULL, PRIM_INT__h_s_m_s);
1132
1133
1134 ostei_general_vrr_K(6, 0, 10, 0, 1,
1135 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1136 PRIM_INT__i_s_m_s, PRIM_INT__i_s_l_s, NULL, PRIM_INT__h_s_m_s, NULL, PRIM_INT__i_s_n_s);
1137
1138
1139 ostei_general_vrr_K(7, 0, 9, 0, 2,
1140 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1141 PRIM_INT__k_s_l_s, PRIM_INT__k_s_k_s, NULL, PRIM_INT__i_s_l_s, NULL, PRIM_INT__k_s_m_s);
1142
1143
1144 ostei_general_vrr_K(8, 0, 8, 0, 3,
1145 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1146 PRIM_INT__l_s_k_s, PRIM_INT__l_s_i_s, NULL, PRIM_INT__k_s_k_s, NULL, PRIM_INT__l_s_l_s);
1147
1148
1149 ostei_general_vrr1_I(9, 12,
1150 one_over_2p, a_over_p, aop_PQ, P_PA,
1151 PRIM_INT__l_s_s_s, PRIM_INT__k_s_s_s, PRIM_INT__m_s_s_s);
1152
1153
1154 ostei_general_vrr_K(9, 0, 1, 0, 10,
1155 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1156 PRIM_INT__m_s_s_s, NULL, NULL, PRIM_INT__l_s_s_s, NULL, PRIM_INT__m_s_p_s);
1157
1158
1159 ostei_general_vrr_K(9, 0, 2, 0, 9,
1160 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1161 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);
1162
1163
1164 ostei_general_vrr_K(9, 0, 3, 0, 8,
1165 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1166 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);
1167
1168
1169 ostei_general_vrr_K(9, 0, 4, 0, 7,
1170 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1171 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);
1172
1173
1174 ostei_general_vrr_K(9, 0, 5, 0, 6,
1175 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1176 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);
1177
1178
1179 ostei_general_vrr_K(9, 0, 6, 0, 5,
1180 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1181 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);
1182
1183
1184 ostei_general_vrr_K(9, 0, 7, 0, 4,
1185 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1186 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);
1187
1188
1189 ostei_general_vrr_K(7, 0, 10, 0, 1,
1190 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1191 PRIM_INT__k_s_m_s, PRIM_INT__k_s_l_s, NULL, PRIM_INT__i_s_m_s, NULL, PRIM_INT__k_s_n_s);
1192
1193
1194 ostei_general_vrr_K(8, 0, 9, 0, 2,
1195 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1196 PRIM_INT__l_s_l_s, PRIM_INT__l_s_k_s, NULL, PRIM_INT__k_s_l_s, NULL, PRIM_INT__l_s_m_s);
1197
1198
1199 ostei_general_vrr_K(9, 0, 8, 0, 3,
1200 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1201 PRIM_INT__m_s_k_s, PRIM_INT__m_s_i_s, NULL, PRIM_INT__l_s_k_s, NULL, PRIM_INT__m_s_l_s);
1202
1203
1204 ostei_general_vrr1_I(10, 11,
1205 one_over_2p, a_over_p, aop_PQ, P_PA,
1206 PRIM_INT__m_s_s_s, PRIM_INT__l_s_s_s, PRIM_INT__n_s_s_s);
1207
1208
1209 ostei_general_vrr_K(10, 0, 1, 0, 10,
1210 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1211 PRIM_INT__n_s_s_s, NULL, NULL, PRIM_INT__m_s_s_s, NULL, PRIM_INT__n_s_p_s);
1212
1213
1214 ostei_general_vrr_K(10, 0, 2, 0, 9,
1215 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1216 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);
1217
1218
1219 ostei_general_vrr_K(10, 0, 3, 0, 8,
1220 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1221 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);
1222
1223
1224 ostei_general_vrr_K(10, 0, 4, 0, 7,
1225 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1226 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);
1227
1228
1229 ostei_general_vrr_K(10, 0, 5, 0, 6,
1230 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1231 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);
1232
1233
1234 ostei_general_vrr_K(10, 0, 6, 0, 5,
1235 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1236 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);
1237
1238
1239 ostei_general_vrr_K(10, 0, 7, 0, 4,
1240 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1241 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);
1242
1243
1244 ostei_general_vrr_K(8, 0, 10, 0, 1,
1245 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1246 PRIM_INT__l_s_m_s, PRIM_INT__l_s_l_s, NULL, PRIM_INT__k_s_m_s, NULL, PRIM_INT__l_s_n_s);
1247
1248
1249 ostei_general_vrr_K(9, 0, 9, 0, 2,
1250 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1251 PRIM_INT__m_s_l_s, PRIM_INT__m_s_k_s, NULL, PRIM_INT__l_s_l_s, NULL, PRIM_INT__m_s_m_s);
1252
1253
1254 ostei_general_vrr_K(10, 0, 8, 0, 3,
1255 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1256 PRIM_INT__n_s_k_s, PRIM_INT__n_s_i_s, NULL, PRIM_INT__m_s_k_s, NULL, PRIM_INT__n_s_l_s);
1257
1258
1259 ostei_general_vrr_K(9, 0, 10, 0, 1,
1260 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1261 PRIM_INT__m_s_m_s, PRIM_INT__m_s_l_s, NULL, PRIM_INT__l_s_m_s, NULL, PRIM_INT__m_s_n_s);
1262
1263
1264 ostei_general_vrr_K(10, 0, 9, 0, 2,
1265 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1266 PRIM_INT__n_s_l_s, PRIM_INT__n_s_k_s, NULL, PRIM_INT__m_s_l_s, NULL, PRIM_INT__n_s_m_s);
1267
1268
1269 ostei_general_vrr_K(10, 0, 10, 0, 1,
1270 one_over_2q, a_over_q, one_over_2pq, aoq_PQ, Q_PA,
1271 PRIM_INT__n_s_m_s, PRIM_INT__n_s_l_s, NULL, PRIM_INT__m_s_m_s, NULL, PRIM_INT__n_s_n_s);
1272
1273
1274
1275
1276 ////////////////////////////////////
1277 // Accumulate contracted integrals
1278 ////////////////////////////////////
1279 if(lastoffset == 0)
1280 {
1281 contract_all(1008, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1282 contract_all(1260, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1283 contract_all(1540, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1284 contract_all(1848, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1285 contract_all(1296, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1286 contract_all(1620, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1287 contract_all(1980, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1288 contract_all(2376, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1289 contract_all(1620, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1290 contract_all(2025, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1291 contract_all(2475, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1292 contract_all(2970, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1293 contract_all(1980, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1294 contract_all(2475, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1295 contract_all(3025, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1296 contract_all(3630, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1297 contract_all(2376, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1298 contract_all(2970, PRIM_INT__n_s_l_s, PRIM_PTR_INT__n_s_l_s);
1299 contract_all(3630, PRIM_INT__n_s_m_s, PRIM_PTR_INT__n_s_m_s);
1300 contract_all(4356, PRIM_INT__n_s_n_s, PRIM_PTR_INT__n_s_n_s);
1301 }
1302 else
1303 {
1304 contract(1008, shelloffsets, PRIM_INT__i_s_k_s, PRIM_PTR_INT__i_s_k_s);
1305 contract(1260, shelloffsets, PRIM_INT__i_s_l_s, PRIM_PTR_INT__i_s_l_s);
1306 contract(1540, shelloffsets, PRIM_INT__i_s_m_s, PRIM_PTR_INT__i_s_m_s);
1307 contract(1848, shelloffsets, PRIM_INT__i_s_n_s, PRIM_PTR_INT__i_s_n_s);
1308 contract(1296, shelloffsets, PRIM_INT__k_s_k_s, PRIM_PTR_INT__k_s_k_s);
1309 contract(1620, shelloffsets, PRIM_INT__k_s_l_s, PRIM_PTR_INT__k_s_l_s);
1310 contract(1980, shelloffsets, PRIM_INT__k_s_m_s, PRIM_PTR_INT__k_s_m_s);
1311 contract(2376, shelloffsets, PRIM_INT__k_s_n_s, PRIM_PTR_INT__k_s_n_s);
1312 contract(1620, shelloffsets, PRIM_INT__l_s_k_s, PRIM_PTR_INT__l_s_k_s);
1313 contract(2025, shelloffsets, PRIM_INT__l_s_l_s, PRIM_PTR_INT__l_s_l_s);
1314 contract(2475, shelloffsets, PRIM_INT__l_s_m_s, PRIM_PTR_INT__l_s_m_s);
1315 contract(2970, shelloffsets, PRIM_INT__l_s_n_s, PRIM_PTR_INT__l_s_n_s);
1316 contract(1980, shelloffsets, PRIM_INT__m_s_k_s, PRIM_PTR_INT__m_s_k_s);
1317 contract(2475, shelloffsets, PRIM_INT__m_s_l_s, PRIM_PTR_INT__m_s_l_s);
1318 contract(3025, shelloffsets, PRIM_INT__m_s_m_s, PRIM_PTR_INT__m_s_m_s);
1319 contract(3630, shelloffsets, PRIM_INT__m_s_n_s, PRIM_PTR_INT__m_s_n_s);
1320 contract(2376, shelloffsets, PRIM_INT__n_s_k_s, PRIM_PTR_INT__n_s_k_s);
1321 contract(2970, shelloffsets, PRIM_INT__n_s_l_s, PRIM_PTR_INT__n_s_l_s);
1322 contract(3630, shelloffsets, PRIM_INT__n_s_m_s, PRIM_PTR_INT__n_s_m_s);
1323 contract(4356, shelloffsets, PRIM_INT__n_s_n_s, PRIM_PTR_INT__n_s_n_s);
1324 PRIM_PTR_INT__i_s_k_s += lastoffset*1008;
1325 PRIM_PTR_INT__i_s_l_s += lastoffset*1260;
1326 PRIM_PTR_INT__i_s_m_s += lastoffset*1540;
1327 PRIM_PTR_INT__i_s_n_s += lastoffset*1848;
1328 PRIM_PTR_INT__k_s_k_s += lastoffset*1296;
1329 PRIM_PTR_INT__k_s_l_s += lastoffset*1620;
1330 PRIM_PTR_INT__k_s_m_s += lastoffset*1980;
1331 PRIM_PTR_INT__k_s_n_s += lastoffset*2376;
1332 PRIM_PTR_INT__l_s_k_s += lastoffset*1620;
1333 PRIM_PTR_INT__l_s_l_s += lastoffset*2025;
1334 PRIM_PTR_INT__l_s_m_s += lastoffset*2475;
1335 PRIM_PTR_INT__l_s_n_s += lastoffset*2970;
1336 PRIM_PTR_INT__m_s_k_s += lastoffset*1980;
1337 PRIM_PTR_INT__m_s_l_s += lastoffset*2475;
1338 PRIM_PTR_INT__m_s_m_s += lastoffset*3025;
1339 PRIM_PTR_INT__m_s_n_s += lastoffset*3630;
1340 PRIM_PTR_INT__n_s_k_s += lastoffset*2376;
1341 PRIM_PTR_INT__n_s_l_s += lastoffset*2970;
1342 PRIM_PTR_INT__n_s_m_s += lastoffset*3630;
1343 PRIM_PTR_INT__n_s_n_s += lastoffset*4356;
1344 }
1345
1346 } // close loop over j
1347 } // close loop over i
1348
1349 //Advance to the next batch
1350 jstart = SIMINT_SIMD_ROUND(jend);
1351
1352 //////////////////////////////////////////////
1353 // Contracted integrals: Horizontal recurrance
1354 //////////////////////////////////////////////
1355
1356
1357 const double hAB[3] = { P.AB_x[ab], P.AB_y[ab], P.AB_z[ab] };
1358
1359
1360 for(abcd = 0; abcd < nshellbatch; ++abcd, ++real_abcd)
1361 {
1362 const double hCD[3] = { Q.AB_x[cd+abcd], Q.AB_y[cd+abcd], Q.AB_z[cd+abcd] };
1363
1364 // set up HRR pointers
1365 double const * restrict HRR_INT__i_s_k_s = INT__i_s_k_s + abcd * 1008;
1366 double const * restrict HRR_INT__i_s_l_s = INT__i_s_l_s + abcd * 1260;
1367 double const * restrict HRR_INT__i_s_m_s = INT__i_s_m_s + abcd * 1540;
1368 double const * restrict HRR_INT__i_s_n_s = INT__i_s_n_s + abcd * 1848;
1369 double const * restrict HRR_INT__k_s_k_s = INT__k_s_k_s + abcd * 1296;
1370 double const * restrict HRR_INT__k_s_l_s = INT__k_s_l_s + abcd * 1620;
1371 double const * restrict HRR_INT__k_s_m_s = INT__k_s_m_s + abcd * 1980;
1372 double const * restrict HRR_INT__k_s_n_s = INT__k_s_n_s + abcd * 2376;
1373 double const * restrict HRR_INT__l_s_k_s = INT__l_s_k_s + abcd * 1620;
1374 double const * restrict HRR_INT__l_s_l_s = INT__l_s_l_s + abcd * 2025;
1375 double const * restrict HRR_INT__l_s_m_s = INT__l_s_m_s + abcd * 2475;
1376 double const * restrict HRR_INT__l_s_n_s = INT__l_s_n_s + abcd * 2970;
1377 double const * restrict HRR_INT__m_s_k_s = INT__m_s_k_s + abcd * 1980;
1378 double const * restrict HRR_INT__m_s_l_s = INT__m_s_l_s + abcd * 2475;
1379 double const * restrict HRR_INT__m_s_m_s = INT__m_s_m_s + abcd * 3025;
1380 double const * restrict HRR_INT__m_s_n_s = INT__m_s_n_s + abcd * 3630;
1381 double const * restrict HRR_INT__n_s_k_s = INT__n_s_k_s + abcd * 2376;
1382 double const * restrict HRR_INT__n_s_l_s = INT__n_s_l_s + abcd * 2970;
1383 double const * restrict HRR_INT__n_s_m_s = INT__n_s_m_s + abcd * 3630;
1384 double const * restrict HRR_INT__n_s_n_s = INT__n_s_n_s + abcd * 4356;
1385 double * restrict HRR_INT__i_g_k_f = INT__i_g_k_f + real_abcd * 151200;
1386
1387 // form INT__i_p_k_s
1388 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);
1389
1390 // form INT__i_p_l_s
1391 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);
1392
1393 // form INT__i_p_m_s
1394 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);
1395
1396 // form INT__i_p_n_s
1397 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);
1398
1399 // form INT__k_p_k_s
1400 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);
1401
1402 // form INT__k_p_l_s
1403 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);
1404
1405 // form INT__k_p_m_s
1406 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);
1407
1408 // form INT__k_p_n_s
1409 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);
1410
1411 // form INT__l_p_k_s
1412 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);
1413
1414 // form INT__l_p_l_s
1415 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);
1416
1417 // form INT__l_p_m_s
1418 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);
1419
1420 // form INT__l_p_n_s
1421 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);
1422
1423 // form INT__m_p_k_s
1424 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);
1425
1426 // form INT__m_p_l_s
1427 ostei_general_hrr_J(9, 1, 8, 0, hAB, HRR_INT__n_s_l_s, HRR_INT__m_s_l_s, HRR_INT__m_p_l_s);
1428
1429 // form INT__m_p_m_s
1430 ostei_general_hrr_J(9, 1, 9, 0, hAB, HRR_INT__n_s_m_s, HRR_INT__m_s_m_s, HRR_INT__m_p_m_s);
1431
1432 // form INT__m_p_n_s
1433 ostei_general_hrr_J(9, 1, 10, 0, hAB, HRR_INT__n_s_n_s, HRR_INT__m_s_n_s, HRR_INT__m_p_n_s);
1434
1435 // form INT__i_d_k_s
1436 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);
1437
1438 // form INT__i_d_l_s
1439 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);
1440
1441 // form INT__i_d_m_s
1442 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);
1443
1444 // form INT__i_d_n_s
1445 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);
1446
1447 // form INT__k_d_k_s
1448 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);
1449
1450 // form INT__k_d_l_s
1451 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);
1452
1453 // form INT__k_d_m_s
1454 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);
1455
1456 // form INT__k_d_n_s
1457 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);
1458
1459 // form INT__l_d_k_s
1460 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);
1461
1462 // form INT__l_d_l_s
1463 ostei_general_hrr_J(8, 2, 8, 0, hAB, HRR_INT__m_p_l_s, HRR_INT__l_p_l_s, HRR_INT__l_d_l_s);
1464
1465 // form INT__l_d_m_s
1466 ostei_general_hrr_J(8, 2, 9, 0, hAB, HRR_INT__m_p_m_s, HRR_INT__l_p_m_s, HRR_INT__l_d_m_s);
1467
1468 // form INT__l_d_n_s
1469 ostei_general_hrr_J(8, 2, 10, 0, hAB, HRR_INT__m_p_n_s, HRR_INT__l_p_n_s, HRR_INT__l_d_n_s);
1470
1471 // form INT__i_f_k_s
1472 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);
1473
1474 // form INT__i_f_l_s
1475 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);
1476
1477 // form INT__i_f_m_s
1478 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);
1479
1480 // form INT__i_f_n_s
1481 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);
1482
1483 // form INT__k_f_k_s
1484 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);
1485
1486 // form INT__k_f_l_s
1487 ostei_general_hrr_J(7, 3, 8, 0, hAB, HRR_INT__l_d_l_s, HRR_INT__k_d_l_s, HRR_INT__k_f_l_s);
1488
1489 // form INT__k_f_m_s
1490 ostei_general_hrr_J(7, 3, 9, 0, hAB, HRR_INT__l_d_m_s, HRR_INT__k_d_m_s, HRR_INT__k_f_m_s);
1491
1492 // form INT__k_f_n_s
1493 ostei_general_hrr_J(7, 3, 10, 0, hAB, HRR_INT__l_d_n_s, HRR_INT__k_d_n_s, HRR_INT__k_f_n_s);
1494
1495 // form INT__i_g_k_s
1496 ostei_general_hrr_J(6, 4, 7, 0, hAB, HRR_INT__k_f_k_s, HRR_INT__i_f_k_s, HRR_INT__i_g_k_s);
1497
1498 // form INT__i_g_l_s
1499 ostei_general_hrr_J(6, 4, 8, 0, hAB, HRR_INT__k_f_l_s, HRR_INT__i_f_l_s, HRR_INT__i_g_l_s);
1500
1501 // form INT__i_g_m_s
1502 ostei_general_hrr_J(6, 4, 9, 0, hAB, HRR_INT__k_f_m_s, HRR_INT__i_f_m_s, HRR_INT__i_g_m_s);
1503
1504 // form INT__i_g_n_s
1505 ostei_general_hrr_J(6, 4, 10, 0, hAB, HRR_INT__k_f_n_s, HRR_INT__i_f_n_s, HRR_INT__i_g_n_s);
1506
1507 // form INT__i_g_k_p
1508 ostei_general_hrr_L(6, 4, 7, 1, hCD, HRR_INT__i_g_l_s, HRR_INT__i_g_k_s, HRR_INT__i_g_k_p);
1509
1510 // form INT__i_g_l_p
1511 ostei_general_hrr_L(6, 4, 8, 1, hCD, HRR_INT__i_g_m_s, HRR_INT__i_g_l_s, HRR_INT__i_g_l_p);
1512
1513 // form INT__i_g_m_p
1514 ostei_general_hrr_L(6, 4, 9, 1, hCD, HRR_INT__i_g_n_s, HRR_INT__i_g_m_s, HRR_INT__i_g_m_p);
1515
1516 // form INT__i_g_k_d
1517 ostei_general_hrr_L(6, 4, 7, 2, hCD, HRR_INT__i_g_l_p, HRR_INT__i_g_k_p, HRR_INT__i_g_k_d);
1518
1519 // form INT__i_g_l_d
1520 ostei_general_hrr_L(6, 4, 8, 2, hCD, HRR_INT__i_g_m_p, HRR_INT__i_g_l_p, HRR_INT__i_g_l_d);
1521
1522 // form INT__i_g_k_f
1523 ostei_general_hrr_L(6, 4, 7, 3, hCD, HRR_INT__i_g_l_d, HRR_INT__i_g_k_d, HRR_INT__i_g_k_f);
1524
1525
1526 } // close HRR loop
1527
1528
1529 } // close loop cdbatch
1530
1531 istart = iend;
1532 } // close loop over ab
1533
1534 return P.nshell12_clip * Q.nshell12_clip;
1535 }
1536
ostei_g_i_k_f(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__g_i_k_f)1537 int ostei_g_i_k_f(struct simint_multi_shellpair const P,
1538 struct simint_multi_shellpair const Q,
1539 double screen_tol,
1540 double * const restrict work,
1541 double * const restrict INT__g_i_k_f)
1542 {
1543 double P_AB[3*P.nshell12];
1544 struct simint_multi_shellpair P_tmp = P;
1545 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1546 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1547 P_tmp.AB_x = P_AB;
1548 P_tmp.AB_y = P_AB + P.nshell12;
1549 P_tmp.AB_z = P_AB + 2*P.nshell12;
1550
1551 for(int i = 0; i < P.nshell12; i++)
1552 {
1553 P_tmp.AB_x[i] = -P.AB_x[i];
1554 P_tmp.AB_y[i] = -P.AB_y[i];
1555 P_tmp.AB_z[i] = -P.AB_z[i];
1556 }
1557
1558 int ret = ostei_i_g_k_f(P_tmp, Q, screen_tol, work, INT__g_i_k_f);
1559 double buffer[151200] SIMINT_ALIGN_ARRAY_DBL;
1560
1561 for(int q = 0; q < ret; q++)
1562 {
1563 int idx = 0;
1564 for(int a = 0; a < 15; ++a)
1565 for(int b = 0; b < 28; ++b)
1566 for(int c = 0; c < 36; ++c)
1567 for(int d = 0; d < 10; ++d)
1568 buffer[idx++] = INT__g_i_k_f[q*151200+b*5400+a*360+c*10+d];
1569
1570 memcpy(INT__g_i_k_f+q*151200, buffer, 151200*sizeof(double));
1571 }
1572
1573 return ret;
1574 }
1575
ostei_i_g_f_k(struct simint_multi_shellpair const P,struct simint_multi_shellpair const Q,double screen_tol,double * const restrict work,double * const restrict INT__i_g_f_k)1576 int ostei_i_g_f_k(struct simint_multi_shellpair const P,
1577 struct simint_multi_shellpair const Q,
1578 double screen_tol,
1579 double * const restrict work,
1580 double * const restrict INT__i_g_f_k)
1581 {
1582 double Q_AB[3*Q.nshell12];
1583 struct simint_multi_shellpair Q_tmp = Q;
1584 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1585 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1586 Q_tmp.AB_x = Q_AB;
1587 Q_tmp.AB_y = Q_AB + Q.nshell12;
1588 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1589
1590 for(int i = 0; i < Q.nshell12; i++)
1591 {
1592 Q_tmp.AB_x[i] = -Q.AB_x[i];
1593 Q_tmp.AB_y[i] = -Q.AB_y[i];
1594 Q_tmp.AB_z[i] = -Q.AB_z[i];
1595 }
1596
1597 int ret = ostei_i_g_k_f(P, Q_tmp, screen_tol, work, INT__i_g_f_k);
1598 double buffer[151200] SIMINT_ALIGN_ARRAY_DBL;
1599
1600 for(int q = 0; q < ret; q++)
1601 {
1602 int idx = 0;
1603 for(int a = 0; a < 28; ++a)
1604 for(int b = 0; b < 15; ++b)
1605 for(int c = 0; c < 10; ++c)
1606 for(int d = 0; d < 36; ++d)
1607 buffer[idx++] = INT__i_g_f_k[q*151200+a*5400+b*360+d*10+c];
1608
1609 memcpy(INT__i_g_f_k+q*151200, buffer, 151200*sizeof(double));
1610 }
1611
1612 return ret;
1613 }
1614
ostei_g_i_f_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_i_f_k)1615 int ostei_g_i_f_k(struct simint_multi_shellpair const P,
1616 struct simint_multi_shellpair const Q,
1617 double screen_tol,
1618 double * const restrict work,
1619 double * const restrict INT__g_i_f_k)
1620 {
1621 double P_AB[3*P.nshell12];
1622 struct simint_multi_shellpair P_tmp = P;
1623 P_tmp.PA_x = P.PB_x; P_tmp.PA_y = P.PB_y; P_tmp.PA_z = P.PB_z;
1624 P_tmp.PB_x = P.PA_x; P_tmp.PB_y = P.PA_y; P_tmp.PB_z = P.PA_z;
1625 P_tmp.AB_x = P_AB;
1626 P_tmp.AB_y = P_AB + P.nshell12;
1627 P_tmp.AB_z = P_AB + 2*P.nshell12;
1628
1629 for(int i = 0; i < P.nshell12; i++)
1630 {
1631 P_tmp.AB_x[i] = -P.AB_x[i];
1632 P_tmp.AB_y[i] = -P.AB_y[i];
1633 P_tmp.AB_z[i] = -P.AB_z[i];
1634 }
1635
1636 double Q_AB[3*Q.nshell12];
1637 struct simint_multi_shellpair Q_tmp = Q;
1638 Q_tmp.PA_x = Q.PB_x; Q_tmp.PA_y = Q.PB_y; Q_tmp.PA_z = Q.PB_z;
1639 Q_tmp.PB_x = Q.PA_x; Q_tmp.PB_y = Q.PA_y; Q_tmp.PB_z = Q.PA_z;
1640 Q_tmp.AB_x = Q_AB;
1641 Q_tmp.AB_y = Q_AB + Q.nshell12;
1642 Q_tmp.AB_z = Q_AB + 2*Q.nshell12;
1643
1644 for(int i = 0; i < Q.nshell12; i++)
1645 {
1646 Q_tmp.AB_x[i] = -Q.AB_x[i];
1647 Q_tmp.AB_y[i] = -Q.AB_y[i];
1648 Q_tmp.AB_z[i] = -Q.AB_z[i];
1649 }
1650
1651 int ret = ostei_i_g_k_f(P_tmp, Q_tmp, screen_tol, work, INT__g_i_f_k);
1652 double buffer[151200] SIMINT_ALIGN_ARRAY_DBL;
1653
1654 for(int q = 0; q < ret; q++)
1655 {
1656 int idx = 0;
1657 for(int a = 0; a < 15; ++a)
1658 for(int b = 0; b < 28; ++b)
1659 for(int c = 0; c < 10; ++c)
1660 for(int d = 0; d < 36; ++d)
1661 buffer[idx++] = INT__g_i_f_k[q*151200+b*5400+a*360+d*10+c];
1662
1663 memcpy(INT__g_i_f_k+q*151200, buffer, 151200*sizeof(double));
1664 }
1665
1666 return ret;
1667 }
1668
1669