1 /*
2  * Copyright (C) 2013-  Qiming Sun <osirpt.sun@gmail.com>
3  * Description: code generated by  gen-code.cl
4  */
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include "cint_bas.h"
8 #include "cart2sph.h"
9 #include "g1e.h"
10 #include "g1e_grids.h"
11 #include "g2e.h"
12 #include "optimizer.h"
13 #include "cint1e.h"
14 #include "cint2e.h"
15 #include "misc.h"
16 #include "c2f.h"
17 /* <k NABLA i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
18  * = (NABLA i j|R12 |k l) */
CINTgout2e_int2e_ip1(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)19 void CINTgout2e_int2e_ip1(double *gout,
20 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
21 FINT nf = envs->nf;
22 FINT nrys_roots = envs->nrys_roots;
23 FINT ix, iy, iz, i, n;
24 double *g0 = g;
25 double *g1 = g0 + envs->g_size * 3;
26 G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
27 double s[3];
28 for (n = 0; n < nf; n++) {
29 ix = idx[0+n*3];
30 iy = idx[1+n*3];
31 iz = idx[2+n*3];
32 switch (nrys_roots) {
33 case 1:
34 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
35 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
36 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
37 break;
38 case 2:
39 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1];
40 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1];
41 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1];
42 break;
43 case 3:
44 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2];
45 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2];
46 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2];
47 break;
48 case 4:
49 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3];
50 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3];
51 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3];
52 break;
53 default:
54 for (i = 0; i < 3; i++) { s[i] = 0; }
55 for (i = 0; i < nrys_roots; i++) {
56 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
57 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
58 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
59 } break;}
60 if (gout_empty) {
61 gout[n*3+0] = + s[0];
62 gout[n*3+1] = + s[1];
63 gout[n*3+2] = + s[2];
64 } else {
65 gout[n*3+0] += + s[0];
66 gout[n*3+1] += + s[1];
67 gout[n*3+2] += + s[2];
68 }}}
int2e_ip1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)69 void int2e_ip1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
70 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
71 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
72 }
int2e_ip1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)73 CACHE_SIZE_T int2e_ip1_cart(double *out, FINT *dims, FINT *shls,
74 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
75 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
76 CINTEnvVars envs;
77 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
78 envs.f_gout = &CINTgout2e_int2e_ip1;
79 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
80 } // int2e_ip1_cart
int2e_ip1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)81 CACHE_SIZE_T int2e_ip1_sph(double *out, FINT *dims, FINT *shls,
82 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
83 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
84 CINTEnvVars envs;
85 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
86 envs.f_gout = &CINTgout2e_int2e_ip1;
87 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
88 } // int2e_ip1_sph
int2e_ip1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)89 CACHE_SIZE_T int2e_ip1_spinor(double complex *out, FINT *dims, FINT *shls,
90 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
91 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
92 CINTEnvVars envs;
93 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
94 envs.f_gout = &CINTgout2e_int2e_ip1;
95 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
96 } // int2e_ip1_spinor
97 ALL_CINT(int2e_ip1)
ALL_CINT_FORTRAN_(int2e_ip1)98 ALL_CINT_FORTRAN_(int2e_ip1)
99 /* <NABLA k i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
100  * = (i j|R12 |NABLA k l) */
101 void CINTgout2e_int2e_ip2(double *gout,
102 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
103 FINT nf = envs->nf;
104 FINT nrys_roots = envs->nrys_roots;
105 FINT ix, iy, iz, i, n;
106 double *g0 = g;
107 double *g1 = g0 + envs->g_size * 3;
108 G2E_D_K(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l);
109 double s[3];
110 for (n = 0; n < nf; n++) {
111 ix = idx[0+n*3];
112 iy = idx[1+n*3];
113 iz = idx[2+n*3];
114 switch (nrys_roots) {
115 case 1:
116 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
117 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
118 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
119 break;
120 case 2:
121 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1];
122 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1];
123 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1];
124 break;
125 case 3:
126 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2];
127 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2];
128 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2];
129 break;
130 case 4:
131 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3];
132 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3];
133 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3];
134 break;
135 default:
136 for (i = 0; i < 3; i++) { s[i] = 0; }
137 for (i = 0; i < nrys_roots; i++) {
138 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
139 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
140 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
141 } break;}
142 if (gout_empty) {
143 gout[n*3+0] = + s[0];
144 gout[n*3+1] = + s[1];
145 gout[n*3+2] = + s[2];
146 } else {
147 gout[n*3+0] += + s[0];
148 gout[n*3+1] += + s[1];
149 gout[n*3+2] += + s[2];
150 }}}
int2e_ip2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)151 void int2e_ip2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
152 FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3};
153 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
154 }
int2e_ip2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)155 CACHE_SIZE_T int2e_ip2_cart(double *out, FINT *dims, FINT *shls,
156 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
157 FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3};
158 CINTEnvVars envs;
159 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
160 envs.f_gout = &CINTgout2e_int2e_ip2;
161 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
162 } // int2e_ip2_cart
int2e_ip2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)163 CACHE_SIZE_T int2e_ip2_sph(double *out, FINT *dims, FINT *shls,
164 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
165 FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3};
166 CINTEnvVars envs;
167 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
168 envs.f_gout = &CINTgout2e_int2e_ip2;
169 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
170 } // int2e_ip2_sph
int2e_ip2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)171 CACHE_SIZE_T int2e_ip2_spinor(double complex *out, FINT *dims, FINT *shls,
172 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
173 FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3};
174 CINTEnvVars envs;
175 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
176 envs.f_gout = &CINTgout2e_int2e_ip2;
177 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
178 } // int2e_ip2_spinor
179 ALL_CINT(int2e_ip2)
ALL_CINT_FORTRAN_(int2e_ip2)180 ALL_CINT_FORTRAN_(int2e_ip2)
181 /* <k NABLA SIGMA DOT P i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
182  * = (NABLA SIGMA DOT P i SIGMA DOT P j|R12 |k l) */
183 void CINTgout2e_int2e_ipspsp1(double *gout,
184 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
185 FINT nf = envs->nf;
186 FINT nrys_roots = envs->nrys_roots;
187 FINT ix, iy, iz, i, n;
188 double *g0 = g;
189 double *g1 = g0 + envs->g_size * 3;
190 double *g2 = g1 + envs->g_size * 3;
191 double *g3 = g2 + envs->g_size * 3;
192 double *g4 = g3 + envs->g_size * 3;
193 double *g5 = g4 + envs->g_size * 3;
194 double *g6 = g5 + envs->g_size * 3;
195 double *g7 = g6 + envs->g_size * 3;
196 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
197 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
198 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
199 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
200 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
201 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
202 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
203 double s[27];
204 for (n = 0; n < nf; n++) {
205 ix = idx[0+n*3];
206 iy = idx[1+n*3];
207 iz = idx[2+n*3];
208 for (i = 0; i < 27; i++) { s[i] = 0; }
209 for (i = 0; i < nrys_roots; i++) {
210 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
211 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
212 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
213 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
214 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
215 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
216 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
217 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
218 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
219 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
220 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
221 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
222 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
223 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
224 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
225 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
226 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
227 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
228 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
229 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
230 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
231 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
232 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
233 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
234 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
235 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
236 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
237 }
238 if (gout_empty) {
239 gout[n*12+0] = + s[11] - s[19];
240 gout[n*12+1] = + s[18] - s[2];
241 gout[n*12+2] = + s[1] - s[9];
242 gout[n*12+3] = + s[0] + s[10] + s[20];
243 gout[n*12+4] = + s[14] - s[22];
244 gout[n*12+5] = + s[21] - s[5];
245 gout[n*12+6] = + s[4] - s[12];
246 gout[n*12+7] = + s[3] + s[13] + s[23];
247 gout[n*12+8] = + s[17] - s[25];
248 gout[n*12+9] = + s[24] - s[8];
249 gout[n*12+10] = + s[7] - s[15];
250 gout[n*12+11] = + s[6] + s[16] + s[26];
251 } else {
252 gout[n*12+0] += + s[11] - s[19];
253 gout[n*12+1] += + s[18] - s[2];
254 gout[n*12+2] += + s[1] - s[9];
255 gout[n*12+3] += + s[0] + s[10] + s[20];
256 gout[n*12+4] += + s[14] - s[22];
257 gout[n*12+5] += + s[21] - s[5];
258 gout[n*12+6] += + s[4] - s[12];
259 gout[n*12+7] += + s[3] + s[13] + s[23];
260 gout[n*12+8] += + s[17] - s[25];
261 gout[n*12+9] += + s[24] - s[8];
262 gout[n*12+10] += + s[7] - s[15];
263 gout[n*12+11] += + s[6] + s[16] + s[26];
264 }}}
int2e_ipspsp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)265 void int2e_ipspsp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
266 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
267 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
268 }
int2e_ipspsp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)269 CACHE_SIZE_T int2e_ipspsp1_cart(double *out, FINT *dims, FINT *shls,
270 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
271 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
272 CINTEnvVars envs;
273 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
274 envs.f_gout = &CINTgout2e_int2e_ipspsp1;
275 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
276 } // int2e_ipspsp1_cart
int2e_ipspsp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)277 CACHE_SIZE_T int2e_ipspsp1_sph(double *out, FINT *dims, FINT *shls,
278 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
279 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
280 CINTEnvVars envs;
281 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
282 envs.f_gout = &CINTgout2e_int2e_ipspsp1;
283 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
284 } // int2e_ipspsp1_sph
int2e_ipspsp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)285 CACHE_SIZE_T int2e_ipspsp1_spinor(double complex *out, FINT *dims, FINT *shls,
286 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
287 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
288 CINTEnvVars envs;
289 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
290 envs.f_gout = &CINTgout2e_int2e_ipspsp1;
291 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
292 } // int2e_ipspsp1_spinor
293 ALL_CINT(int2e_ipspsp1)
ALL_CINT_FORTRAN_(int2e_ipspsp1)294 ALL_CINT_FORTRAN_(int2e_ipspsp1)
295 /* <SIGMA DOT P k NABLA i|R12 |j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
296  * = (NABLA i j|R12 |SIGMA DOT P k SIGMA DOT P l) */
297 void CINTgout2e_int2e_ip1spsp2(double *gout,
298 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
299 FINT nf = envs->nf;
300 FINT nrys_roots = envs->nrys_roots;
301 FINT ix, iy, iz, i, n;
302 double *g0 = g;
303 double *g1 = g0 + envs->g_size * 3;
304 double *g2 = g1 + envs->g_size * 3;
305 double *g3 = g2 + envs->g_size * 3;
306 double *g4 = g3 + envs->g_size * 3;
307 double *g5 = g4 + envs->g_size * 3;
308 double *g6 = g5 + envs->g_size * 3;
309 double *g7 = g6 + envs->g_size * 3;
310 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0);
311 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
312 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
313 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
314 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
315 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
316 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
317 double s[27];
318 for (n = 0; n < nf; n++) {
319 ix = idx[0+n*3];
320 iy = idx[1+n*3];
321 iz = idx[2+n*3];
322 for (i = 0; i < 27; i++) { s[i] = 0; }
323 for (i = 0; i < nrys_roots; i++) {
324 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
325 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
326 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
327 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
328 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
329 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
330 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
331 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
332 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
333 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
334 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
335 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
336 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
337 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
338 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
339 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
340 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
341 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
342 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
343 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
344 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
345 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
346 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
347 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
348 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
349 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
350 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
351 }
352 if (gout_empty) {
353 gout[n*12+0] = + s[5] - s[7];
354 gout[n*12+1] = + s[6] - s[2];
355 gout[n*12+2] = + s[1] - s[3];
356 gout[n*12+3] = + s[0] + s[4] + s[8];
357 gout[n*12+4] = + s[14] - s[16];
358 gout[n*12+5] = + s[15] - s[11];
359 gout[n*12+6] = + s[10] - s[12];
360 gout[n*12+7] = + s[9] + s[13] + s[17];
361 gout[n*12+8] = + s[23] - s[25];
362 gout[n*12+9] = + s[24] - s[20];
363 gout[n*12+10] = + s[19] - s[21];
364 gout[n*12+11] = + s[18] + s[22] + s[26];
365 } else {
366 gout[n*12+0] += + s[5] - s[7];
367 gout[n*12+1] += + s[6] - s[2];
368 gout[n*12+2] += + s[1] - s[3];
369 gout[n*12+3] += + s[0] + s[4] + s[8];
370 gout[n*12+4] += + s[14] - s[16];
371 gout[n*12+5] += + s[15] - s[11];
372 gout[n*12+6] += + s[10] - s[12];
373 gout[n*12+7] += + s[9] + s[13] + s[17];
374 gout[n*12+8] += + s[23] - s[25];
375 gout[n*12+9] += + s[24] - s[20];
376 gout[n*12+10] += + s[19] - s[21];
377 gout[n*12+11] += + s[18] + s[22] + s[26];
378 }}}
int2e_ip1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)379 void int2e_ip1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
380 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
381 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
382 }
int2e_ip1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)383 CACHE_SIZE_T int2e_ip1spsp2_cart(double *out, FINT *dims, FINT *shls,
384 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
385 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
386 CINTEnvVars envs;
387 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
388 envs.f_gout = &CINTgout2e_int2e_ip1spsp2;
389 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
390 } // int2e_ip1spsp2_cart
int2e_ip1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)391 CACHE_SIZE_T int2e_ip1spsp2_sph(double *out, FINT *dims, FINT *shls,
392 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
393 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
394 CINTEnvVars envs;
395 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
396 envs.f_gout = &CINTgout2e_int2e_ip1spsp2;
397 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
398 } // int2e_ip1spsp2_sph
int2e_ip1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)399 CACHE_SIZE_T int2e_ip1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
400 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
401 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
402 CINTEnvVars envs;
403 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
404 envs.f_gout = &CINTgout2e_int2e_ip1spsp2;
405 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_si_2e2);
406 } // int2e_ip1spsp2_spinor
407 ALL_CINT(int2e_ip1spsp2)
ALL_CINT_FORTRAN_(int2e_ip1spsp2)408 ALL_CINT_FORTRAN_(int2e_ip1spsp2)
409 /* <SIGMA DOT P k NABLA SIGMA DOT P i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
410  * = (NABLA SIGMA DOT P i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
411 void CINTgout2e_int2e_ipspsp1spsp2(double *gout,
412 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
413 FINT nf = envs->nf;
414 FINT nrys_roots = envs->nrys_roots;
415 FINT ix, iy, iz, i, n;
416 double *g0 = g;
417 double *g1 = g0 + envs->g_size * 3;
418 double *g2 = g1 + envs->g_size * 3;
419 double *g3 = g2 + envs->g_size * 3;
420 double *g4 = g3 + envs->g_size * 3;
421 double *g5 = g4 + envs->g_size * 3;
422 double *g6 = g5 + envs->g_size * 3;
423 double *g7 = g6 + envs->g_size * 3;
424 double *g8 = g7 + envs->g_size * 3;
425 double *g9 = g8 + envs->g_size * 3;
426 double *g10 = g9 + envs->g_size * 3;
427 double *g11 = g10 + envs->g_size * 3;
428 double *g12 = g11 + envs->g_size * 3;
429 double *g13 = g12 + envs->g_size * 3;
430 double *g14 = g13 + envs->g_size * 3;
431 double *g15 = g14 + envs->g_size * 3;
432 double *g16 = g15 + envs->g_size * 3;
433 double *g17 = g16 + envs->g_size * 3;
434 double *g18 = g17 + envs->g_size * 3;
435 double *g19 = g18 + envs->g_size * 3;
436 double *g20 = g19 + envs->g_size * 3;
437 double *g21 = g20 + envs->g_size * 3;
438 double *g22 = g21 + envs->g_size * 3;
439 double *g23 = g22 + envs->g_size * 3;
440 double *g24 = g23 + envs->g_size * 3;
441 double *g25 = g24 + envs->g_size * 3;
442 double *g26 = g25 + envs->g_size * 3;
443 double *g27 = g26 + envs->g_size * 3;
444 double *g28 = g27 + envs->g_size * 3;
445 double *g29 = g28 + envs->g_size * 3;
446 double *g30 = g29 + envs->g_size * 3;
447 double *g31 = g30 + envs->g_size * 3;
448 G2E_D_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0);
449 G2E_D_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
450 G2E_D_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
451 G2E_D_J(g4, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
452 G2E_D_J(g5, g1, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
453 G2E_D_J(g6, g2, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
454 G2E_D_J(g7, g3, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
455 G2E_D_I(g8, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
456 G2E_D_I(g9, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
457 G2E_D_I(g10, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
458 G2E_D_I(g11, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
459 G2E_D_I(g12, g4, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
460 G2E_D_I(g13, g5, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
461 G2E_D_I(g14, g6, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
462 G2E_D_I(g15, g7, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
463 G2E_D_I(g16, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
464 G2E_D_I(g17, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
465 G2E_D_I(g18, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
466 G2E_D_I(g19, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
467 G2E_D_I(g20, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
468 G2E_D_I(g21, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
469 G2E_D_I(g22, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
470 G2E_D_I(g23, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
471 G2E_D_I(g24, g8, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
472 G2E_D_I(g25, g9, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
473 G2E_D_I(g26, g10, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
474 G2E_D_I(g27, g11, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
475 G2E_D_I(g28, g12, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
476 G2E_D_I(g29, g13, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
477 G2E_D_I(g30, g14, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
478 G2E_D_I(g31, g15, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
479 double s[243];
480 for (n = 0; n < nf; n++) {
481 ix = idx[0+n*3];
482 iy = idx[1+n*3];
483 iz = idx[2+n*3];
484 for (i = 0; i < 243; i++) { s[i] = 0; }
485 for (i = 0; i < nrys_roots; i++) {
486 s[0] += g31[ix+i] * g0[iy+i] * g0[iz+i];
487 s[1] += g30[ix+i] * g1[iy+i] * g0[iz+i];
488 s[2] += g30[ix+i] * g0[iy+i] * g1[iz+i];
489 s[3] += g29[ix+i] * g2[iy+i] * g0[iz+i];
490 s[4] += g28[ix+i] * g3[iy+i] * g0[iz+i];
491 s[5] += g28[ix+i] * g2[iy+i] * g1[iz+i];
492 s[6] += g29[ix+i] * g0[iy+i] * g2[iz+i];
493 s[7] += g28[ix+i] * g1[iy+i] * g2[iz+i];
494 s[8] += g28[ix+i] * g0[iy+i] * g3[iz+i];
495 s[9] += g27[ix+i] * g4[iy+i] * g0[iz+i];
496 s[10] += g26[ix+i] * g5[iy+i] * g0[iz+i];
497 s[11] += g26[ix+i] * g4[iy+i] * g1[iz+i];
498 s[12] += g25[ix+i] * g6[iy+i] * g0[iz+i];
499 s[13] += g24[ix+i] * g7[iy+i] * g0[iz+i];
500 s[14] += g24[ix+i] * g6[iy+i] * g1[iz+i];
501 s[15] += g25[ix+i] * g4[iy+i] * g2[iz+i];
502 s[16] += g24[ix+i] * g5[iy+i] * g2[iz+i];
503 s[17] += g24[ix+i] * g4[iy+i] * g3[iz+i];
504 s[18] += g27[ix+i] * g0[iy+i] * g4[iz+i];
505 s[19] += g26[ix+i] * g1[iy+i] * g4[iz+i];
506 s[20] += g26[ix+i] * g0[iy+i] * g5[iz+i];
507 s[21] += g25[ix+i] * g2[iy+i] * g4[iz+i];
508 s[22] += g24[ix+i] * g3[iy+i] * g4[iz+i];
509 s[23] += g24[ix+i] * g2[iy+i] * g5[iz+i];
510 s[24] += g25[ix+i] * g0[iy+i] * g6[iz+i];
511 s[25] += g24[ix+i] * g1[iy+i] * g6[iz+i];
512 s[26] += g24[ix+i] * g0[iy+i] * g7[iz+i];
513 s[27] += g23[ix+i] * g8[iy+i] * g0[iz+i];
514 s[28] += g22[ix+i] * g9[iy+i] * g0[iz+i];
515 s[29] += g22[ix+i] * g8[iy+i] * g1[iz+i];
516 s[30] += g21[ix+i] * g10[iy+i] * g0[iz+i];
517 s[31] += g20[ix+i] * g11[iy+i] * g0[iz+i];
518 s[32] += g20[ix+i] * g10[iy+i] * g1[iz+i];
519 s[33] += g21[ix+i] * g8[iy+i] * g2[iz+i];
520 s[34] += g20[ix+i] * g9[iy+i] * g2[iz+i];
521 s[35] += g20[ix+i] * g8[iy+i] * g3[iz+i];
522 s[36] += g19[ix+i] * g12[iy+i] * g0[iz+i];
523 s[37] += g18[ix+i] * g13[iy+i] * g0[iz+i];
524 s[38] += g18[ix+i] * g12[iy+i] * g1[iz+i];
525 s[39] += g17[ix+i] * g14[iy+i] * g0[iz+i];
526 s[40] += g16[ix+i] * g15[iy+i] * g0[iz+i];
527 s[41] += g16[ix+i] * g14[iy+i] * g1[iz+i];
528 s[42] += g17[ix+i] * g12[iy+i] * g2[iz+i];
529 s[43] += g16[ix+i] * g13[iy+i] * g2[iz+i];
530 s[44] += g16[ix+i] * g12[iy+i] * g3[iz+i];
531 s[45] += g19[ix+i] * g8[iy+i] * g4[iz+i];
532 s[46] += g18[ix+i] * g9[iy+i] * g4[iz+i];
533 s[47] += g18[ix+i] * g8[iy+i] * g5[iz+i];
534 s[48] += g17[ix+i] * g10[iy+i] * g4[iz+i];
535 s[49] += g16[ix+i] * g11[iy+i] * g4[iz+i];
536 s[50] += g16[ix+i] * g10[iy+i] * g5[iz+i];
537 s[51] += g17[ix+i] * g8[iy+i] * g6[iz+i];
538 s[52] += g16[ix+i] * g9[iy+i] * g6[iz+i];
539 s[53] += g16[ix+i] * g8[iy+i] * g7[iz+i];
540 s[54] += g23[ix+i] * g0[iy+i] * g8[iz+i];
541 s[55] += g22[ix+i] * g1[iy+i] * g8[iz+i];
542 s[56] += g22[ix+i] * g0[iy+i] * g9[iz+i];
543 s[57] += g21[ix+i] * g2[iy+i] * g8[iz+i];
544 s[58] += g20[ix+i] * g3[iy+i] * g8[iz+i];
545 s[59] += g20[ix+i] * g2[iy+i] * g9[iz+i];
546 s[60] += g21[ix+i] * g0[iy+i] * g10[iz+i];
547 s[61] += g20[ix+i] * g1[iy+i] * g10[iz+i];
548 s[62] += g20[ix+i] * g0[iy+i] * g11[iz+i];
549 s[63] += g19[ix+i] * g4[iy+i] * g8[iz+i];
550 s[64] += g18[ix+i] * g5[iy+i] * g8[iz+i];
551 s[65] += g18[ix+i] * g4[iy+i] * g9[iz+i];
552 s[66] += g17[ix+i] * g6[iy+i] * g8[iz+i];
553 s[67] += g16[ix+i] * g7[iy+i] * g8[iz+i];
554 s[68] += g16[ix+i] * g6[iy+i] * g9[iz+i];
555 s[69] += g17[ix+i] * g4[iy+i] * g10[iz+i];
556 s[70] += g16[ix+i] * g5[iy+i] * g10[iz+i];
557 s[71] += g16[ix+i] * g4[iy+i] * g11[iz+i];
558 s[72] += g19[ix+i] * g0[iy+i] * g12[iz+i];
559 s[73] += g18[ix+i] * g1[iy+i] * g12[iz+i];
560 s[74] += g18[ix+i] * g0[iy+i] * g13[iz+i];
561 s[75] += g17[ix+i] * g2[iy+i] * g12[iz+i];
562 s[76] += g16[ix+i] * g3[iy+i] * g12[iz+i];
563 s[77] += g16[ix+i] * g2[iy+i] * g13[iz+i];
564 s[78] += g17[ix+i] * g0[iy+i] * g14[iz+i];
565 s[79] += g16[ix+i] * g1[iy+i] * g14[iz+i];
566 s[80] += g16[ix+i] * g0[iy+i] * g15[iz+i];
567 s[81] += g15[ix+i] * g16[iy+i] * g0[iz+i];
568 s[82] += g14[ix+i] * g17[iy+i] * g0[iz+i];
569 s[83] += g14[ix+i] * g16[iy+i] * g1[iz+i];
570 s[84] += g13[ix+i] * g18[iy+i] * g0[iz+i];
571 s[85] += g12[ix+i] * g19[iy+i] * g0[iz+i];
572 s[86] += g12[ix+i] * g18[iy+i] * g1[iz+i];
573 s[87] += g13[ix+i] * g16[iy+i] * g2[iz+i];
574 s[88] += g12[ix+i] * g17[iy+i] * g2[iz+i];
575 s[89] += g12[ix+i] * g16[iy+i] * g3[iz+i];
576 s[90] += g11[ix+i] * g20[iy+i] * g0[iz+i];
577 s[91] += g10[ix+i] * g21[iy+i] * g0[iz+i];
578 s[92] += g10[ix+i] * g20[iy+i] * g1[iz+i];
579 s[93] += g9[ix+i] * g22[iy+i] * g0[iz+i];
580 s[94] += g8[ix+i] * g23[iy+i] * g0[iz+i];
581 s[95] += g8[ix+i] * g22[iy+i] * g1[iz+i];
582 s[96] += g9[ix+i] * g20[iy+i] * g2[iz+i];
583 s[97] += g8[ix+i] * g21[iy+i] * g2[iz+i];
584 s[98] += g8[ix+i] * g20[iy+i] * g3[iz+i];
585 s[99] += g11[ix+i] * g16[iy+i] * g4[iz+i];
586 s[100] += g10[ix+i] * g17[iy+i] * g4[iz+i];
587 s[101] += g10[ix+i] * g16[iy+i] * g5[iz+i];
588 s[102] += g9[ix+i] * g18[iy+i] * g4[iz+i];
589 s[103] += g8[ix+i] * g19[iy+i] * g4[iz+i];
590 s[104] += g8[ix+i] * g18[iy+i] * g5[iz+i];
591 s[105] += g9[ix+i] * g16[iy+i] * g6[iz+i];
592 s[106] += g8[ix+i] * g17[iy+i] * g6[iz+i];
593 s[107] += g8[ix+i] * g16[iy+i] * g7[iz+i];
594 s[108] += g7[ix+i] * g24[iy+i] * g0[iz+i];
595 s[109] += g6[ix+i] * g25[iy+i] * g0[iz+i];
596 s[110] += g6[ix+i] * g24[iy+i] * g1[iz+i];
597 s[111] += g5[ix+i] * g26[iy+i] * g0[iz+i];
598 s[112] += g4[ix+i] * g27[iy+i] * g0[iz+i];
599 s[113] += g4[ix+i] * g26[iy+i] * g1[iz+i];
600 s[114] += g5[ix+i] * g24[iy+i] * g2[iz+i];
601 s[115] += g4[ix+i] * g25[iy+i] * g2[iz+i];
602 s[116] += g4[ix+i] * g24[iy+i] * g3[iz+i];
603 s[117] += g3[ix+i] * g28[iy+i] * g0[iz+i];
604 s[118] += g2[ix+i] * g29[iy+i] * g0[iz+i];
605 s[119] += g2[ix+i] * g28[iy+i] * g1[iz+i];
606 s[120] += g1[ix+i] * g30[iy+i] * g0[iz+i];
607 s[121] += g0[ix+i] * g31[iy+i] * g0[iz+i];
608 s[122] += g0[ix+i] * g30[iy+i] * g1[iz+i];
609 s[123] += g1[ix+i] * g28[iy+i] * g2[iz+i];
610 s[124] += g0[ix+i] * g29[iy+i] * g2[iz+i];
611 s[125] += g0[ix+i] * g28[iy+i] * g3[iz+i];
612 s[126] += g3[ix+i] * g24[iy+i] * g4[iz+i];
613 s[127] += g2[ix+i] * g25[iy+i] * g4[iz+i];
614 s[128] += g2[ix+i] * g24[iy+i] * g5[iz+i];
615 s[129] += g1[ix+i] * g26[iy+i] * g4[iz+i];
616 s[130] += g0[ix+i] * g27[iy+i] * g4[iz+i];
617 s[131] += g0[ix+i] * g26[iy+i] * g5[iz+i];
618 s[132] += g1[ix+i] * g24[iy+i] * g6[iz+i];
619 s[133] += g0[ix+i] * g25[iy+i] * g6[iz+i];
620 s[134] += g0[ix+i] * g24[iy+i] * g7[iz+i];
621 s[135] += g7[ix+i] * g16[iy+i] * g8[iz+i];
622 s[136] += g6[ix+i] * g17[iy+i] * g8[iz+i];
623 s[137] += g6[ix+i] * g16[iy+i] * g9[iz+i];
624 s[138] += g5[ix+i] * g18[iy+i] * g8[iz+i];
625 s[139] += g4[ix+i] * g19[iy+i] * g8[iz+i];
626 s[140] += g4[ix+i] * g18[iy+i] * g9[iz+i];
627 s[141] += g5[ix+i] * g16[iy+i] * g10[iz+i];
628 s[142] += g4[ix+i] * g17[iy+i] * g10[iz+i];
629 s[143] += g4[ix+i] * g16[iy+i] * g11[iz+i];
630 s[144] += g3[ix+i] * g20[iy+i] * g8[iz+i];
631 s[145] += g2[ix+i] * g21[iy+i] * g8[iz+i];
632 s[146] += g2[ix+i] * g20[iy+i] * g9[iz+i];
633 s[147] += g1[ix+i] * g22[iy+i] * g8[iz+i];
634 s[148] += g0[ix+i] * g23[iy+i] * g8[iz+i];
635 s[149] += g0[ix+i] * g22[iy+i] * g9[iz+i];
636 s[150] += g1[ix+i] * g20[iy+i] * g10[iz+i];
637 s[151] += g0[ix+i] * g21[iy+i] * g10[iz+i];
638 s[152] += g0[ix+i] * g20[iy+i] * g11[iz+i];
639 s[153] += g3[ix+i] * g16[iy+i] * g12[iz+i];
640 s[154] += g2[ix+i] * g17[iy+i] * g12[iz+i];
641 s[155] += g2[ix+i] * g16[iy+i] * g13[iz+i];
642 s[156] += g1[ix+i] * g18[iy+i] * g12[iz+i];
643 s[157] += g0[ix+i] * g19[iy+i] * g12[iz+i];
644 s[158] += g0[ix+i] * g18[iy+i] * g13[iz+i];
645 s[159] += g1[ix+i] * g16[iy+i] * g14[iz+i];
646 s[160] += g0[ix+i] * g17[iy+i] * g14[iz+i];
647 s[161] += g0[ix+i] * g16[iy+i] * g15[iz+i];
648 s[162] += g15[ix+i] * g0[iy+i] * g16[iz+i];
649 s[163] += g14[ix+i] * g1[iy+i] * g16[iz+i];
650 s[164] += g14[ix+i] * g0[iy+i] * g17[iz+i];
651 s[165] += g13[ix+i] * g2[iy+i] * g16[iz+i];
652 s[166] += g12[ix+i] * g3[iy+i] * g16[iz+i];
653 s[167] += g12[ix+i] * g2[iy+i] * g17[iz+i];
654 s[168] += g13[ix+i] * g0[iy+i] * g18[iz+i];
655 s[169] += g12[ix+i] * g1[iy+i] * g18[iz+i];
656 s[170] += g12[ix+i] * g0[iy+i] * g19[iz+i];
657 s[171] += g11[ix+i] * g4[iy+i] * g16[iz+i];
658 s[172] += g10[ix+i] * g5[iy+i] * g16[iz+i];
659 s[173] += g10[ix+i] * g4[iy+i] * g17[iz+i];
660 s[174] += g9[ix+i] * g6[iy+i] * g16[iz+i];
661 s[175] += g8[ix+i] * g7[iy+i] * g16[iz+i];
662 s[176] += g8[ix+i] * g6[iy+i] * g17[iz+i];
663 s[177] += g9[ix+i] * g4[iy+i] * g18[iz+i];
664 s[178] += g8[ix+i] * g5[iy+i] * g18[iz+i];
665 s[179] += g8[ix+i] * g4[iy+i] * g19[iz+i];
666 s[180] += g11[ix+i] * g0[iy+i] * g20[iz+i];
667 s[181] += g10[ix+i] * g1[iy+i] * g20[iz+i];
668 s[182] += g10[ix+i] * g0[iy+i] * g21[iz+i];
669 s[183] += g9[ix+i] * g2[iy+i] * g20[iz+i];
670 s[184] += g8[ix+i] * g3[iy+i] * g20[iz+i];
671 s[185] += g8[ix+i] * g2[iy+i] * g21[iz+i];
672 s[186] += g9[ix+i] * g0[iy+i] * g22[iz+i];
673 s[187] += g8[ix+i] * g1[iy+i] * g22[iz+i];
674 s[188] += g8[ix+i] * g0[iy+i] * g23[iz+i];
675 s[189] += g7[ix+i] * g8[iy+i] * g16[iz+i];
676 s[190] += g6[ix+i] * g9[iy+i] * g16[iz+i];
677 s[191] += g6[ix+i] * g8[iy+i] * g17[iz+i];
678 s[192] += g5[ix+i] * g10[iy+i] * g16[iz+i];
679 s[193] += g4[ix+i] * g11[iy+i] * g16[iz+i];
680 s[194] += g4[ix+i] * g10[iy+i] * g17[iz+i];
681 s[195] += g5[ix+i] * g8[iy+i] * g18[iz+i];
682 s[196] += g4[ix+i] * g9[iy+i] * g18[iz+i];
683 s[197] += g4[ix+i] * g8[iy+i] * g19[iz+i];
684 s[198] += g3[ix+i] * g12[iy+i] * g16[iz+i];
685 s[199] += g2[ix+i] * g13[iy+i] * g16[iz+i];
686 s[200] += g2[ix+i] * g12[iy+i] * g17[iz+i];
687 s[201] += g1[ix+i] * g14[iy+i] * g16[iz+i];
688 s[202] += g0[ix+i] * g15[iy+i] * g16[iz+i];
689 s[203] += g0[ix+i] * g14[iy+i] * g17[iz+i];
690 s[204] += g1[ix+i] * g12[iy+i] * g18[iz+i];
691 s[205] += g0[ix+i] * g13[iy+i] * g18[iz+i];
692 s[206] += g0[ix+i] * g12[iy+i] * g19[iz+i];
693 s[207] += g3[ix+i] * g8[iy+i] * g20[iz+i];
694 s[208] += g2[ix+i] * g9[iy+i] * g20[iz+i];
695 s[209] += g2[ix+i] * g8[iy+i] * g21[iz+i];
696 s[210] += g1[ix+i] * g10[iy+i] * g20[iz+i];
697 s[211] += g0[ix+i] * g11[iy+i] * g20[iz+i];
698 s[212] += g0[ix+i] * g10[iy+i] * g21[iz+i];
699 s[213] += g1[ix+i] * g8[iy+i] * g22[iz+i];
700 s[214] += g0[ix+i] * g9[iy+i] * g22[iz+i];
701 s[215] += g0[ix+i] * g8[iy+i] * g23[iz+i];
702 s[216] += g7[ix+i] * g0[iy+i] * g24[iz+i];
703 s[217] += g6[ix+i] * g1[iy+i] * g24[iz+i];
704 s[218] += g6[ix+i] * g0[iy+i] * g25[iz+i];
705 s[219] += g5[ix+i] * g2[iy+i] * g24[iz+i];
706 s[220] += g4[ix+i] * g3[iy+i] * g24[iz+i];
707 s[221] += g4[ix+i] * g2[iy+i] * g25[iz+i];
708 s[222] += g5[ix+i] * g0[iy+i] * g26[iz+i];
709 s[223] += g4[ix+i] * g1[iy+i] * g26[iz+i];
710 s[224] += g4[ix+i] * g0[iy+i] * g27[iz+i];
711 s[225] += g3[ix+i] * g4[iy+i] * g24[iz+i];
712 s[226] += g2[ix+i] * g5[iy+i] * g24[iz+i];
713 s[227] += g2[ix+i] * g4[iy+i] * g25[iz+i];
714 s[228] += g1[ix+i] * g6[iy+i] * g24[iz+i];
715 s[229] += g0[ix+i] * g7[iy+i] * g24[iz+i];
716 s[230] += g0[ix+i] * g6[iy+i] * g25[iz+i];
717 s[231] += g1[ix+i] * g4[iy+i] * g26[iz+i];
718 s[232] += g0[ix+i] * g5[iy+i] * g26[iz+i];
719 s[233] += g0[ix+i] * g4[iy+i] * g27[iz+i];
720 s[234] += g3[ix+i] * g0[iy+i] * g28[iz+i];
721 s[235] += g2[ix+i] * g1[iy+i] * g28[iz+i];
722 s[236] += g2[ix+i] * g0[iy+i] * g29[iz+i];
723 s[237] += g1[ix+i] * g2[iy+i] * g28[iz+i];
724 s[238] += g0[ix+i] * g3[iy+i] * g28[iz+i];
725 s[239] += g0[ix+i] * g2[iy+i] * g29[iz+i];
726 s[240] += g1[ix+i] * g0[iy+i] * g30[iz+i];
727 s[241] += g0[ix+i] * g1[iy+i] * g30[iz+i];
728 s[242] += g0[ix+i] * g0[iy+i] * g31[iz+i];
729 }
730 if (gout_empty) {
731 gout[n*48+0] = + s[104] - s[176] - s[106] + s[178];
732 gout[n*48+1] = + s[167] - s[23] - s[169] + s[25];
733 gout[n*48+2] = + s[14] - s[86] - s[16] + s[88];
734 gout[n*48+3] = + s[5] + s[95] + s[185] - s[7] - s[97] - s[187];
735 gout[n*48+4] = + s[105] - s[177] - s[101] + s[173];
736 gout[n*48+5] = + s[168] - s[24] - s[164] + s[20];
737 gout[n*48+6] = + s[15] - s[87] - s[11] + s[83];
738 gout[n*48+7] = + s[6] + s[96] + s[186] - s[2] - s[92] - s[182];
739 gout[n*48+8] = + s[100] - s[172] - s[102] + s[174];
740 gout[n*48+9] = + s[163] - s[19] - s[165] + s[21];
741 gout[n*48+10] = + s[10] - s[82] - s[12] + s[84];
742 gout[n*48+11] = + s[1] + s[91] + s[181] - s[3] - s[93] - s[183];
743 gout[n*48+12] = + s[99] - s[171] + s[103] - s[175] + s[107] - s[179];
744 gout[n*48+13] = + s[162] - s[18] + s[166] - s[22] + s[170] - s[26];
745 gout[n*48+14] = + s[9] - s[81] + s[13] - s[85] + s[17] - s[89];
746 gout[n*48+15] = + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188];
747 gout[n*48+16] = + s[131] - s[203] - s[133] + s[205];
748 gout[n*48+17] = + s[194] - s[50] - s[196] + s[52];
749 gout[n*48+18] = + s[41] - s[113] - s[43] + s[115];
750 gout[n*48+19] = + s[32] + s[122] + s[212] - s[34] - s[124] - s[214];
751 gout[n*48+20] = + s[132] - s[204] - s[128] + s[200];
752 gout[n*48+21] = + s[195] - s[51] - s[191] + s[47];
753 gout[n*48+22] = + s[42] - s[114] - s[38] + s[110];
754 gout[n*48+23] = + s[33] + s[123] + s[213] - s[29] - s[119] - s[209];
755 gout[n*48+24] = + s[127] - s[199] - s[129] + s[201];
756 gout[n*48+25] = + s[190] - s[46] - s[192] + s[48];
757 gout[n*48+26] = + s[37] - s[109] - s[39] + s[111];
758 gout[n*48+27] = + s[28] + s[118] + s[208] - s[30] - s[120] - s[210];
759 gout[n*48+28] = + s[126] - s[198] + s[130] - s[202] + s[134] - s[206];
760 gout[n*48+29] = + s[189] - s[45] + s[193] - s[49] + s[197] - s[53];
761 gout[n*48+30] = + s[36] - s[108] + s[40] - s[112] + s[44] - s[116];
762 gout[n*48+31] = + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215];
763 gout[n*48+32] = + s[158] - s[230] - s[160] + s[232];
764 gout[n*48+33] = + s[221] - s[77] - s[223] + s[79];
765 gout[n*48+34] = + s[68] - s[140] - s[70] + s[142];
766 gout[n*48+35] = + s[59] + s[149] + s[239] - s[61] - s[151] - s[241];
767 gout[n*48+36] = + s[159] - s[231] - s[155] + s[227];
768 gout[n*48+37] = + s[222] - s[78] - s[218] + s[74];
769 gout[n*48+38] = + s[69] - s[141] - s[65] + s[137];
770 gout[n*48+39] = + s[60] + s[150] + s[240] - s[56] - s[146] - s[236];
771 gout[n*48+40] = + s[154] - s[226] - s[156] + s[228];
772 gout[n*48+41] = + s[217] - s[73] - s[219] + s[75];
773 gout[n*48+42] = + s[64] - s[136] - s[66] + s[138];
774 gout[n*48+43] = + s[55] + s[145] + s[235] - s[57] - s[147] - s[237];
775 gout[n*48+44] = + s[153] - s[225] + s[157] - s[229] + s[161] - s[233];
776 gout[n*48+45] = + s[216] - s[72] + s[220] - s[76] + s[224] - s[80];
777 gout[n*48+46] = + s[63] - s[135] + s[67] - s[139] + s[71] - s[143];
778 gout[n*48+47] = + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242];
779 } else {
780 gout[n*48+0] += + s[104] - s[176] - s[106] + s[178];
781 gout[n*48+1] += + s[167] - s[23] - s[169] + s[25];
782 gout[n*48+2] += + s[14] - s[86] - s[16] + s[88];
783 gout[n*48+3] += + s[5] + s[95] + s[185] - s[7] - s[97] - s[187];
784 gout[n*48+4] += + s[105] - s[177] - s[101] + s[173];
785 gout[n*48+5] += + s[168] - s[24] - s[164] + s[20];
786 gout[n*48+6] += + s[15] - s[87] - s[11] + s[83];
787 gout[n*48+7] += + s[6] + s[96] + s[186] - s[2] - s[92] - s[182];
788 gout[n*48+8] += + s[100] - s[172] - s[102] + s[174];
789 gout[n*48+9] += + s[163] - s[19] - s[165] + s[21];
790 gout[n*48+10] += + s[10] - s[82] - s[12] + s[84];
791 gout[n*48+11] += + s[1] + s[91] + s[181] - s[3] - s[93] - s[183];
792 gout[n*48+12] += + s[99] - s[171] + s[103] - s[175] + s[107] - s[179];
793 gout[n*48+13] += + s[162] - s[18] + s[166] - s[22] + s[170] - s[26];
794 gout[n*48+14] += + s[9] - s[81] + s[13] - s[85] + s[17] - s[89];
795 gout[n*48+15] += + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188];
796 gout[n*48+16] += + s[131] - s[203] - s[133] + s[205];
797 gout[n*48+17] += + s[194] - s[50] - s[196] + s[52];
798 gout[n*48+18] += + s[41] - s[113] - s[43] + s[115];
799 gout[n*48+19] += + s[32] + s[122] + s[212] - s[34] - s[124] - s[214];
800 gout[n*48+20] += + s[132] - s[204] - s[128] + s[200];
801 gout[n*48+21] += + s[195] - s[51] - s[191] + s[47];
802 gout[n*48+22] += + s[42] - s[114] - s[38] + s[110];
803 gout[n*48+23] += + s[33] + s[123] + s[213] - s[29] - s[119] - s[209];
804 gout[n*48+24] += + s[127] - s[199] - s[129] + s[201];
805 gout[n*48+25] += + s[190] - s[46] - s[192] + s[48];
806 gout[n*48+26] += + s[37] - s[109] - s[39] + s[111];
807 gout[n*48+27] += + s[28] + s[118] + s[208] - s[30] - s[120] - s[210];
808 gout[n*48+28] += + s[126] - s[198] + s[130] - s[202] + s[134] - s[206];
809 gout[n*48+29] += + s[189] - s[45] + s[193] - s[49] + s[197] - s[53];
810 gout[n*48+30] += + s[36] - s[108] + s[40] - s[112] + s[44] - s[116];
811 gout[n*48+31] += + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215];
812 gout[n*48+32] += + s[158] - s[230] - s[160] + s[232];
813 gout[n*48+33] += + s[221] - s[77] - s[223] + s[79];
814 gout[n*48+34] += + s[68] - s[140] - s[70] + s[142];
815 gout[n*48+35] += + s[59] + s[149] + s[239] - s[61] - s[151] - s[241];
816 gout[n*48+36] += + s[159] - s[231] - s[155] + s[227];
817 gout[n*48+37] += + s[222] - s[78] - s[218] + s[74];
818 gout[n*48+38] += + s[69] - s[141] - s[65] + s[137];
819 gout[n*48+39] += + s[60] + s[150] + s[240] - s[56] - s[146] - s[236];
820 gout[n*48+40] += + s[154] - s[226] - s[156] + s[228];
821 gout[n*48+41] += + s[217] - s[73] - s[219] + s[75];
822 gout[n*48+42] += + s[64] - s[136] - s[66] + s[138];
823 gout[n*48+43] += + s[55] + s[145] + s[235] - s[57] - s[147] - s[237];
824 gout[n*48+44] += + s[153] - s[225] + s[157] - s[229] + s[161] - s[233];
825 gout[n*48+45] += + s[216] - s[72] + s[220] - s[76] + s[224] - s[80];
826 gout[n*48+46] += + s[63] - s[135] + s[67] - s[139] + s[71] - s[143];
827 gout[n*48+47] += + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242];
828 }}}
int2e_ipspsp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)829 void int2e_ipspsp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
830 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
831 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
832 }
int2e_ipspsp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)833 CACHE_SIZE_T int2e_ipspsp1spsp2_cart(double *out, FINT *dims, FINT *shls,
834 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
835 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
836 CINTEnvVars envs;
837 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
838 envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2;
839 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
840 } // int2e_ipspsp1spsp2_cart
int2e_ipspsp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)841 CACHE_SIZE_T int2e_ipspsp1spsp2_sph(double *out, FINT *dims, FINT *shls,
842 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
843 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
844 CINTEnvVars envs;
845 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
846 envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2;
847 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
848 } // int2e_ipspsp1spsp2_sph
int2e_ipspsp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)849 CACHE_SIZE_T int2e_ipspsp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
850 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
851 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
852 CINTEnvVars envs;
853 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
854 envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2;
855 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
856 } // int2e_ipspsp1spsp2_spinor
857 ALL_CINT(int2e_ipspsp1spsp2)
ALL_CINT_FORTRAN_(int2e_ipspsp1spsp2)858 ALL_CINT_FORTRAN_(int2e_ipspsp1spsp2)
859 /* <k NABLA SIGMA DOT R i|R12 |SIGMA DOT R j l> : i,j \in electron 1; k,l \in electron 2
860  * = (NABLA SIGMA DOT R i SIGMA DOT R j|R12 |k l) */
861 void CINTgout2e_int2e_ipsrsr1(double *gout,
862 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
863 FINT nf = envs->nf;
864 FINT nrys_roots = envs->nrys_roots;
865 FINT ix, iy, iz, i, n;
866 double *g0 = g;
867 double *g1 = g0 + envs->g_size * 3;
868 double *g2 = g1 + envs->g_size * 3;
869 double *g3 = g2 + envs->g_size * 3;
870 double *g4 = g3 + envs->g_size * 3;
871 double *g5 = g4 + envs->g_size * 3;
872 double *g6 = g5 + envs->g_size * 3;
873 double *g7 = g6 + envs->g_size * 3;
874 G2E_R_J(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
875 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
876 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
877 G2E_R_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
878 G2E_R_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
879 G2E_R_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
880 G2E_R_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
881 double s[27];
882 for (n = 0; n < nf; n++) {
883 ix = idx[0+n*3];
884 iy = idx[1+n*3];
885 iz = idx[2+n*3];
886 for (i = 0; i < 27; i++) { s[i] = 0; }
887 for (i = 0; i < nrys_roots; i++) {
888 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
889 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
890 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
891 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
892 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
893 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
894 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
895 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
896 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
897 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
898 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
899 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
900 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
901 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
902 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
903 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
904 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
905 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
906 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
907 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
908 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
909 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
910 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
911 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
912 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
913 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
914 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
915 }
916 if (gout_empty) {
917 gout[n*12+0] = + s[11] - s[19];
918 gout[n*12+1] = + s[18] - s[2];
919 gout[n*12+2] = + s[1] - s[9];
920 gout[n*12+3] = + s[0] + s[10] + s[20];
921 gout[n*12+4] = + s[14] - s[22];
922 gout[n*12+5] = + s[21] - s[5];
923 gout[n*12+6] = + s[4] - s[12];
924 gout[n*12+7] = + s[3] + s[13] + s[23];
925 gout[n*12+8] = + s[17] - s[25];
926 gout[n*12+9] = + s[24] - s[8];
927 gout[n*12+10] = + s[7] - s[15];
928 gout[n*12+11] = + s[6] + s[16] + s[26];
929 } else {
930 gout[n*12+0] += + s[11] - s[19];
931 gout[n*12+1] += + s[18] - s[2];
932 gout[n*12+2] += + s[1] - s[9];
933 gout[n*12+3] += + s[0] + s[10] + s[20];
934 gout[n*12+4] += + s[14] - s[22];
935 gout[n*12+5] += + s[21] - s[5];
936 gout[n*12+6] += + s[4] - s[12];
937 gout[n*12+7] += + s[3] + s[13] + s[23];
938 gout[n*12+8] += + s[17] - s[25];
939 gout[n*12+9] += + s[24] - s[8];
940 gout[n*12+10] += + s[7] - s[15];
941 gout[n*12+11] += + s[6] + s[16] + s[26];
942 }}}
int2e_ipsrsr1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)943 void int2e_ipsrsr1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
944 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
945 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
946 }
int2e_ipsrsr1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)947 CACHE_SIZE_T int2e_ipsrsr1_cart(double *out, FINT *dims, FINT *shls,
948 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
949 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
950 CINTEnvVars envs;
951 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
952 envs.f_gout = &CINTgout2e_int2e_ipsrsr1;
953 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
954 } // int2e_ipsrsr1_cart
int2e_ipsrsr1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)955 CACHE_SIZE_T int2e_ipsrsr1_sph(double *out, FINT *dims, FINT *shls,
956 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
957 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
958 CINTEnvVars envs;
959 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
960 envs.f_gout = &CINTgout2e_int2e_ipsrsr1;
961 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
962 } // int2e_ipsrsr1_sph
int2e_ipsrsr1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)963 CACHE_SIZE_T int2e_ipsrsr1_spinor(double complex *out, FINT *dims, FINT *shls,
964 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
965 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
966 CINTEnvVars envs;
967 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
968 envs.f_gout = &CINTgout2e_int2e_ipsrsr1;
969 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
970 } // int2e_ipsrsr1_spinor
971 ALL_CINT(int2e_ipsrsr1)
ALL_CINT_FORTRAN_(int2e_ipsrsr1)972 ALL_CINT_FORTRAN_(int2e_ipsrsr1)
973 /* <SIGMA DOT R k NABLA i|R12 |j SIGMA DOT R l> : i,j \in electron 1; k,l \in electron 2
974  * = (NABLA i j|R12 |SIGMA DOT R k SIGMA DOT R l) */
975 void CINTgout2e_int2e_ip1srsr2(double *gout,
976 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
977 FINT nf = envs->nf;
978 FINT nrys_roots = envs->nrys_roots;
979 FINT ix, iy, iz, i, n;
980 double *g0 = g;
981 double *g1 = g0 + envs->g_size * 3;
982 double *g2 = g1 + envs->g_size * 3;
983 double *g3 = g2 + envs->g_size * 3;
984 double *g4 = g3 + envs->g_size * 3;
985 double *g5 = g4 + envs->g_size * 3;
986 double *g6 = g5 + envs->g_size * 3;
987 double *g7 = g6 + envs->g_size * 3;
988 G2E_R_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0);
989 G2E_R_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
990 G2E_R_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
991 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
992 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
993 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
994 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
995 double s[27];
996 for (n = 0; n < nf; n++) {
997 ix = idx[0+n*3];
998 iy = idx[1+n*3];
999 iz = idx[2+n*3];
1000 for (i = 0; i < 27; i++) { s[i] = 0; }
1001 for (i = 0; i < nrys_roots; i++) {
1002 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
1003 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
1004 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
1005 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
1006 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
1007 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
1008 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
1009 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
1010 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
1011 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
1012 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
1013 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
1014 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
1015 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
1016 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
1017 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
1018 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
1019 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
1020 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
1021 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
1022 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
1023 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
1024 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
1025 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
1026 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
1027 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
1028 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
1029 }
1030 if (gout_empty) {
1031 gout[n*12+0] = + s[5] - s[7];
1032 gout[n*12+1] = + s[6] - s[2];
1033 gout[n*12+2] = + s[1] - s[3];
1034 gout[n*12+3] = + s[0] + s[4] + s[8];
1035 gout[n*12+4] = + s[14] - s[16];
1036 gout[n*12+5] = + s[15] - s[11];
1037 gout[n*12+6] = + s[10] - s[12];
1038 gout[n*12+7] = + s[9] + s[13] + s[17];
1039 gout[n*12+8] = + s[23] - s[25];
1040 gout[n*12+9] = + s[24] - s[20];
1041 gout[n*12+10] = + s[19] - s[21];
1042 gout[n*12+11] = + s[18] + s[22] + s[26];
1043 } else {
1044 gout[n*12+0] += + s[5] - s[7];
1045 gout[n*12+1] += + s[6] - s[2];
1046 gout[n*12+2] += + s[1] - s[3];
1047 gout[n*12+3] += + s[0] + s[4] + s[8];
1048 gout[n*12+4] += + s[14] - s[16];
1049 gout[n*12+5] += + s[15] - s[11];
1050 gout[n*12+6] += + s[10] - s[12];
1051 gout[n*12+7] += + s[9] + s[13] + s[17];
1052 gout[n*12+8] += + s[23] - s[25];
1053 gout[n*12+9] += + s[24] - s[20];
1054 gout[n*12+10] += + s[19] - s[21];
1055 gout[n*12+11] += + s[18] + s[22] + s[26];
1056 }}}
int2e_ip1srsr2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1057 void int2e_ip1srsr2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1058 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1059 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1060 }
int2e_ip1srsr2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1061 CACHE_SIZE_T int2e_ip1srsr2_cart(double *out, FINT *dims, FINT *shls,
1062 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1063 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1064 CINTEnvVars envs;
1065 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1066 envs.f_gout = &CINTgout2e_int2e_ip1srsr2;
1067 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1068 } // int2e_ip1srsr2_cart
int2e_ip1srsr2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1069 CACHE_SIZE_T int2e_ip1srsr2_sph(double *out, FINT *dims, FINT *shls,
1070 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1071 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1072 CINTEnvVars envs;
1073 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1074 envs.f_gout = &CINTgout2e_int2e_ip1srsr2;
1075 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1076 } // int2e_ip1srsr2_sph
int2e_ip1srsr2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1077 CACHE_SIZE_T int2e_ip1srsr2_spinor(double complex *out, FINT *dims, FINT *shls,
1078 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1079 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1080 CINTEnvVars envs;
1081 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1082 envs.f_gout = &CINTgout2e_int2e_ip1srsr2;
1083 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_si_2e2);
1084 } // int2e_ip1srsr2_spinor
1085 ALL_CINT(int2e_ip1srsr2)
ALL_CINT_FORTRAN_(int2e_ip1srsr2)1086 ALL_CINT_FORTRAN_(int2e_ip1srsr2)
1087 /* <SIGMA DOT R k NABLA SIGMA DOT R i|R12 |SIGMA DOT R j SIGMA DOT R l> : i,j \in electron 1; k,l \in electron 2
1088  * = (NABLA SIGMA DOT R i SIGMA DOT R j|R12 |SIGMA DOT R k SIGMA DOT R l) */
1089 void CINTgout2e_int2e_ipsrsr1srsr2(double *gout,
1090 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1091 FINT nf = envs->nf;
1092 FINT nrys_roots = envs->nrys_roots;
1093 FINT ix, iy, iz, i, n;
1094 double *g0 = g;
1095 double *g1 = g0 + envs->g_size * 3;
1096 double *g2 = g1 + envs->g_size * 3;
1097 double *g3 = g2 + envs->g_size * 3;
1098 double *g4 = g3 + envs->g_size * 3;
1099 double *g5 = g4 + envs->g_size * 3;
1100 double *g6 = g5 + envs->g_size * 3;
1101 double *g7 = g6 + envs->g_size * 3;
1102 double *g8 = g7 + envs->g_size * 3;
1103 double *g9 = g8 + envs->g_size * 3;
1104 double *g10 = g9 + envs->g_size * 3;
1105 double *g11 = g10 + envs->g_size * 3;
1106 double *g12 = g11 + envs->g_size * 3;
1107 double *g13 = g12 + envs->g_size * 3;
1108 double *g14 = g13 + envs->g_size * 3;
1109 double *g15 = g14 + envs->g_size * 3;
1110 double *g16 = g15 + envs->g_size * 3;
1111 double *g17 = g16 + envs->g_size * 3;
1112 double *g18 = g17 + envs->g_size * 3;
1113 double *g19 = g18 + envs->g_size * 3;
1114 double *g20 = g19 + envs->g_size * 3;
1115 double *g21 = g20 + envs->g_size * 3;
1116 double *g22 = g21 + envs->g_size * 3;
1117 double *g23 = g22 + envs->g_size * 3;
1118 double *g24 = g23 + envs->g_size * 3;
1119 double *g25 = g24 + envs->g_size * 3;
1120 double *g26 = g25 + envs->g_size * 3;
1121 double *g27 = g26 + envs->g_size * 3;
1122 double *g28 = g27 + envs->g_size * 3;
1123 double *g29 = g28 + envs->g_size * 3;
1124 double *g30 = g29 + envs->g_size * 3;
1125 double *g31 = g30 + envs->g_size * 3;
1126 G2E_R_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0);
1127 G2E_R_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
1128 G2E_R_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
1129 G2E_R_J(g4, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1130 G2E_R_J(g5, g1, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1131 G2E_R_J(g6, g2, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1132 G2E_R_J(g7, g3, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1133 G2E_D_I(g8, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1134 G2E_D_I(g9, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1135 G2E_D_I(g10, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1136 G2E_D_I(g11, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1137 G2E_D_I(g12, g4, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1138 G2E_D_I(g13, g5, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1139 G2E_D_I(g14, g6, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1140 G2E_D_I(g15, g7, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1141 G2E_R_I(g16, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1142 G2E_R_I(g17, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1143 G2E_R_I(g18, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1144 G2E_R_I(g19, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1145 G2E_R_I(g20, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1146 G2E_R_I(g21, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1147 G2E_R_I(g22, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1148 G2E_R_I(g23, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1149 G2E_R_I(g24, g8, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1150 G2E_R_I(g25, g9, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1151 G2E_R_I(g26, g10, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1152 G2E_R_I(g27, g11, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1153 G2E_R_I(g28, g12, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1154 G2E_R_I(g29, g13, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1155 G2E_R_I(g30, g14, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1156 G2E_R_I(g31, g15, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1157 double s[243];
1158 for (n = 0; n < nf; n++) {
1159 ix = idx[0+n*3];
1160 iy = idx[1+n*3];
1161 iz = idx[2+n*3];
1162 for (i = 0; i < 243; i++) { s[i] = 0; }
1163 for (i = 0; i < nrys_roots; i++) {
1164 s[0] += g31[ix+i] * g0[iy+i] * g0[iz+i];
1165 s[1] += g30[ix+i] * g1[iy+i] * g0[iz+i];
1166 s[2] += g30[ix+i] * g0[iy+i] * g1[iz+i];
1167 s[3] += g29[ix+i] * g2[iy+i] * g0[iz+i];
1168 s[4] += g28[ix+i] * g3[iy+i] * g0[iz+i];
1169 s[5] += g28[ix+i] * g2[iy+i] * g1[iz+i];
1170 s[6] += g29[ix+i] * g0[iy+i] * g2[iz+i];
1171 s[7] += g28[ix+i] * g1[iy+i] * g2[iz+i];
1172 s[8] += g28[ix+i] * g0[iy+i] * g3[iz+i];
1173 s[9] += g27[ix+i] * g4[iy+i] * g0[iz+i];
1174 s[10] += g26[ix+i] * g5[iy+i] * g0[iz+i];
1175 s[11] += g26[ix+i] * g4[iy+i] * g1[iz+i];
1176 s[12] += g25[ix+i] * g6[iy+i] * g0[iz+i];
1177 s[13] += g24[ix+i] * g7[iy+i] * g0[iz+i];
1178 s[14] += g24[ix+i] * g6[iy+i] * g1[iz+i];
1179 s[15] += g25[ix+i] * g4[iy+i] * g2[iz+i];
1180 s[16] += g24[ix+i] * g5[iy+i] * g2[iz+i];
1181 s[17] += g24[ix+i] * g4[iy+i] * g3[iz+i];
1182 s[18] += g27[ix+i] * g0[iy+i] * g4[iz+i];
1183 s[19] += g26[ix+i] * g1[iy+i] * g4[iz+i];
1184 s[20] += g26[ix+i] * g0[iy+i] * g5[iz+i];
1185 s[21] += g25[ix+i] * g2[iy+i] * g4[iz+i];
1186 s[22] += g24[ix+i] * g3[iy+i] * g4[iz+i];
1187 s[23] += g24[ix+i] * g2[iy+i] * g5[iz+i];
1188 s[24] += g25[ix+i] * g0[iy+i] * g6[iz+i];
1189 s[25] += g24[ix+i] * g1[iy+i] * g6[iz+i];
1190 s[26] += g24[ix+i] * g0[iy+i] * g7[iz+i];
1191 s[27] += g23[ix+i] * g8[iy+i] * g0[iz+i];
1192 s[28] += g22[ix+i] * g9[iy+i] * g0[iz+i];
1193 s[29] += g22[ix+i] * g8[iy+i] * g1[iz+i];
1194 s[30] += g21[ix+i] * g10[iy+i] * g0[iz+i];
1195 s[31] += g20[ix+i] * g11[iy+i] * g0[iz+i];
1196 s[32] += g20[ix+i] * g10[iy+i] * g1[iz+i];
1197 s[33] += g21[ix+i] * g8[iy+i] * g2[iz+i];
1198 s[34] += g20[ix+i] * g9[iy+i] * g2[iz+i];
1199 s[35] += g20[ix+i] * g8[iy+i] * g3[iz+i];
1200 s[36] += g19[ix+i] * g12[iy+i] * g0[iz+i];
1201 s[37] += g18[ix+i] * g13[iy+i] * g0[iz+i];
1202 s[38] += g18[ix+i] * g12[iy+i] * g1[iz+i];
1203 s[39] += g17[ix+i] * g14[iy+i] * g0[iz+i];
1204 s[40] += g16[ix+i] * g15[iy+i] * g0[iz+i];
1205 s[41] += g16[ix+i] * g14[iy+i] * g1[iz+i];
1206 s[42] += g17[ix+i] * g12[iy+i] * g2[iz+i];
1207 s[43] += g16[ix+i] * g13[iy+i] * g2[iz+i];
1208 s[44] += g16[ix+i] * g12[iy+i] * g3[iz+i];
1209 s[45] += g19[ix+i] * g8[iy+i] * g4[iz+i];
1210 s[46] += g18[ix+i] * g9[iy+i] * g4[iz+i];
1211 s[47] += g18[ix+i] * g8[iy+i] * g5[iz+i];
1212 s[48] += g17[ix+i] * g10[iy+i] * g4[iz+i];
1213 s[49] += g16[ix+i] * g11[iy+i] * g4[iz+i];
1214 s[50] += g16[ix+i] * g10[iy+i] * g5[iz+i];
1215 s[51] += g17[ix+i] * g8[iy+i] * g6[iz+i];
1216 s[52] += g16[ix+i] * g9[iy+i] * g6[iz+i];
1217 s[53] += g16[ix+i] * g8[iy+i] * g7[iz+i];
1218 s[54] += g23[ix+i] * g0[iy+i] * g8[iz+i];
1219 s[55] += g22[ix+i] * g1[iy+i] * g8[iz+i];
1220 s[56] += g22[ix+i] * g0[iy+i] * g9[iz+i];
1221 s[57] += g21[ix+i] * g2[iy+i] * g8[iz+i];
1222 s[58] += g20[ix+i] * g3[iy+i] * g8[iz+i];
1223 s[59] += g20[ix+i] * g2[iy+i] * g9[iz+i];
1224 s[60] += g21[ix+i] * g0[iy+i] * g10[iz+i];
1225 s[61] += g20[ix+i] * g1[iy+i] * g10[iz+i];
1226 s[62] += g20[ix+i] * g0[iy+i] * g11[iz+i];
1227 s[63] += g19[ix+i] * g4[iy+i] * g8[iz+i];
1228 s[64] += g18[ix+i] * g5[iy+i] * g8[iz+i];
1229 s[65] += g18[ix+i] * g4[iy+i] * g9[iz+i];
1230 s[66] += g17[ix+i] * g6[iy+i] * g8[iz+i];
1231 s[67] += g16[ix+i] * g7[iy+i] * g8[iz+i];
1232 s[68] += g16[ix+i] * g6[iy+i] * g9[iz+i];
1233 s[69] += g17[ix+i] * g4[iy+i] * g10[iz+i];
1234 s[70] += g16[ix+i] * g5[iy+i] * g10[iz+i];
1235 s[71] += g16[ix+i] * g4[iy+i] * g11[iz+i];
1236 s[72] += g19[ix+i] * g0[iy+i] * g12[iz+i];
1237 s[73] += g18[ix+i] * g1[iy+i] * g12[iz+i];
1238 s[74] += g18[ix+i] * g0[iy+i] * g13[iz+i];
1239 s[75] += g17[ix+i] * g2[iy+i] * g12[iz+i];
1240 s[76] += g16[ix+i] * g3[iy+i] * g12[iz+i];
1241 s[77] += g16[ix+i] * g2[iy+i] * g13[iz+i];
1242 s[78] += g17[ix+i] * g0[iy+i] * g14[iz+i];
1243 s[79] += g16[ix+i] * g1[iy+i] * g14[iz+i];
1244 s[80] += g16[ix+i] * g0[iy+i] * g15[iz+i];
1245 s[81] += g15[ix+i] * g16[iy+i] * g0[iz+i];
1246 s[82] += g14[ix+i] * g17[iy+i] * g0[iz+i];
1247 s[83] += g14[ix+i] * g16[iy+i] * g1[iz+i];
1248 s[84] += g13[ix+i] * g18[iy+i] * g0[iz+i];
1249 s[85] += g12[ix+i] * g19[iy+i] * g0[iz+i];
1250 s[86] += g12[ix+i] * g18[iy+i] * g1[iz+i];
1251 s[87] += g13[ix+i] * g16[iy+i] * g2[iz+i];
1252 s[88] += g12[ix+i] * g17[iy+i] * g2[iz+i];
1253 s[89] += g12[ix+i] * g16[iy+i] * g3[iz+i];
1254 s[90] += g11[ix+i] * g20[iy+i] * g0[iz+i];
1255 s[91] += g10[ix+i] * g21[iy+i] * g0[iz+i];
1256 s[92] += g10[ix+i] * g20[iy+i] * g1[iz+i];
1257 s[93] += g9[ix+i] * g22[iy+i] * g0[iz+i];
1258 s[94] += g8[ix+i] * g23[iy+i] * g0[iz+i];
1259 s[95] += g8[ix+i] * g22[iy+i] * g1[iz+i];
1260 s[96] += g9[ix+i] * g20[iy+i] * g2[iz+i];
1261 s[97] += g8[ix+i] * g21[iy+i] * g2[iz+i];
1262 s[98] += g8[ix+i] * g20[iy+i] * g3[iz+i];
1263 s[99] += g11[ix+i] * g16[iy+i] * g4[iz+i];
1264 s[100] += g10[ix+i] * g17[iy+i] * g4[iz+i];
1265 s[101] += g10[ix+i] * g16[iy+i] * g5[iz+i];
1266 s[102] += g9[ix+i] * g18[iy+i] * g4[iz+i];
1267 s[103] += g8[ix+i] * g19[iy+i] * g4[iz+i];
1268 s[104] += g8[ix+i] * g18[iy+i] * g5[iz+i];
1269 s[105] += g9[ix+i] * g16[iy+i] * g6[iz+i];
1270 s[106] += g8[ix+i] * g17[iy+i] * g6[iz+i];
1271 s[107] += g8[ix+i] * g16[iy+i] * g7[iz+i];
1272 s[108] += g7[ix+i] * g24[iy+i] * g0[iz+i];
1273 s[109] += g6[ix+i] * g25[iy+i] * g0[iz+i];
1274 s[110] += g6[ix+i] * g24[iy+i] * g1[iz+i];
1275 s[111] += g5[ix+i] * g26[iy+i] * g0[iz+i];
1276 s[112] += g4[ix+i] * g27[iy+i] * g0[iz+i];
1277 s[113] += g4[ix+i] * g26[iy+i] * g1[iz+i];
1278 s[114] += g5[ix+i] * g24[iy+i] * g2[iz+i];
1279 s[115] += g4[ix+i] * g25[iy+i] * g2[iz+i];
1280 s[116] += g4[ix+i] * g24[iy+i] * g3[iz+i];
1281 s[117] += g3[ix+i] * g28[iy+i] * g0[iz+i];
1282 s[118] += g2[ix+i] * g29[iy+i] * g0[iz+i];
1283 s[119] += g2[ix+i] * g28[iy+i] * g1[iz+i];
1284 s[120] += g1[ix+i] * g30[iy+i] * g0[iz+i];
1285 s[121] += g0[ix+i] * g31[iy+i] * g0[iz+i];
1286 s[122] += g0[ix+i] * g30[iy+i] * g1[iz+i];
1287 s[123] += g1[ix+i] * g28[iy+i] * g2[iz+i];
1288 s[124] += g0[ix+i] * g29[iy+i] * g2[iz+i];
1289 s[125] += g0[ix+i] * g28[iy+i] * g3[iz+i];
1290 s[126] += g3[ix+i] * g24[iy+i] * g4[iz+i];
1291 s[127] += g2[ix+i] * g25[iy+i] * g4[iz+i];
1292 s[128] += g2[ix+i] * g24[iy+i] * g5[iz+i];
1293 s[129] += g1[ix+i] * g26[iy+i] * g4[iz+i];
1294 s[130] += g0[ix+i] * g27[iy+i] * g4[iz+i];
1295 s[131] += g0[ix+i] * g26[iy+i] * g5[iz+i];
1296 s[132] += g1[ix+i] * g24[iy+i] * g6[iz+i];
1297 s[133] += g0[ix+i] * g25[iy+i] * g6[iz+i];
1298 s[134] += g0[ix+i] * g24[iy+i] * g7[iz+i];
1299 s[135] += g7[ix+i] * g16[iy+i] * g8[iz+i];
1300 s[136] += g6[ix+i] * g17[iy+i] * g8[iz+i];
1301 s[137] += g6[ix+i] * g16[iy+i] * g9[iz+i];
1302 s[138] += g5[ix+i] * g18[iy+i] * g8[iz+i];
1303 s[139] += g4[ix+i] * g19[iy+i] * g8[iz+i];
1304 s[140] += g4[ix+i] * g18[iy+i] * g9[iz+i];
1305 s[141] += g5[ix+i] * g16[iy+i] * g10[iz+i];
1306 s[142] += g4[ix+i] * g17[iy+i] * g10[iz+i];
1307 s[143] += g4[ix+i] * g16[iy+i] * g11[iz+i];
1308 s[144] += g3[ix+i] * g20[iy+i] * g8[iz+i];
1309 s[145] += g2[ix+i] * g21[iy+i] * g8[iz+i];
1310 s[146] += g2[ix+i] * g20[iy+i] * g9[iz+i];
1311 s[147] += g1[ix+i] * g22[iy+i] * g8[iz+i];
1312 s[148] += g0[ix+i] * g23[iy+i] * g8[iz+i];
1313 s[149] += g0[ix+i] * g22[iy+i] * g9[iz+i];
1314 s[150] += g1[ix+i] * g20[iy+i] * g10[iz+i];
1315 s[151] += g0[ix+i] * g21[iy+i] * g10[iz+i];
1316 s[152] += g0[ix+i] * g20[iy+i] * g11[iz+i];
1317 s[153] += g3[ix+i] * g16[iy+i] * g12[iz+i];
1318 s[154] += g2[ix+i] * g17[iy+i] * g12[iz+i];
1319 s[155] += g2[ix+i] * g16[iy+i] * g13[iz+i];
1320 s[156] += g1[ix+i] * g18[iy+i] * g12[iz+i];
1321 s[157] += g0[ix+i] * g19[iy+i] * g12[iz+i];
1322 s[158] += g0[ix+i] * g18[iy+i] * g13[iz+i];
1323 s[159] += g1[ix+i] * g16[iy+i] * g14[iz+i];
1324 s[160] += g0[ix+i] * g17[iy+i] * g14[iz+i];
1325 s[161] += g0[ix+i] * g16[iy+i] * g15[iz+i];
1326 s[162] += g15[ix+i] * g0[iy+i] * g16[iz+i];
1327 s[163] += g14[ix+i] * g1[iy+i] * g16[iz+i];
1328 s[164] += g14[ix+i] * g0[iy+i] * g17[iz+i];
1329 s[165] += g13[ix+i] * g2[iy+i] * g16[iz+i];
1330 s[166] += g12[ix+i] * g3[iy+i] * g16[iz+i];
1331 s[167] += g12[ix+i] * g2[iy+i] * g17[iz+i];
1332 s[168] += g13[ix+i] * g0[iy+i] * g18[iz+i];
1333 s[169] += g12[ix+i] * g1[iy+i] * g18[iz+i];
1334 s[170] += g12[ix+i] * g0[iy+i] * g19[iz+i];
1335 s[171] += g11[ix+i] * g4[iy+i] * g16[iz+i];
1336 s[172] += g10[ix+i] * g5[iy+i] * g16[iz+i];
1337 s[173] += g10[ix+i] * g4[iy+i] * g17[iz+i];
1338 s[174] += g9[ix+i] * g6[iy+i] * g16[iz+i];
1339 s[175] += g8[ix+i] * g7[iy+i] * g16[iz+i];
1340 s[176] += g8[ix+i] * g6[iy+i] * g17[iz+i];
1341 s[177] += g9[ix+i] * g4[iy+i] * g18[iz+i];
1342 s[178] += g8[ix+i] * g5[iy+i] * g18[iz+i];
1343 s[179] += g8[ix+i] * g4[iy+i] * g19[iz+i];
1344 s[180] += g11[ix+i] * g0[iy+i] * g20[iz+i];
1345 s[181] += g10[ix+i] * g1[iy+i] * g20[iz+i];
1346 s[182] += g10[ix+i] * g0[iy+i] * g21[iz+i];
1347 s[183] += g9[ix+i] * g2[iy+i] * g20[iz+i];
1348 s[184] += g8[ix+i] * g3[iy+i] * g20[iz+i];
1349 s[185] += g8[ix+i] * g2[iy+i] * g21[iz+i];
1350 s[186] += g9[ix+i] * g0[iy+i] * g22[iz+i];
1351 s[187] += g8[ix+i] * g1[iy+i] * g22[iz+i];
1352 s[188] += g8[ix+i] * g0[iy+i] * g23[iz+i];
1353 s[189] += g7[ix+i] * g8[iy+i] * g16[iz+i];
1354 s[190] += g6[ix+i] * g9[iy+i] * g16[iz+i];
1355 s[191] += g6[ix+i] * g8[iy+i] * g17[iz+i];
1356 s[192] += g5[ix+i] * g10[iy+i] * g16[iz+i];
1357 s[193] += g4[ix+i] * g11[iy+i] * g16[iz+i];
1358 s[194] += g4[ix+i] * g10[iy+i] * g17[iz+i];
1359 s[195] += g5[ix+i] * g8[iy+i] * g18[iz+i];
1360 s[196] += g4[ix+i] * g9[iy+i] * g18[iz+i];
1361 s[197] += g4[ix+i] * g8[iy+i] * g19[iz+i];
1362 s[198] += g3[ix+i] * g12[iy+i] * g16[iz+i];
1363 s[199] += g2[ix+i] * g13[iy+i] * g16[iz+i];
1364 s[200] += g2[ix+i] * g12[iy+i] * g17[iz+i];
1365 s[201] += g1[ix+i] * g14[iy+i] * g16[iz+i];
1366 s[202] += g0[ix+i] * g15[iy+i] * g16[iz+i];
1367 s[203] += g0[ix+i] * g14[iy+i] * g17[iz+i];
1368 s[204] += g1[ix+i] * g12[iy+i] * g18[iz+i];
1369 s[205] += g0[ix+i] * g13[iy+i] * g18[iz+i];
1370 s[206] += g0[ix+i] * g12[iy+i] * g19[iz+i];
1371 s[207] += g3[ix+i] * g8[iy+i] * g20[iz+i];
1372 s[208] += g2[ix+i] * g9[iy+i] * g20[iz+i];
1373 s[209] += g2[ix+i] * g8[iy+i] * g21[iz+i];
1374 s[210] += g1[ix+i] * g10[iy+i] * g20[iz+i];
1375 s[211] += g0[ix+i] * g11[iy+i] * g20[iz+i];
1376 s[212] += g0[ix+i] * g10[iy+i] * g21[iz+i];
1377 s[213] += g1[ix+i] * g8[iy+i] * g22[iz+i];
1378 s[214] += g0[ix+i] * g9[iy+i] * g22[iz+i];
1379 s[215] += g0[ix+i] * g8[iy+i] * g23[iz+i];
1380 s[216] += g7[ix+i] * g0[iy+i] * g24[iz+i];
1381 s[217] += g6[ix+i] * g1[iy+i] * g24[iz+i];
1382 s[218] += g6[ix+i] * g0[iy+i] * g25[iz+i];
1383 s[219] += g5[ix+i] * g2[iy+i] * g24[iz+i];
1384 s[220] += g4[ix+i] * g3[iy+i] * g24[iz+i];
1385 s[221] += g4[ix+i] * g2[iy+i] * g25[iz+i];
1386 s[222] += g5[ix+i] * g0[iy+i] * g26[iz+i];
1387 s[223] += g4[ix+i] * g1[iy+i] * g26[iz+i];
1388 s[224] += g4[ix+i] * g0[iy+i] * g27[iz+i];
1389 s[225] += g3[ix+i] * g4[iy+i] * g24[iz+i];
1390 s[226] += g2[ix+i] * g5[iy+i] * g24[iz+i];
1391 s[227] += g2[ix+i] * g4[iy+i] * g25[iz+i];
1392 s[228] += g1[ix+i] * g6[iy+i] * g24[iz+i];
1393 s[229] += g0[ix+i] * g7[iy+i] * g24[iz+i];
1394 s[230] += g0[ix+i] * g6[iy+i] * g25[iz+i];
1395 s[231] += g1[ix+i] * g4[iy+i] * g26[iz+i];
1396 s[232] += g0[ix+i] * g5[iy+i] * g26[iz+i];
1397 s[233] += g0[ix+i] * g4[iy+i] * g27[iz+i];
1398 s[234] += g3[ix+i] * g0[iy+i] * g28[iz+i];
1399 s[235] += g2[ix+i] * g1[iy+i] * g28[iz+i];
1400 s[236] += g2[ix+i] * g0[iy+i] * g29[iz+i];
1401 s[237] += g1[ix+i] * g2[iy+i] * g28[iz+i];
1402 s[238] += g0[ix+i] * g3[iy+i] * g28[iz+i];
1403 s[239] += g0[ix+i] * g2[iy+i] * g29[iz+i];
1404 s[240] += g1[ix+i] * g0[iy+i] * g30[iz+i];
1405 s[241] += g0[ix+i] * g1[iy+i] * g30[iz+i];
1406 s[242] += g0[ix+i] * g0[iy+i] * g31[iz+i];
1407 }
1408 if (gout_empty) {
1409 gout[n*48+0] = + s[104] - s[176] - s[106] + s[178];
1410 gout[n*48+1] = + s[167] - s[23] - s[169] + s[25];
1411 gout[n*48+2] = + s[14] - s[86] - s[16] + s[88];
1412 gout[n*48+3] = + s[5] + s[95] + s[185] - s[7] - s[97] - s[187];
1413 gout[n*48+4] = + s[105] - s[177] - s[101] + s[173];
1414 gout[n*48+5] = + s[168] - s[24] - s[164] + s[20];
1415 gout[n*48+6] = + s[15] - s[87] - s[11] + s[83];
1416 gout[n*48+7] = + s[6] + s[96] + s[186] - s[2] - s[92] - s[182];
1417 gout[n*48+8] = + s[100] - s[172] - s[102] + s[174];
1418 gout[n*48+9] = + s[163] - s[19] - s[165] + s[21];
1419 gout[n*48+10] = + s[10] - s[82] - s[12] + s[84];
1420 gout[n*48+11] = + s[1] + s[91] + s[181] - s[3] - s[93] - s[183];
1421 gout[n*48+12] = + s[99] - s[171] + s[103] - s[175] + s[107] - s[179];
1422 gout[n*48+13] = + s[162] - s[18] + s[166] - s[22] + s[170] - s[26];
1423 gout[n*48+14] = + s[9] - s[81] + s[13] - s[85] + s[17] - s[89];
1424 gout[n*48+15] = + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188];
1425 gout[n*48+16] = + s[131] - s[203] - s[133] + s[205];
1426 gout[n*48+17] = + s[194] - s[50] - s[196] + s[52];
1427 gout[n*48+18] = + s[41] - s[113] - s[43] + s[115];
1428 gout[n*48+19] = + s[32] + s[122] + s[212] - s[34] - s[124] - s[214];
1429 gout[n*48+20] = + s[132] - s[204] - s[128] + s[200];
1430 gout[n*48+21] = + s[195] - s[51] - s[191] + s[47];
1431 gout[n*48+22] = + s[42] - s[114] - s[38] + s[110];
1432 gout[n*48+23] = + s[33] + s[123] + s[213] - s[29] - s[119] - s[209];
1433 gout[n*48+24] = + s[127] - s[199] - s[129] + s[201];
1434 gout[n*48+25] = + s[190] - s[46] - s[192] + s[48];
1435 gout[n*48+26] = + s[37] - s[109] - s[39] + s[111];
1436 gout[n*48+27] = + s[28] + s[118] + s[208] - s[30] - s[120] - s[210];
1437 gout[n*48+28] = + s[126] - s[198] + s[130] - s[202] + s[134] - s[206];
1438 gout[n*48+29] = + s[189] - s[45] + s[193] - s[49] + s[197] - s[53];
1439 gout[n*48+30] = + s[36] - s[108] + s[40] - s[112] + s[44] - s[116];
1440 gout[n*48+31] = + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215];
1441 gout[n*48+32] = + s[158] - s[230] - s[160] + s[232];
1442 gout[n*48+33] = + s[221] - s[77] - s[223] + s[79];
1443 gout[n*48+34] = + s[68] - s[140] - s[70] + s[142];
1444 gout[n*48+35] = + s[59] + s[149] + s[239] - s[61] - s[151] - s[241];
1445 gout[n*48+36] = + s[159] - s[231] - s[155] + s[227];
1446 gout[n*48+37] = + s[222] - s[78] - s[218] + s[74];
1447 gout[n*48+38] = + s[69] - s[141] - s[65] + s[137];
1448 gout[n*48+39] = + s[60] + s[150] + s[240] - s[56] - s[146] - s[236];
1449 gout[n*48+40] = + s[154] - s[226] - s[156] + s[228];
1450 gout[n*48+41] = + s[217] - s[73] - s[219] + s[75];
1451 gout[n*48+42] = + s[64] - s[136] - s[66] + s[138];
1452 gout[n*48+43] = + s[55] + s[145] + s[235] - s[57] - s[147] - s[237];
1453 gout[n*48+44] = + s[153] - s[225] + s[157] - s[229] + s[161] - s[233];
1454 gout[n*48+45] = + s[216] - s[72] + s[220] - s[76] + s[224] - s[80];
1455 gout[n*48+46] = + s[63] - s[135] + s[67] - s[139] + s[71] - s[143];
1456 gout[n*48+47] = + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242];
1457 } else {
1458 gout[n*48+0] += + s[104] - s[176] - s[106] + s[178];
1459 gout[n*48+1] += + s[167] - s[23] - s[169] + s[25];
1460 gout[n*48+2] += + s[14] - s[86] - s[16] + s[88];
1461 gout[n*48+3] += + s[5] + s[95] + s[185] - s[7] - s[97] - s[187];
1462 gout[n*48+4] += + s[105] - s[177] - s[101] + s[173];
1463 gout[n*48+5] += + s[168] - s[24] - s[164] + s[20];
1464 gout[n*48+6] += + s[15] - s[87] - s[11] + s[83];
1465 gout[n*48+7] += + s[6] + s[96] + s[186] - s[2] - s[92] - s[182];
1466 gout[n*48+8] += + s[100] - s[172] - s[102] + s[174];
1467 gout[n*48+9] += + s[163] - s[19] - s[165] + s[21];
1468 gout[n*48+10] += + s[10] - s[82] - s[12] + s[84];
1469 gout[n*48+11] += + s[1] + s[91] + s[181] - s[3] - s[93] - s[183];
1470 gout[n*48+12] += + s[99] - s[171] + s[103] - s[175] + s[107] - s[179];
1471 gout[n*48+13] += + s[162] - s[18] + s[166] - s[22] + s[170] - s[26];
1472 gout[n*48+14] += + s[9] - s[81] + s[13] - s[85] + s[17] - s[89];
1473 gout[n*48+15] += + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188];
1474 gout[n*48+16] += + s[131] - s[203] - s[133] + s[205];
1475 gout[n*48+17] += + s[194] - s[50] - s[196] + s[52];
1476 gout[n*48+18] += + s[41] - s[113] - s[43] + s[115];
1477 gout[n*48+19] += + s[32] + s[122] + s[212] - s[34] - s[124] - s[214];
1478 gout[n*48+20] += + s[132] - s[204] - s[128] + s[200];
1479 gout[n*48+21] += + s[195] - s[51] - s[191] + s[47];
1480 gout[n*48+22] += + s[42] - s[114] - s[38] + s[110];
1481 gout[n*48+23] += + s[33] + s[123] + s[213] - s[29] - s[119] - s[209];
1482 gout[n*48+24] += + s[127] - s[199] - s[129] + s[201];
1483 gout[n*48+25] += + s[190] - s[46] - s[192] + s[48];
1484 gout[n*48+26] += + s[37] - s[109] - s[39] + s[111];
1485 gout[n*48+27] += + s[28] + s[118] + s[208] - s[30] - s[120] - s[210];
1486 gout[n*48+28] += + s[126] - s[198] + s[130] - s[202] + s[134] - s[206];
1487 gout[n*48+29] += + s[189] - s[45] + s[193] - s[49] + s[197] - s[53];
1488 gout[n*48+30] += + s[36] - s[108] + s[40] - s[112] + s[44] - s[116];
1489 gout[n*48+31] += + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215];
1490 gout[n*48+32] += + s[158] - s[230] - s[160] + s[232];
1491 gout[n*48+33] += + s[221] - s[77] - s[223] + s[79];
1492 gout[n*48+34] += + s[68] - s[140] - s[70] + s[142];
1493 gout[n*48+35] += + s[59] + s[149] + s[239] - s[61] - s[151] - s[241];
1494 gout[n*48+36] += + s[159] - s[231] - s[155] + s[227];
1495 gout[n*48+37] += + s[222] - s[78] - s[218] + s[74];
1496 gout[n*48+38] += + s[69] - s[141] - s[65] + s[137];
1497 gout[n*48+39] += + s[60] + s[150] + s[240] - s[56] - s[146] - s[236];
1498 gout[n*48+40] += + s[154] - s[226] - s[156] + s[228];
1499 gout[n*48+41] += + s[217] - s[73] - s[219] + s[75];
1500 gout[n*48+42] += + s[64] - s[136] - s[66] + s[138];
1501 gout[n*48+43] += + s[55] + s[145] + s[235] - s[57] - s[147] - s[237];
1502 gout[n*48+44] += + s[153] - s[225] + s[157] - s[229] + s[161] - s[233];
1503 gout[n*48+45] += + s[216] - s[72] + s[220] - s[76] + s[224] - s[80];
1504 gout[n*48+46] += + s[63] - s[135] + s[67] - s[139] + s[71] - s[143];
1505 gout[n*48+47] += + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242];
1506 }}}
int2e_ipsrsr1srsr2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1507 void int2e_ipsrsr1srsr2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1508 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
1509 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1510 }
int2e_ipsrsr1srsr2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1511 CACHE_SIZE_T int2e_ipsrsr1srsr2_cart(double *out, FINT *dims, FINT *shls,
1512 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1513 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
1514 CINTEnvVars envs;
1515 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1516 envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2;
1517 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1518 } // int2e_ipsrsr1srsr2_cart
int2e_ipsrsr1srsr2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1519 CACHE_SIZE_T int2e_ipsrsr1srsr2_sph(double *out, FINT *dims, FINT *shls,
1520 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1521 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
1522 CINTEnvVars envs;
1523 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1524 envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2;
1525 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1526 } // int2e_ipsrsr1srsr2_sph
int2e_ipsrsr1srsr2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1527 CACHE_SIZE_T int2e_ipsrsr1srsr2_spinor(double complex *out, FINT *dims, FINT *shls,
1528 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1529 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
1530 CINTEnvVars envs;
1531 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1532 envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2;
1533 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
1534 } // int2e_ipsrsr1srsr2_spinor
1535 ALL_CINT(int2e_ipsrsr1srsr2)
1536 ALL_CINT_FORTRAN_(int2e_ipsrsr1srsr2)
1537