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 /* <NABLA NABLA i|OVLP |j> */
CINTgout1e_int1e_ipipovlp(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_ipipovlp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
19 FINT nf = envs->nf;
20 FINT ix, iy, iz, n;
21 double *g0 = g;
22 double *g1 = g0 + envs->g_size * 3;
23 double *g2 = g1 + envs->g_size * 3;
24 double *g3 = g2 + envs->g_size * 3;
25 double s[9];
26 G1E_D_I(g1, g0, envs->i_l+1, envs->j_l, 0);
27 G1E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0);
28 G1E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0);
29 for (n = 0; n < nf; n++) {
30 ix = idx[0+n*3];
31 iy = idx[1+n*3];
32 iz = idx[2+n*3];
33 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
34 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
35 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
36 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
37 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
38 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
39 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
40 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
41 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
42 if (gout_empty) {
43 gout[n*9+0] = + s[0];
44 gout[n*9+1] = + s[3];
45 gout[n*9+2] = + s[6];
46 gout[n*9+3] = + s[1];
47 gout[n*9+4] = + s[4];
48 gout[n*9+5] = + s[7];
49 gout[n*9+6] = + s[2];
50 gout[n*9+7] = + s[5];
51 gout[n*9+8] = + s[8];
52 } else {
53 gout[n*9+0] += + s[0];
54 gout[n*9+1] += + s[3];
55 gout[n*9+2] += + s[6];
56 gout[n*9+3] += + s[1];
57 gout[n*9+4] += + s[4];
58 gout[n*9+5] += + s[7];
59 gout[n*9+6] += + s[2];
60 gout[n*9+7] += + s[5];
61 gout[n*9+8] += + s[8];
62 }}}
int1e_ipipovlp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)63 void int1e_ipipovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
64 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
65 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
66 }
int1e_ipipovlp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)67 CACHE_SIZE_T int1e_ipipovlp_cart(double *out, FINT *dims, FINT *shls,
68 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
69 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
70 CINTEnvVars envs;
71 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
72 envs.f_gout = &CINTgout1e_int1e_ipipovlp;
73 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
74 } // int1e_ipipovlp_cart
int1e_ipipovlp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)75 CACHE_SIZE_T int1e_ipipovlp_sph(double *out, FINT *dims, FINT *shls,
76 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
77 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
78 CINTEnvVars envs;
79 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
80 envs.f_gout = &CINTgout1e_int1e_ipipovlp;
81 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
82 } // int1e_ipipovlp_sph
int1e_ipipovlp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)83 CACHE_SIZE_T int1e_ipipovlp_spinor(double complex *out, FINT *dims, FINT *shls,
84 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
85 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
86 CINTEnvVars envs;
87 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
88 envs.f_gout = &CINTgout1e_int1e_ipipovlp;
89 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
90 } // int1e_ipipovlp_spinor
91 ALL_CINT1E(int1e_ipipovlp)
ALL_CINT1E_FORTRAN_(int1e_ipipovlp)92 ALL_CINT1E_FORTRAN_(int1e_ipipovlp)
93 /* <NABLA i|OVLP |NABLA j> */
94 void CINTgout1e_int1e_ipovlpip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
95 FINT nf = envs->nf;
96 FINT ix, iy, iz, n;
97 double *g0 = g;
98 double *g1 = g0 + envs->g_size * 3;
99 double *g2 = g1 + envs->g_size * 3;
100 double *g3 = g2 + envs->g_size * 3;
101 double s[9];
102 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
103 G1E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0);
104 G1E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0);
105 for (n = 0; n < nf; n++) {
106 ix = idx[0+n*3];
107 iy = idx[1+n*3];
108 iz = idx[2+n*3];
109 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
110 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
111 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
112 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
113 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
114 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
115 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
116 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
117 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
118 if (gout_empty) {
119 gout[n*9+0] = + s[0];
120 gout[n*9+1] = + s[1];
121 gout[n*9+2] = + s[2];
122 gout[n*9+3] = + s[3];
123 gout[n*9+4] = + s[4];
124 gout[n*9+5] = + s[5];
125 gout[n*9+6] = + s[6];
126 gout[n*9+7] = + s[7];
127 gout[n*9+8] = + s[8];
128 } else {
129 gout[n*9+0] += + s[0];
130 gout[n*9+1] += + s[1];
131 gout[n*9+2] += + s[2];
132 gout[n*9+3] += + s[3];
133 gout[n*9+4] += + s[4];
134 gout[n*9+5] += + s[5];
135 gout[n*9+6] += + s[6];
136 gout[n*9+7] += + s[7];
137 gout[n*9+8] += + s[8];
138 }}}
int1e_ipovlpip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)139 void int1e_ipovlpip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
140 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
141 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
142 }
int1e_ipovlpip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)143 CACHE_SIZE_T int1e_ipovlpip_cart(double *out, FINT *dims, FINT *shls,
144 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
145 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
146 CINTEnvVars envs;
147 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
148 envs.f_gout = &CINTgout1e_int1e_ipovlpip;
149 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
150 } // int1e_ipovlpip_cart
int1e_ipovlpip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)151 CACHE_SIZE_T int1e_ipovlpip_sph(double *out, FINT *dims, FINT *shls,
152 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
153 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
154 CINTEnvVars envs;
155 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
156 envs.f_gout = &CINTgout1e_int1e_ipovlpip;
157 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
158 } // int1e_ipovlpip_sph
int1e_ipovlpip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)159 CACHE_SIZE_T int1e_ipovlpip_spinor(double complex *out, FINT *dims, FINT *shls,
160 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
161 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
162 CINTEnvVars envs;
163 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
164 envs.f_gout = &CINTgout1e_int1e_ipovlpip;
165 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
166 } // int1e_ipovlpip_spinor
167 ALL_CINT1E(int1e_ipovlpip)
ALL_CINT1E_FORTRAN_(int1e_ipovlpip)168 ALL_CINT1E_FORTRAN_(int1e_ipovlpip)
169 /* <NABLA NABLA i|P DOT P |j> */
170 void CINTgout1e_int1e_ipipkin(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
171 FINT nf = envs->nf;
172 FINT ix, iy, iz, n;
173 double *g0 = g;
174 double *g1 = g0 + envs->g_size * 3;
175 double *g2 = g1 + envs->g_size * 3;
176 double *g3 = g2 + envs->g_size * 3;
177 double *g4 = g3 + envs->g_size * 3;
178 double *g5 = g4 + envs->g_size * 3;
179 double *g6 = g5 + envs->g_size * 3;
180 double *g7 = g6 + envs->g_size * 3;
181 double *g8 = g7 + envs->g_size * 3;
182 double *g9 = g8 + envs->g_size * 3;
183 double *g10 = g9 + envs->g_size * 3;
184 double *g11 = g10 + envs->g_size * 3;
185 double *g12 = g11 + envs->g_size * 3;
186 double *g13 = g12 + envs->g_size * 3;
187 double *g14 = g13 + envs->g_size * 3;
188 double *g15 = g14 + envs->g_size * 3;
189 double s[81];
190 G1E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0);
191 G1E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0);
192 G1E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0);
193 G1E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0);
194 G1E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0);
195 G1E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0);
196 G1E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0);
197 G1E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0);
198 G1E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0);
199 G1E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0);
200 G1E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0);
201 G1E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0);
202 G1E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0);
203 G1E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0);
204 G1E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0);
205 for (n = 0; n < nf; n++) {
206 ix = idx[0+n*3];
207 iy = idx[1+n*3];
208 iz = idx[2+n*3];
209 s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0];
210 s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0];
211 s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0];
212 s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0];
213 s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0];
214 s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0];
215 s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0];
216 s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0];
217 s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0];
218 s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0];
219 s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0];
220 s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0];
221 s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0];
222 s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0];
223 s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0];
224 s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0];
225 s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0];
226 s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0];
227 s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0];
228 s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0];
229 s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0];
230 s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0];
231 s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0];
232 s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0];
233 s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0];
234 s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0];
235 s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0];
236 s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0];
237 s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0];
238 s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0];
239 s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0];
240 s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0];
241 s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0];
242 s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0];
243 s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0];
244 s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0];
245 s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0];
246 s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0];
247 s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0];
248 s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0];
249 s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0];
250 s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0];
251 s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0];
252 s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0];
253 s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0];
254 s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0];
255 s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0];
256 s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0];
257 s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0];
258 s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0];
259 s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0];
260 s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0];
261 s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0];
262 s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0];
263 s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0];
264 s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0];
265 s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0];
266 s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0];
267 s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0];
268 s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0];
269 s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0];
270 s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0];
271 s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0];
272 s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0];
273 s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0];
274 s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0];
275 s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0];
276 s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0];
277 s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0];
278 s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0];
279 s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0];
280 s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0];
281 s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0];
282 s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0];
283 s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0];
284 s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0];
285 s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0];
286 s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0];
287 s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0];
288 s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0];
289 s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0];
290 if (gout_empty) {
291 gout[n*9+0] = - s[0] - s[4] - s[8];
292 gout[n*9+1] = - s[27] - s[31] - s[35];
293 gout[n*9+2] = - s[54] - s[58] - s[62];
294 gout[n*9+3] = - s[9] - s[13] - s[17];
295 gout[n*9+4] = - s[36] - s[40] - s[44];
296 gout[n*9+5] = - s[63] - s[67] - s[71];
297 gout[n*9+6] = - s[18] - s[22] - s[26];
298 gout[n*9+7] = - s[45] - s[49] - s[53];
299 gout[n*9+8] = - s[72] - s[76] - s[80];
300 } else {
301 gout[n*9+0] += - s[0] - s[4] - s[8];
302 gout[n*9+1] += - s[27] - s[31] - s[35];
303 gout[n*9+2] += - s[54] - s[58] - s[62];
304 gout[n*9+3] += - s[9] - s[13] - s[17];
305 gout[n*9+4] += - s[36] - s[40] - s[44];
306 gout[n*9+5] += - s[63] - s[67] - s[71];
307 gout[n*9+6] += - s[18] - s[22] - s[26];
308 gout[n*9+7] += - s[45] - s[49] - s[53];
309 gout[n*9+8] += - s[72] - s[76] - s[80];
310 }}}
int1e_ipipkin_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)311 void int1e_ipipkin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
312 FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 9};
313 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
314 }
int1e_ipipkin_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)315 CACHE_SIZE_T int1e_ipipkin_cart(double *out, FINT *dims, FINT *shls,
316 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
317 FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 9};
318 CINTEnvVars envs;
319 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
320 envs.f_gout = &CINTgout1e_int1e_ipipkin;
321 envs.common_factor *= 0.5;
322 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
323 } // int1e_ipipkin_cart
int1e_ipipkin_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)324 CACHE_SIZE_T int1e_ipipkin_sph(double *out, FINT *dims, FINT *shls,
325 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
326 FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 9};
327 CINTEnvVars envs;
328 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
329 envs.f_gout = &CINTgout1e_int1e_ipipkin;
330 envs.common_factor *= 0.5;
331 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
332 } // int1e_ipipkin_sph
int1e_ipipkin_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)333 CACHE_SIZE_T int1e_ipipkin_spinor(double complex *out, FINT *dims, FINT *shls,
334 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
335 FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 9};
336 CINTEnvVars envs;
337 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
338 envs.f_gout = &CINTgout1e_int1e_ipipkin;
339 envs.common_factor *= 0.5;
340 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
341 } // int1e_ipipkin_spinor
342 ALL_CINT1E(int1e_ipipkin)
ALL_CINT1E_FORTRAN_(int1e_ipipkin)343 ALL_CINT1E_FORTRAN_(int1e_ipipkin)
344 /* <NABLA i|P DOT P |NABLA j> */
345 void CINTgout1e_int1e_ipkinip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
346 FINT nf = envs->nf;
347 FINT ix, iy, iz, n;
348 double *g0 = g;
349 double *g1 = g0 + envs->g_size * 3;
350 double *g2 = g1 + envs->g_size * 3;
351 double *g3 = g2 + envs->g_size * 3;
352 double *g4 = g3 + envs->g_size * 3;
353 double *g5 = g4 + envs->g_size * 3;
354 double *g6 = g5 + envs->g_size * 3;
355 double *g7 = g6 + envs->g_size * 3;
356 double *g8 = g7 + envs->g_size * 3;
357 double *g9 = g8 + envs->g_size * 3;
358 double *g10 = g9 + envs->g_size * 3;
359 double *g11 = g10 + envs->g_size * 3;
360 double *g12 = g11 + envs->g_size * 3;
361 double *g13 = g12 + envs->g_size * 3;
362 double *g14 = g13 + envs->g_size * 3;
363 double *g15 = g14 + envs->g_size * 3;
364 double s[81];
365 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
366 G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0);
367 G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0);
368 G1E_D_J(g4, g0, envs->i_l+1, envs->j_l+2, 0);
369 G1E_D_J(g5, g4, envs->i_l+1, envs->j_l+0, 0);
370 G1E_D_J(g6, g4, envs->i_l+1, envs->j_l+1, 0);
371 G1E_D_J(g7, g6, envs->i_l+1, envs->j_l+0, 0);
372 G1E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0);
373 G1E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0);
374 G1E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0);
375 G1E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0);
376 G1E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0);
377 G1E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0);
378 G1E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0);
379 G1E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0);
380 for (n = 0; n < nf; n++) {
381 ix = idx[0+n*3];
382 iy = idx[1+n*3];
383 iz = idx[2+n*3];
384 s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0];
385 s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0];
386 s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0];
387 s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0];
388 s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0];
389 s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0];
390 s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0];
391 s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0];
392 s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0];
393 s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0];
394 s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0];
395 s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0];
396 s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0];
397 s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0];
398 s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0];
399 s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0];
400 s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0];
401 s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0];
402 s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0];
403 s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0];
404 s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0];
405 s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0];
406 s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0];
407 s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0];
408 s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0];
409 s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0];
410 s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0];
411 s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0];
412 s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0];
413 s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0];
414 s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0];
415 s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0];
416 s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0];
417 s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0];
418 s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0];
419 s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0];
420 s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0];
421 s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0];
422 s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0];
423 s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0];
424 s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0];
425 s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0];
426 s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0];
427 s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0];
428 s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0];
429 s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0];
430 s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0];
431 s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0];
432 s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0];
433 s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0];
434 s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0];
435 s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0];
436 s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0];
437 s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0];
438 s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0];
439 s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0];
440 s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0];
441 s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0];
442 s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0];
443 s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0];
444 s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0];
445 s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0];
446 s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0];
447 s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0];
448 s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0];
449 s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0];
450 s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0];
451 s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0];
452 s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0];
453 s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0];
454 s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0];
455 s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0];
456 s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0];
457 s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0];
458 s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0];
459 s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0];
460 s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0];
461 s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0];
462 s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0];
463 s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0];
464 s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0];
465 if (gout_empty) {
466 gout[n*9+0] = - s[0] - s[12] - s[24];
467 gout[n*9+1] = - s[1] - s[13] - s[25];
468 gout[n*9+2] = - s[2] - s[14] - s[26];
469 gout[n*9+3] = - s[27] - s[39] - s[51];
470 gout[n*9+4] = - s[28] - s[40] - s[52];
471 gout[n*9+5] = - s[29] - s[41] - s[53];
472 gout[n*9+6] = - s[54] - s[66] - s[78];
473 gout[n*9+7] = - s[55] - s[67] - s[79];
474 gout[n*9+8] = - s[56] - s[68] - s[80];
475 } else {
476 gout[n*9+0] += - s[0] - s[12] - s[24];
477 gout[n*9+1] += - s[1] - s[13] - s[25];
478 gout[n*9+2] += - s[2] - s[14] - s[26];
479 gout[n*9+3] += - s[27] - s[39] - s[51];
480 gout[n*9+4] += - s[28] - s[40] - s[52];
481 gout[n*9+5] += - s[29] - s[41] - s[53];
482 gout[n*9+6] += - s[54] - s[66] - s[78];
483 gout[n*9+7] += - s[55] - s[67] - s[79];
484 gout[n*9+8] += - s[56] - s[68] - s[80];
485 }}}
int1e_ipkinip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)486 void int1e_ipkinip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
487 FINT ng[] = {1, 3, 0, 0, 4, 1, 1, 9};
488 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
489 }
int1e_ipkinip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)490 CACHE_SIZE_T int1e_ipkinip_cart(double *out, FINT *dims, FINT *shls,
491 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
492 FINT ng[] = {1, 3, 0, 0, 4, 1, 1, 9};
493 CINTEnvVars envs;
494 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
495 envs.f_gout = &CINTgout1e_int1e_ipkinip;
496 envs.common_factor *= 0.5;
497 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
498 } // int1e_ipkinip_cart
int1e_ipkinip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)499 CACHE_SIZE_T int1e_ipkinip_sph(double *out, FINT *dims, FINT *shls,
500 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
501 FINT ng[] = {1, 3, 0, 0, 4, 1, 1, 9};
502 CINTEnvVars envs;
503 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
504 envs.f_gout = &CINTgout1e_int1e_ipkinip;
505 envs.common_factor *= 0.5;
506 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
507 } // int1e_ipkinip_sph
int1e_ipkinip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)508 CACHE_SIZE_T int1e_ipkinip_spinor(double complex *out, FINT *dims, FINT *shls,
509 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
510 FINT ng[] = {1, 3, 0, 0, 4, 1, 1, 9};
511 CINTEnvVars envs;
512 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
513 envs.f_gout = &CINTgout1e_int1e_ipkinip;
514 envs.common_factor *= 0.5;
515 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
516 } // int1e_ipkinip_spinor
517 ALL_CINT1E(int1e_ipkinip)
ALL_CINT1E_FORTRAN_(int1e_ipkinip)518 ALL_CINT1E_FORTRAN_(int1e_ipkinip)
519 /* <NABLA NABLA i|NUC |j> */
520 void CINTgout1e_int1e_ipipnuc(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
521 FINT nf = envs->nf;
522 FINT nrys_roots = envs->nrys_roots;
523 FINT ix, iy, iz, n, i;
524 double *g0 = g;
525 double *g1 = g0 + envs->g_size * 3;
526 double *g2 = g1 + envs->g_size * 3;
527 double *g3 = g2 + envs->g_size * 3;
528 G2E_D_I(g1, g0, envs->i_l+1, envs->j_l, 0, 0);
529 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
530 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
531 double s[9];
532 for (n = 0; n < nf; n++) {
533 ix = idx[0+n*3];
534 iy = idx[1+n*3];
535 iz = idx[2+n*3];
536 for (i = 0; i < 9; i++) { s[i] = 0; }
537 for (i = 0; i < nrys_roots; i++) {
538 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
539 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
540 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
541 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
542 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
543 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
544 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
545 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
546 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
547 }
548 if (gout_empty) {
549 gout[n*9+0] = + s[0];
550 gout[n*9+1] = + s[3];
551 gout[n*9+2] = + s[6];
552 gout[n*9+3] = + s[1];
553 gout[n*9+4] = + s[4];
554 gout[n*9+5] = + s[7];
555 gout[n*9+6] = + s[2];
556 gout[n*9+7] = + s[5];
557 gout[n*9+8] = + s[8];
558 } else {
559 gout[n*9+0] += + s[0];
560 gout[n*9+1] += + s[3];
561 gout[n*9+2] += + s[6];
562 gout[n*9+3] += + s[1];
563 gout[n*9+4] += + s[4];
564 gout[n*9+5] += + s[7];
565 gout[n*9+6] += + s[2];
566 gout[n*9+7] += + s[5];
567 gout[n*9+8] += + s[8];
568 }}}
int1e_ipipnuc_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)569 void int1e_ipipnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
570 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
571 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
572 }
int1e_ipipnuc_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)573 CACHE_SIZE_T int1e_ipipnuc_cart(double *out, FINT *dims, FINT *shls,
574 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
575 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
576 CINTEnvVars envs;
577 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
578 envs.f_gout = &CINTgout1e_int1e_ipipnuc;
579 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
580 } // int1e_ipipnuc_cart
int1e_ipipnuc_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)581 CACHE_SIZE_T int1e_ipipnuc_sph(double *out, FINT *dims, FINT *shls,
582 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
583 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
584 CINTEnvVars envs;
585 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
586 envs.f_gout = &CINTgout1e_int1e_ipipnuc;
587 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
588 } // int1e_ipipnuc_sph
int1e_ipipnuc_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)589 CACHE_SIZE_T int1e_ipipnuc_spinor(double complex *out, FINT *dims, FINT *shls,
590 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
591 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
592 CINTEnvVars envs;
593 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
594 envs.f_gout = &CINTgout1e_int1e_ipipnuc;
595 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
596 } // int1e_ipipnuc_spinor
597 ALL_CINT1E(int1e_ipipnuc)
ALL_CINT1E_FORTRAN_(int1e_ipipnuc)598 ALL_CINT1E_FORTRAN_(int1e_ipipnuc)
599 /* <NABLA i|NUC |NABLA j> */
600 void CINTgout1e_int1e_ipnucip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
601 FINT nf = envs->nf;
602 FINT nrys_roots = envs->nrys_roots;
603 FINT ix, iy, iz, n, i;
604 double *g0 = g;
605 double *g1 = g0 + envs->g_size * 3;
606 double *g2 = g1 + envs->g_size * 3;
607 double *g3 = g2 + envs->g_size * 3;
608 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
609 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
610 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
611 double s[9];
612 for (n = 0; n < nf; n++) {
613 ix = idx[0+n*3];
614 iy = idx[1+n*3];
615 iz = idx[2+n*3];
616 for (i = 0; i < 9; i++) { s[i] = 0; }
617 for (i = 0; i < nrys_roots; i++) {
618 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
619 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
620 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
621 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
622 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
623 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
624 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
625 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
626 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
627 }
628 if (gout_empty) {
629 gout[n*9+0] = + s[0];
630 gout[n*9+1] = + s[1];
631 gout[n*9+2] = + s[2];
632 gout[n*9+3] = + s[3];
633 gout[n*9+4] = + s[4];
634 gout[n*9+5] = + s[5];
635 gout[n*9+6] = + s[6];
636 gout[n*9+7] = + s[7];
637 gout[n*9+8] = + s[8];
638 } else {
639 gout[n*9+0] += + s[0];
640 gout[n*9+1] += + s[1];
641 gout[n*9+2] += + s[2];
642 gout[n*9+3] += + s[3];
643 gout[n*9+4] += + s[4];
644 gout[n*9+5] += + s[5];
645 gout[n*9+6] += + s[6];
646 gout[n*9+7] += + s[7];
647 gout[n*9+8] += + s[8];
648 }}}
int1e_ipnucip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)649 void int1e_ipnucip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
650 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
651 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
652 }
int1e_ipnucip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)653 CACHE_SIZE_T int1e_ipnucip_cart(double *out, FINT *dims, FINT *shls,
654 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
655 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
656 CINTEnvVars envs;
657 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
658 envs.f_gout = &CINTgout1e_int1e_ipnucip;
659 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
660 } // int1e_ipnucip_cart
int1e_ipnucip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)661 CACHE_SIZE_T int1e_ipnucip_sph(double *out, FINT *dims, FINT *shls,
662 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
663 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
664 CINTEnvVars envs;
665 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
666 envs.f_gout = &CINTgout1e_int1e_ipnucip;
667 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
668 } // int1e_ipnucip_sph
int1e_ipnucip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)669 CACHE_SIZE_T int1e_ipnucip_spinor(double complex *out, FINT *dims, FINT *shls,
670 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
671 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
672 CINTEnvVars envs;
673 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
674 envs.f_gout = &CINTgout1e_int1e_ipnucip;
675 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
676 } // int1e_ipnucip_spinor
677 ALL_CINT1E(int1e_ipnucip)
ALL_CINT1E_FORTRAN_(int1e_ipnucip)678 ALL_CINT1E_FORTRAN_(int1e_ipnucip)
679 /* <NABLA NABLA i|RINV |j> */
680 void CINTgout1e_int1e_ipiprinv(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
681 FINT nf = envs->nf;
682 FINT nrys_roots = envs->nrys_roots;
683 FINT ix, iy, iz, n, i;
684 double *g0 = g;
685 double *g1 = g0 + envs->g_size * 3;
686 double *g2 = g1 + envs->g_size * 3;
687 double *g3 = g2 + envs->g_size * 3;
688 G2E_D_I(g1, g0, envs->i_l+1, envs->j_l, 0, 0);
689 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
690 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
691 double s[9];
692 for (n = 0; n < nf; n++) {
693 ix = idx[0+n*3];
694 iy = idx[1+n*3];
695 iz = idx[2+n*3];
696 for (i = 0; i < 9; i++) { s[i] = 0; }
697 for (i = 0; i < nrys_roots; i++) {
698 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
699 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
700 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
701 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
702 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
703 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
704 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
705 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
706 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
707 }
708 if (gout_empty) {
709 gout[n*9+0] = + s[0];
710 gout[n*9+1] = + s[3];
711 gout[n*9+2] = + s[6];
712 gout[n*9+3] = + s[1];
713 gout[n*9+4] = + s[4];
714 gout[n*9+5] = + s[7];
715 gout[n*9+6] = + s[2];
716 gout[n*9+7] = + s[5];
717 gout[n*9+8] = + s[8];
718 } else {
719 gout[n*9+0] += + s[0];
720 gout[n*9+1] += + s[3];
721 gout[n*9+2] += + s[6];
722 gout[n*9+3] += + s[1];
723 gout[n*9+4] += + s[4];
724 gout[n*9+5] += + s[7];
725 gout[n*9+6] += + s[2];
726 gout[n*9+7] += + s[5];
727 gout[n*9+8] += + s[8];
728 }}}
int1e_ipiprinv_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)729 void int1e_ipiprinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
730 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
731 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
732 }
int1e_ipiprinv_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)733 CACHE_SIZE_T int1e_ipiprinv_cart(double *out, FINT *dims, FINT *shls,
734 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
735 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
736 CINTEnvVars envs;
737 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
738 envs.f_gout = &CINTgout1e_int1e_ipiprinv;
739 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
740 } // int1e_ipiprinv_cart
int1e_ipiprinv_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)741 CACHE_SIZE_T int1e_ipiprinv_sph(double *out, FINT *dims, FINT *shls,
742 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
743 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
744 CINTEnvVars envs;
745 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
746 envs.f_gout = &CINTgout1e_int1e_ipiprinv;
747 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
748 } // int1e_ipiprinv_sph
int1e_ipiprinv_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)749 CACHE_SIZE_T int1e_ipiprinv_spinor(double complex *out, FINT *dims, FINT *shls,
750 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
751 FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
752 CINTEnvVars envs;
753 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
754 envs.f_gout = &CINTgout1e_int1e_ipiprinv;
755 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
756 } // int1e_ipiprinv_spinor
757 ALL_CINT1E(int1e_ipiprinv)
ALL_CINT1E_FORTRAN_(int1e_ipiprinv)758 ALL_CINT1E_FORTRAN_(int1e_ipiprinv)
759 /* <NABLA i|RINV |NABLA j> */
760 void CINTgout1e_int1e_iprinvip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
761 FINT nf = envs->nf;
762 FINT nrys_roots = envs->nrys_roots;
763 FINT ix, iy, iz, n, i;
764 double *g0 = g;
765 double *g1 = g0 + envs->g_size * 3;
766 double *g2 = g1 + envs->g_size * 3;
767 double *g3 = g2 + envs->g_size * 3;
768 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
769 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
770 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
771 double s[9];
772 for (n = 0; n < nf; n++) {
773 ix = idx[0+n*3];
774 iy = idx[1+n*3];
775 iz = idx[2+n*3];
776 for (i = 0; i < 9; i++) { s[i] = 0; }
777 for (i = 0; i < nrys_roots; i++) {
778 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
779 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
780 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
781 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
782 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
783 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
784 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
785 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
786 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
787 }
788 if (gout_empty) {
789 gout[n*9+0] = + s[0];
790 gout[n*9+1] = + s[1];
791 gout[n*9+2] = + s[2];
792 gout[n*9+3] = + s[3];
793 gout[n*9+4] = + s[4];
794 gout[n*9+5] = + s[5];
795 gout[n*9+6] = + s[6];
796 gout[n*9+7] = + s[7];
797 gout[n*9+8] = + s[8];
798 } else {
799 gout[n*9+0] += + s[0];
800 gout[n*9+1] += + s[1];
801 gout[n*9+2] += + s[2];
802 gout[n*9+3] += + s[3];
803 gout[n*9+4] += + s[4];
804 gout[n*9+5] += + s[5];
805 gout[n*9+6] += + s[6];
806 gout[n*9+7] += + s[7];
807 gout[n*9+8] += + s[8];
808 }}}
int1e_iprinvip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)809 void int1e_iprinvip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
810 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
811 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
812 }
int1e_iprinvip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)813 CACHE_SIZE_T int1e_iprinvip_cart(double *out, FINT *dims, FINT *shls,
814 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
815 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
816 CINTEnvVars envs;
817 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
818 envs.f_gout = &CINTgout1e_int1e_iprinvip;
819 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
820 } // int1e_iprinvip_cart
int1e_iprinvip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)821 CACHE_SIZE_T int1e_iprinvip_sph(double *out, FINT *dims, FINT *shls,
822 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
823 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
824 CINTEnvVars envs;
825 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
826 envs.f_gout = &CINTgout1e_int1e_iprinvip;
827 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
828 } // int1e_iprinvip_sph
int1e_iprinvip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)829 CACHE_SIZE_T int1e_iprinvip_spinor(double complex *out, FINT *dims, FINT *shls,
830 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
831 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
832 CINTEnvVars envs;
833 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
834 envs.f_gout = &CINTgout1e_int1e_iprinvip;
835 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
836 } // int1e_iprinvip_spinor
837 ALL_CINT1E(int1e_iprinvip)
ALL_CINT1E_FORTRAN_(int1e_iprinvip)838 ALL_CINT1E_FORTRAN_(int1e_iprinvip)
839 /* <k NABLA NABLA i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
840  * = (NABLA NABLA i j|R12 |k l) */
841 void CINTgout2e_int2e_ipip1(double *gout,
842 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
843 FINT nf = envs->nf;
844 FINT nrys_roots = envs->nrys_roots;
845 FINT ix, iy, iz, i, n;
846 double *g0 = g;
847 double *g1 = g0 + envs->g_size * 3;
848 double *g2 = g1 + envs->g_size * 3;
849 double *g3 = g2 + envs->g_size * 3;
850 G2E_D_I(g1, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
851 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
852 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
853 double s[9];
854 for (n = 0; n < nf; n++) {
855 ix = idx[0+n*3];
856 iy = idx[1+n*3];
857 iz = idx[2+n*3];
858 for (i = 0; i < 9; i++) { s[i] = 0; }
859 for (i = 0; i < nrys_roots; i++) {
860 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
861 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
862 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
863 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
864 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
865 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
866 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
867 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
868 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
869 }
870 if (gout_empty) {
871 gout[n*9+0] = + s[0];
872 gout[n*9+1] = + s[3];
873 gout[n*9+2] = + s[6];
874 gout[n*9+3] = + s[1];
875 gout[n*9+4] = + s[4];
876 gout[n*9+5] = + s[7];
877 gout[n*9+6] = + s[2];
878 gout[n*9+7] = + s[5];
879 gout[n*9+8] = + s[8];
880 } else {
881 gout[n*9+0] += + s[0];
882 gout[n*9+1] += + s[3];
883 gout[n*9+2] += + s[6];
884 gout[n*9+3] += + s[1];
885 gout[n*9+4] += + s[4];
886 gout[n*9+5] += + s[7];
887 gout[n*9+6] += + s[2];
888 gout[n*9+7] += + s[5];
889 gout[n*9+8] += + s[8];
890 }}}
int2e_ipip1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)891 void int2e_ipip1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
892 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
893 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
894 }
int2e_ipip1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)895 CACHE_SIZE_T int2e_ipip1_cart(double *out, FINT *dims, FINT *shls,
896 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
897 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
898 CINTEnvVars envs;
899 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
900 envs.f_gout = &CINTgout2e_int2e_ipip1;
901 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
902 } // int2e_ipip1_cart
int2e_ipip1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)903 CACHE_SIZE_T int2e_ipip1_sph(double *out, FINT *dims, FINT *shls,
904 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
905 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
906 CINTEnvVars envs;
907 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
908 envs.f_gout = &CINTgout2e_int2e_ipip1;
909 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
910 } // int2e_ipip1_sph
int2e_ipip1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)911 CACHE_SIZE_T int2e_ipip1_spinor(double complex *out, FINT *dims, FINT *shls,
912 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
913 FINT ng[] = {2, 0, 0, 0, 2, 1, 1, 9};
914 CINTEnvVars envs;
915 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
916 envs.f_gout = &CINTgout2e_int2e_ipip1;
917 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
918 } // int2e_ipip1_spinor
919 ALL_CINT(int2e_ipip1)
ALL_CINT_FORTRAN_(int2e_ipip1)920 ALL_CINT_FORTRAN_(int2e_ipip1)
921 /* <k NABLA i|R12 |NABLA j l> : i,j \in electron 1; k,l \in electron 2
922  * = (NABLA i NABLA j|R12 |k l) */
923 void CINTgout2e_int2e_ipvip1(double *gout,
924 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
925 FINT nf = envs->nf;
926 FINT nrys_roots = envs->nrys_roots;
927 FINT ix, iy, iz, i, n;
928 double *g0 = g;
929 double *g1 = g0 + envs->g_size * 3;
930 double *g2 = g1 + envs->g_size * 3;
931 double *g3 = g2 + envs->g_size * 3;
932 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
933 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
934 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
935 double s[9];
936 for (n = 0; n < nf; n++) {
937 ix = idx[0+n*3];
938 iy = idx[1+n*3];
939 iz = idx[2+n*3];
940 for (i = 0; i < 9; i++) { s[i] = 0; }
941 for (i = 0; i < nrys_roots; i++) {
942 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
943 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
944 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
945 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
946 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
947 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
948 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
949 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
950 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
951 }
952 if (gout_empty) {
953 gout[n*9+0] = + s[0];
954 gout[n*9+1] = + s[1];
955 gout[n*9+2] = + s[2];
956 gout[n*9+3] = + s[3];
957 gout[n*9+4] = + s[4];
958 gout[n*9+5] = + s[5];
959 gout[n*9+6] = + s[6];
960 gout[n*9+7] = + s[7];
961 gout[n*9+8] = + s[8];
962 } else {
963 gout[n*9+0] += + s[0];
964 gout[n*9+1] += + s[1];
965 gout[n*9+2] += + s[2];
966 gout[n*9+3] += + s[3];
967 gout[n*9+4] += + s[4];
968 gout[n*9+5] += + s[5];
969 gout[n*9+6] += + s[6];
970 gout[n*9+7] += + s[7];
971 gout[n*9+8] += + s[8];
972 }}}
int2e_ipvip1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)973 void int2e_ipvip1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
974 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
975 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
976 }
int2e_ipvip1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)977 CACHE_SIZE_T int2e_ipvip1_cart(double *out, FINT *dims, FINT *shls,
978 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
979 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
980 CINTEnvVars envs;
981 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
982 envs.f_gout = &CINTgout2e_int2e_ipvip1;
983 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
984 } // int2e_ipvip1_cart
int2e_ipvip1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)985 CACHE_SIZE_T int2e_ipvip1_sph(double *out, FINT *dims, FINT *shls,
986 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
987 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
988 CINTEnvVars envs;
989 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
990 envs.f_gout = &CINTgout2e_int2e_ipvip1;
991 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
992 } // int2e_ipvip1_sph
int2e_ipvip1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)993 CACHE_SIZE_T int2e_ipvip1_spinor(double complex *out, FINT *dims, FINT *shls,
994 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
995 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 9};
996 CINTEnvVars envs;
997 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
998 envs.f_gout = &CINTgout2e_int2e_ipvip1;
999 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
1000 } // int2e_ipvip1_spinor
1001 ALL_CINT(int2e_ipvip1)
ALL_CINT_FORTRAN_(int2e_ipvip1)1002 ALL_CINT_FORTRAN_(int2e_ipvip1)
1003 /* <NABLA k NABLA i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
1004  * = (NABLA i j|R12 |NABLA k l) */
1005 void CINTgout2e_int2e_ip1ip2(double *gout,
1006 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1007 FINT nf = envs->nf;
1008 FINT nrys_roots = envs->nrys_roots;
1009 FINT ix, iy, iz, i, n;
1010 double *g0 = g;
1011 double *g1 = g0 + envs->g_size * 3;
1012 double *g2 = g1 + envs->g_size * 3;
1013 double *g3 = g2 + envs->g_size * 3;
1014 G2E_D_K(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
1015 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1016 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1017 double s[9];
1018 for (n = 0; n < nf; n++) {
1019 ix = idx[0+n*3];
1020 iy = idx[1+n*3];
1021 iz = idx[2+n*3];
1022 for (i = 0; i < 9; i++) { s[i] = 0; }
1023 for (i = 0; i < nrys_roots; i++) {
1024 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1025 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1026 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1027 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1028 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1029 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1030 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1031 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1032 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1033 }
1034 if (gout_empty) {
1035 gout[n*9+0] = + s[0];
1036 gout[n*9+1] = + s[1];
1037 gout[n*9+2] = + s[2];
1038 gout[n*9+3] = + s[3];
1039 gout[n*9+4] = + s[4];
1040 gout[n*9+5] = + s[5];
1041 gout[n*9+6] = + s[6];
1042 gout[n*9+7] = + s[7];
1043 gout[n*9+8] = + s[8];
1044 } else {
1045 gout[n*9+0] += + s[0];
1046 gout[n*9+1] += + s[1];
1047 gout[n*9+2] += + s[2];
1048 gout[n*9+3] += + s[3];
1049 gout[n*9+4] += + s[4];
1050 gout[n*9+5] += + s[5];
1051 gout[n*9+6] += + s[6];
1052 gout[n*9+7] += + s[7];
1053 gout[n*9+8] += + s[8];
1054 }}}
int2e_ip1ip2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1055 void int2e_ip1ip2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1056 FINT ng[] = {1, 0, 1, 0, 2, 1, 1, 9};
1057 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1058 }
int2e_ip1ip2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1059 CACHE_SIZE_T int2e_ip1ip2_cart(double *out, FINT *dims, FINT *shls,
1060 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1061 FINT ng[] = {1, 0, 1, 0, 2, 1, 1, 9};
1062 CINTEnvVars envs;
1063 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1064 envs.f_gout = &CINTgout2e_int2e_ip1ip2;
1065 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1066 } // int2e_ip1ip2_cart
int2e_ip1ip2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1067 CACHE_SIZE_T int2e_ip1ip2_sph(double *out, FINT *dims, FINT *shls,
1068 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1069 FINT ng[] = {1, 0, 1, 0, 2, 1, 1, 9};
1070 CINTEnvVars envs;
1071 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1072 envs.f_gout = &CINTgout2e_int2e_ip1ip2;
1073 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1074 } // int2e_ip1ip2_sph
int2e_ip1ip2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1075 CACHE_SIZE_T int2e_ip1ip2_spinor(double complex *out, FINT *dims, FINT *shls,
1076 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1077 FINT ng[] = {1, 0, 1, 0, 2, 1, 1, 9};
1078 CINTEnvVars envs;
1079 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1080 envs.f_gout = &CINTgout2e_int2e_ip1ip2;
1081 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
1082 } // int2e_ip1ip2_spinor
1083 ALL_CINT(int2e_ip1ip2)
ALL_CINT_FORTRAN_(int2e_ip1ip2)1084 ALL_CINT_FORTRAN_(int2e_ip1ip2)
1085 /* <P* NABLA NABLA i|NUC DOT P |j> */
1086 void CINTgout1e_int1e_ipippnucp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1087 FINT nf = envs->nf;
1088 FINT nrys_roots = envs->nrys_roots;
1089 FINT ix, iy, iz, n, i;
1090 double *g0 = g;
1091 double *g1 = g0 + envs->g_size * 3;
1092 double *g2 = g1 + envs->g_size * 3;
1093 double *g3 = g2 + envs->g_size * 3;
1094 double *g4 = g3 + envs->g_size * 3;
1095 double *g5 = g4 + envs->g_size * 3;
1096 double *g6 = g5 + envs->g_size * 3;
1097 double *g7 = g6 + envs->g_size * 3;
1098 double *g8 = g7 + envs->g_size * 3;
1099 double *g9 = g8 + envs->g_size * 3;
1100 double *g10 = g9 + envs->g_size * 3;
1101 double *g11 = g10 + envs->g_size * 3;
1102 double *g12 = g11 + envs->g_size * 3;
1103 double *g13 = g12 + envs->g_size * 3;
1104 double *g14 = g13 + envs->g_size * 3;
1105 double *g15 = g14 + envs->g_size * 3;
1106 G2E_D_J(g1, g0, envs->i_l+3, envs->j_l+0, 0, 0);
1107 G2E_D_I(g2, g0, envs->i_l+2, envs->j_l, 0, 0);
1108 G2E_D_I(g3, g1, envs->i_l+2, envs->j_l, 0, 0);
1109 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
1110 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
1111 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
1112 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
1113 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
1114 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
1115 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
1116 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
1117 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
1118 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
1119 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
1120 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
1121 double s[81];
1122 for (n = 0; n < nf; n++) {
1123 ix = idx[0+n*3];
1124 iy = idx[1+n*3];
1125 iz = idx[2+n*3];
1126 for (i = 0; i < 81; i++) { s[i] = 0; }
1127 for (i = 0; i < nrys_roots; i++) {
1128 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1129 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1130 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1131 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1132 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1133 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1134 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1135 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1136 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1137 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1138 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1139 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1140 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1141 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1142 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1143 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1144 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1145 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1146 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1147 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1148 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1149 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1150 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1151 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1152 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1153 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1154 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1155 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1156 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1157 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1158 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1159 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1160 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1161 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1162 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1163 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1164 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1165 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1166 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1167 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1168 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1169 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1170 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1171 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1172 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1173 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1174 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1175 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1176 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1177 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1178 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1179 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1180 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1181 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1182 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1183 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1184 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1185 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1186 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1187 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1188 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1189 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1190 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1191 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1192 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1193 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1194 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1195 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1196 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1197 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1198 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1199 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1200 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1201 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1202 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1203 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1204 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1205 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1206 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1207 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1208 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1209 }
1210 if (gout_empty) {
1211 gout[n*9+0] = + s[0] + s[4] + s[8];
1212 gout[n*9+1] = + s[27] + s[31] + s[35];
1213 gout[n*9+2] = + s[54] + s[58] + s[62];
1214 gout[n*9+3] = + s[9] + s[13] + s[17];
1215 gout[n*9+4] = + s[36] + s[40] + s[44];
1216 gout[n*9+5] = + s[63] + s[67] + s[71];
1217 gout[n*9+6] = + s[18] + s[22] + s[26];
1218 gout[n*9+7] = + s[45] + s[49] + s[53];
1219 gout[n*9+8] = + s[72] + s[76] + s[80];
1220 } else {
1221 gout[n*9+0] += + s[0] + s[4] + s[8];
1222 gout[n*9+1] += + s[27] + s[31] + s[35];
1223 gout[n*9+2] += + s[54] + s[58] + s[62];
1224 gout[n*9+3] += + s[9] + s[13] + s[17];
1225 gout[n*9+4] += + s[36] + s[40] + s[44];
1226 gout[n*9+5] += + s[63] + s[67] + s[71];
1227 gout[n*9+6] += + s[18] + s[22] + s[26];
1228 gout[n*9+7] += + s[45] + s[49] + s[53];
1229 gout[n*9+8] += + s[72] + s[76] + s[80];
1230 }}}
int1e_ipippnucp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1231 void int1e_ipippnucp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1232 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1233 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1234 }
int1e_ipippnucp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1235 CACHE_SIZE_T int1e_ipippnucp_cart(double *out, FINT *dims, FINT *shls,
1236 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1237 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1238 CINTEnvVars envs;
1239 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1240 envs.f_gout = &CINTgout1e_int1e_ipippnucp;
1241 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
1242 } // int1e_ipippnucp_cart
int1e_ipippnucp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1243 CACHE_SIZE_T int1e_ipippnucp_sph(double *out, FINT *dims, FINT *shls,
1244 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1245 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1246 CINTEnvVars envs;
1247 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1248 envs.f_gout = &CINTgout1e_int1e_ipippnucp;
1249 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
1250 } // int1e_ipippnucp_sph
int1e_ipippnucp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1251 CACHE_SIZE_T int1e_ipippnucp_spinor(double complex *out, FINT *dims, FINT *shls,
1252 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1253 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1254 CINTEnvVars envs;
1255 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1256 envs.f_gout = &CINTgout1e_int1e_ipippnucp;
1257 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
1258 } // int1e_ipippnucp_spinor
1259 ALL_CINT1E(int1e_ipippnucp)
ALL_CINT1E_FORTRAN_(int1e_ipippnucp)1260 ALL_CINT1E_FORTRAN_(int1e_ipippnucp)
1261 /* <P* NABLA i|NUC DOT P |NABLA j> */
1262 void CINTgout1e_int1e_ippnucpip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1263 FINT nf = envs->nf;
1264 FINT nrys_roots = envs->nrys_roots;
1265 FINT ix, iy, iz, n, i;
1266 double *g0 = g;
1267 double *g1 = g0 + envs->g_size * 3;
1268 double *g2 = g1 + envs->g_size * 3;
1269 double *g3 = g2 + envs->g_size * 3;
1270 double *g4 = g3 + envs->g_size * 3;
1271 double *g5 = g4 + envs->g_size * 3;
1272 double *g6 = g5 + envs->g_size * 3;
1273 double *g7 = g6 + envs->g_size * 3;
1274 double *g8 = g7 + envs->g_size * 3;
1275 double *g9 = g8 + envs->g_size * 3;
1276 double *g10 = g9 + envs->g_size * 3;
1277 double *g11 = g10 + envs->g_size * 3;
1278 double *g12 = g11 + envs->g_size * 3;
1279 double *g13 = g12 + envs->g_size * 3;
1280 double *g14 = g13 + envs->g_size * 3;
1281 double *g15 = g14 + envs->g_size * 3;
1282 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
1283 G2E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0, 0);
1284 G2E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0, 0);
1285 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
1286 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
1287 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
1288 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
1289 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
1290 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
1291 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
1292 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
1293 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
1294 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
1295 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
1296 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
1297 double s[81];
1298 for (n = 0; n < nf; n++) {
1299 ix = idx[0+n*3];
1300 iy = idx[1+n*3];
1301 iz = idx[2+n*3];
1302 for (i = 0; i < 81; i++) { s[i] = 0; }
1303 for (i = 0; i < nrys_roots; i++) {
1304 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1305 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1306 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1307 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1308 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1309 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1310 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1311 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1312 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1313 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1314 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1315 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1316 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1317 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1318 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1319 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1320 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1321 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1322 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1323 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1324 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1325 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1326 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1327 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1328 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1329 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1330 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1331 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1332 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1333 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1334 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1335 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1336 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1337 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1338 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1339 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1340 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1341 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1342 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1343 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1344 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1345 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1346 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1347 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1348 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1349 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1350 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1351 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1352 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1353 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1354 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1355 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1356 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1357 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1358 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1359 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1360 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1361 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1362 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1363 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1364 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1365 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1366 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1367 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1368 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1369 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1370 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1371 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1372 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1373 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1374 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1375 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1376 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1377 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1378 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1379 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1380 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1381 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1382 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1383 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1384 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1385 }
1386 if (gout_empty) {
1387 gout[n*9+0] = + s[0] + s[12] + s[24];
1388 gout[n*9+1] = + s[27] + s[39] + s[51];
1389 gout[n*9+2] = + s[54] + s[66] + s[78];
1390 gout[n*9+3] = + s[1] + s[13] + s[25];
1391 gout[n*9+4] = + s[28] + s[40] + s[52];
1392 gout[n*9+5] = + s[55] + s[67] + s[79];
1393 gout[n*9+6] = + s[2] + s[14] + s[26];
1394 gout[n*9+7] = + s[29] + s[41] + s[53];
1395 gout[n*9+8] = + s[56] + s[68] + s[80];
1396 } else {
1397 gout[n*9+0] += + s[0] + s[12] + s[24];
1398 gout[n*9+1] += + s[27] + s[39] + s[51];
1399 gout[n*9+2] += + s[54] + s[66] + s[78];
1400 gout[n*9+3] += + s[1] + s[13] + s[25];
1401 gout[n*9+4] += + s[28] + s[40] + s[52];
1402 gout[n*9+5] += + s[55] + s[67] + s[79];
1403 gout[n*9+6] += + s[2] + s[14] + s[26];
1404 gout[n*9+7] += + s[29] + s[41] + s[53];
1405 gout[n*9+8] += + s[56] + s[68] + s[80];
1406 }}}
int1e_ippnucpip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1407 void int1e_ippnucpip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1408 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1409 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1410 }
int1e_ippnucpip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1411 CACHE_SIZE_T int1e_ippnucpip_cart(double *out, FINT *dims, FINT *shls,
1412 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1413 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1414 CINTEnvVars envs;
1415 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1416 envs.f_gout = &CINTgout1e_int1e_ippnucpip;
1417 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
1418 } // int1e_ippnucpip_cart
int1e_ippnucpip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1419 CACHE_SIZE_T int1e_ippnucpip_sph(double *out, FINT *dims, FINT *shls,
1420 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1421 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1422 CINTEnvVars envs;
1423 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1424 envs.f_gout = &CINTgout1e_int1e_ippnucpip;
1425 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
1426 } // int1e_ippnucpip_sph
int1e_ippnucpip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1427 CACHE_SIZE_T int1e_ippnucpip_spinor(double complex *out, FINT *dims, FINT *shls,
1428 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1429 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1430 CINTEnvVars envs;
1431 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1432 envs.f_gout = &CINTgout1e_int1e_ippnucpip;
1433 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
1434 } // int1e_ippnucpip_spinor
1435 ALL_CINT1E(int1e_ippnucpip)
ALL_CINT1E_FORTRAN_(int1e_ippnucpip)1436 ALL_CINT1E_FORTRAN_(int1e_ippnucpip)
1437 /* <P* NABLA NABLA i|RINV DOT P |j> */
1438 void CINTgout1e_int1e_ipipprinvp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1439 FINT nf = envs->nf;
1440 FINT nrys_roots = envs->nrys_roots;
1441 FINT ix, iy, iz, n, i;
1442 double *g0 = g;
1443 double *g1 = g0 + envs->g_size * 3;
1444 double *g2 = g1 + envs->g_size * 3;
1445 double *g3 = g2 + envs->g_size * 3;
1446 double *g4 = g3 + envs->g_size * 3;
1447 double *g5 = g4 + envs->g_size * 3;
1448 double *g6 = g5 + envs->g_size * 3;
1449 double *g7 = g6 + envs->g_size * 3;
1450 double *g8 = g7 + envs->g_size * 3;
1451 double *g9 = g8 + envs->g_size * 3;
1452 double *g10 = g9 + envs->g_size * 3;
1453 double *g11 = g10 + envs->g_size * 3;
1454 double *g12 = g11 + envs->g_size * 3;
1455 double *g13 = g12 + envs->g_size * 3;
1456 double *g14 = g13 + envs->g_size * 3;
1457 double *g15 = g14 + envs->g_size * 3;
1458 G2E_D_J(g1, g0, envs->i_l+3, envs->j_l+0, 0, 0);
1459 G2E_D_I(g2, g0, envs->i_l+2, envs->j_l, 0, 0);
1460 G2E_D_I(g3, g1, envs->i_l+2, envs->j_l, 0, 0);
1461 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
1462 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
1463 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
1464 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
1465 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
1466 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
1467 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
1468 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
1469 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
1470 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
1471 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
1472 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
1473 double s[81];
1474 for (n = 0; n < nf; n++) {
1475 ix = idx[0+n*3];
1476 iy = idx[1+n*3];
1477 iz = idx[2+n*3];
1478 for (i = 0; i < 81; i++) { s[i] = 0; }
1479 for (i = 0; i < nrys_roots; i++) {
1480 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1481 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1482 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1483 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1484 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1485 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1486 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1487 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1488 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1489 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1490 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1491 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1492 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1493 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1494 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1495 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1496 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1497 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1498 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1499 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1500 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1501 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1502 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1503 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1504 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1505 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1506 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1507 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1508 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1509 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1510 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1511 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1512 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1513 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1514 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1515 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1516 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1517 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1518 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1519 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1520 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1521 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1522 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1523 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1524 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1525 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1526 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1527 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1528 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1529 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1530 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1531 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1532 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1533 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1534 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1535 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1536 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1537 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1538 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1539 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1540 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1541 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1542 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1543 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1544 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1545 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1546 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1547 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1548 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1549 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1550 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1551 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1552 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1553 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1554 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1555 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1556 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1557 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1558 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1559 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1560 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1561 }
1562 if (gout_empty) {
1563 gout[n*9+0] = + s[0] + s[4] + s[8];
1564 gout[n*9+1] = + s[27] + s[31] + s[35];
1565 gout[n*9+2] = + s[54] + s[58] + s[62];
1566 gout[n*9+3] = + s[9] + s[13] + s[17];
1567 gout[n*9+4] = + s[36] + s[40] + s[44];
1568 gout[n*9+5] = + s[63] + s[67] + s[71];
1569 gout[n*9+6] = + s[18] + s[22] + s[26];
1570 gout[n*9+7] = + s[45] + s[49] + s[53];
1571 gout[n*9+8] = + s[72] + s[76] + s[80];
1572 } else {
1573 gout[n*9+0] += + s[0] + s[4] + s[8];
1574 gout[n*9+1] += + s[27] + s[31] + s[35];
1575 gout[n*9+2] += + s[54] + s[58] + s[62];
1576 gout[n*9+3] += + s[9] + s[13] + s[17];
1577 gout[n*9+4] += + s[36] + s[40] + s[44];
1578 gout[n*9+5] += + s[63] + s[67] + s[71];
1579 gout[n*9+6] += + s[18] + s[22] + s[26];
1580 gout[n*9+7] += + s[45] + s[49] + s[53];
1581 gout[n*9+8] += + s[72] + s[76] + s[80];
1582 }}}
int1e_ipipprinvp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1583 void int1e_ipipprinvp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1584 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1585 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1586 }
int1e_ipipprinvp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1587 CACHE_SIZE_T int1e_ipipprinvp_cart(double *out, FINT *dims, FINT *shls,
1588 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1589 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1590 CINTEnvVars envs;
1591 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1592 envs.f_gout = &CINTgout1e_int1e_ipipprinvp;
1593 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
1594 } // int1e_ipipprinvp_cart
int1e_ipipprinvp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1595 CACHE_SIZE_T int1e_ipipprinvp_sph(double *out, FINT *dims, FINT *shls,
1596 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1597 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1598 CINTEnvVars envs;
1599 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1600 envs.f_gout = &CINTgout1e_int1e_ipipprinvp;
1601 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
1602 } // int1e_ipipprinvp_sph
int1e_ipipprinvp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1603 CACHE_SIZE_T int1e_ipipprinvp_spinor(double complex *out, FINT *dims, FINT *shls,
1604 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1605 FINT ng[] = {3, 1, 0, 0, 4, 1, 0, 9};
1606 CINTEnvVars envs;
1607 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1608 envs.f_gout = &CINTgout1e_int1e_ipipprinvp;
1609 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
1610 } // int1e_ipipprinvp_spinor
1611 ALL_CINT1E(int1e_ipipprinvp)
ALL_CINT1E_FORTRAN_(int1e_ipipprinvp)1612 ALL_CINT1E_FORTRAN_(int1e_ipipprinvp)
1613 /* <P* NABLA i|RINV DOT P |NABLA j> */
1614 void CINTgout1e_int1e_ipprinvpip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1615 FINT nf = envs->nf;
1616 FINT nrys_roots = envs->nrys_roots;
1617 FINT ix, iy, iz, n, i;
1618 double *g0 = g;
1619 double *g1 = g0 + envs->g_size * 3;
1620 double *g2 = g1 + envs->g_size * 3;
1621 double *g3 = g2 + envs->g_size * 3;
1622 double *g4 = g3 + envs->g_size * 3;
1623 double *g5 = g4 + envs->g_size * 3;
1624 double *g6 = g5 + envs->g_size * 3;
1625 double *g7 = g6 + envs->g_size * 3;
1626 double *g8 = g7 + envs->g_size * 3;
1627 double *g9 = g8 + envs->g_size * 3;
1628 double *g10 = g9 + envs->g_size * 3;
1629 double *g11 = g10 + envs->g_size * 3;
1630 double *g12 = g11 + envs->g_size * 3;
1631 double *g13 = g12 + envs->g_size * 3;
1632 double *g14 = g13 + envs->g_size * 3;
1633 double *g15 = g14 + envs->g_size * 3;
1634 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
1635 G2E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0, 0);
1636 G2E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0, 0);
1637 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
1638 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
1639 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
1640 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
1641 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
1642 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
1643 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
1644 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
1645 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
1646 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
1647 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
1648 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
1649 double s[81];
1650 for (n = 0; n < nf; n++) {
1651 ix = idx[0+n*3];
1652 iy = idx[1+n*3];
1653 iz = idx[2+n*3];
1654 for (i = 0; i < 81; i++) { s[i] = 0; }
1655 for (i = 0; i < nrys_roots; i++) {
1656 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1657 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1658 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1659 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1660 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1661 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1662 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1663 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1664 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1665 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1666 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1667 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1668 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1669 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1670 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1671 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1672 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1673 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1674 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1675 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1676 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1677 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1678 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1679 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1680 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1681 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1682 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1683 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1684 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1685 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1686 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1687 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1688 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1689 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1690 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1691 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1692 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1693 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1694 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1695 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1696 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1697 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1698 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1699 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1700 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1701 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1702 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1703 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1704 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1705 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1706 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1707 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1708 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1709 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1710 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1711 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1712 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1713 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1714 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1715 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1716 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1717 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1718 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1719 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1720 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1721 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1722 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1723 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1724 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1725 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1726 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1727 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1728 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1729 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1730 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1731 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1732 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1733 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1734 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1735 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1736 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1737 }
1738 if (gout_empty) {
1739 gout[n*9+0] = + s[0] + s[12] + s[24];
1740 gout[n*9+1] = + s[27] + s[39] + s[51];
1741 gout[n*9+2] = + s[54] + s[66] + s[78];
1742 gout[n*9+3] = + s[1] + s[13] + s[25];
1743 gout[n*9+4] = + s[28] + s[40] + s[52];
1744 gout[n*9+5] = + s[55] + s[67] + s[79];
1745 gout[n*9+6] = + s[2] + s[14] + s[26];
1746 gout[n*9+7] = + s[29] + s[41] + s[53];
1747 gout[n*9+8] = + s[56] + s[68] + s[80];
1748 } else {
1749 gout[n*9+0] += + s[0] + s[12] + s[24];
1750 gout[n*9+1] += + s[27] + s[39] + s[51];
1751 gout[n*9+2] += + s[54] + s[66] + s[78];
1752 gout[n*9+3] += + s[1] + s[13] + s[25];
1753 gout[n*9+4] += + s[28] + s[40] + s[52];
1754 gout[n*9+5] += + s[55] + s[67] + s[79];
1755 gout[n*9+6] += + s[2] + s[14] + s[26];
1756 gout[n*9+7] += + s[29] + s[41] + s[53];
1757 gout[n*9+8] += + s[56] + s[68] + s[80];
1758 }}}
int1e_ipprinvpip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1759 void int1e_ipprinvpip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1760 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1761 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1762 }
int1e_ipprinvpip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1763 CACHE_SIZE_T int1e_ipprinvpip_cart(double *out, FINT *dims, FINT *shls,
1764 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1765 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1766 CINTEnvVars envs;
1767 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1768 envs.f_gout = &CINTgout1e_int1e_ipprinvpip;
1769 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
1770 } // int1e_ipprinvpip_cart
int1e_ipprinvpip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1771 CACHE_SIZE_T int1e_ipprinvpip_sph(double *out, FINT *dims, FINT *shls,
1772 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1773 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1774 CINTEnvVars envs;
1775 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1776 envs.f_gout = &CINTgout1e_int1e_ipprinvpip;
1777 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
1778 } // int1e_ipprinvpip_sph
int1e_ipprinvpip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1779 CACHE_SIZE_T int1e_ipprinvpip_spinor(double complex *out, FINT *dims, FINT *shls,
1780 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1781 FINT ng[] = {2, 2, 0, 0, 4, 1, 0, 9};
1782 CINTEnvVars envs;
1783 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1784 envs.f_gout = &CINTgout1e_int1e_ipprinvpip;
1785 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
1786 } // int1e_ipprinvpip_spinor
1787 ALL_CINT1E(int1e_ipprinvpip)
ALL_CINT1E_FORTRAN_(int1e_ipprinvpip)1788 ALL_CINT1E_FORTRAN_(int1e_ipprinvpip)
1789 /* <NABLA NABLA SIGMA DOT P i|NUC SIGMA DOT P |j> */
1790 void CINTgout1e_int1e_ipipspnucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1791 FINT nf = envs->nf;
1792 FINT nrys_roots = envs->nrys_roots;
1793 FINT ix, iy, iz, n, i;
1794 double *g0 = g;
1795 double *g1 = g0 + envs->g_size * 3;
1796 double *g2 = g1 + envs->g_size * 3;
1797 double *g3 = g2 + envs->g_size * 3;
1798 double *g4 = g3 + envs->g_size * 3;
1799 double *g5 = g4 + envs->g_size * 3;
1800 double *g6 = g5 + envs->g_size * 3;
1801 double *g7 = g6 + envs->g_size * 3;
1802 double *g8 = g7 + envs->g_size * 3;
1803 double *g9 = g8 + envs->g_size * 3;
1804 double *g10 = g9 + envs->g_size * 3;
1805 double *g11 = g10 + envs->g_size * 3;
1806 double *g12 = g11 + envs->g_size * 3;
1807 double *g13 = g12 + envs->g_size * 3;
1808 double *g14 = g13 + envs->g_size * 3;
1809 double *g15 = g14 + envs->g_size * 3;
1810 G2E_D_J(g1, g0, envs->i_l+3, envs->j_l+0, 0, 0);
1811 G2E_D_I(g2, g0, envs->i_l+2, envs->j_l, 0, 0);
1812 G2E_D_I(g3, g1, envs->i_l+2, envs->j_l, 0, 0);
1813 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
1814 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
1815 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
1816 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
1817 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
1818 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
1819 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
1820 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
1821 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
1822 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
1823 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
1824 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
1825 double s[81];
1826 for (n = 0; n < nf; n++) {
1827 ix = idx[0+n*3];
1828 iy = idx[1+n*3];
1829 iz = idx[2+n*3];
1830 for (i = 0; i < 81; i++) { s[i] = 0; }
1831 for (i = 0; i < nrys_roots; i++) {
1832 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1833 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1834 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1835 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1836 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1837 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1838 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1839 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1840 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1841 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1842 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1843 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1844 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1845 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1846 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1847 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1848 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1849 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1850 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1851 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1852 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1853 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1854 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1855 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1856 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1857 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1858 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1859 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1860 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1861 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1862 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1863 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1864 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1865 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1866 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1867 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1868 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1869 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1870 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1871 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1872 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1873 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1874 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1875 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1876 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1877 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1878 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1879 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1880 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1881 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1882 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1883 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1884 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1885 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1886 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1887 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1888 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1889 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1890 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1891 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1892 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1893 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1894 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1895 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1896 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1897 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1898 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1899 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1900 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1901 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1902 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1903 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1904 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1905 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1906 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1907 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1908 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1909 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1910 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1911 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1912 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1913 }
1914 if (gout_empty) {
1915 gout[n*36+0] = + s[29] - s[55];
1916 gout[n*36+1] = + s[54] - s[2];
1917 gout[n*36+2] = + s[1] - s[27];
1918 gout[n*36+3] = + s[0] + s[28] + s[56];
1919 gout[n*36+4] = + s[32] - s[58];
1920 gout[n*36+5] = + s[57] - s[5];
1921 gout[n*36+6] = + s[4] - s[30];
1922 gout[n*36+7] = + s[3] + s[31] + s[59];
1923 gout[n*36+8] = + s[35] - s[61];
1924 gout[n*36+9] = + s[60] - s[8];
1925 gout[n*36+10] = + s[7] - s[33];
1926 gout[n*36+11] = + s[6] + s[34] + s[62];
1927 gout[n*36+12] = + s[38] - s[64];
1928 gout[n*36+13] = + s[63] - s[11];
1929 gout[n*36+14] = + s[10] - s[36];
1930 gout[n*36+15] = + s[9] + s[37] + s[65];
1931 gout[n*36+16] = + s[41] - s[67];
1932 gout[n*36+17] = + s[66] - s[14];
1933 gout[n*36+18] = + s[13] - s[39];
1934 gout[n*36+19] = + s[12] + s[40] + s[68];
1935 gout[n*36+20] = + s[44] - s[70];
1936 gout[n*36+21] = + s[69] - s[17];
1937 gout[n*36+22] = + s[16] - s[42];
1938 gout[n*36+23] = + s[15] + s[43] + s[71];
1939 gout[n*36+24] = + s[47] - s[73];
1940 gout[n*36+25] = + s[72] - s[20];
1941 gout[n*36+26] = + s[19] - s[45];
1942 gout[n*36+27] = + s[18] + s[46] + s[74];
1943 gout[n*36+28] = + s[50] - s[76];
1944 gout[n*36+29] = + s[75] - s[23];
1945 gout[n*36+30] = + s[22] - s[48];
1946 gout[n*36+31] = + s[21] + s[49] + s[77];
1947 gout[n*36+32] = + s[53] - s[79];
1948 gout[n*36+33] = + s[78] - s[26];
1949 gout[n*36+34] = + s[25] - s[51];
1950 gout[n*36+35] = + s[24] + s[52] + s[80];
1951 } else {
1952 gout[n*36+0] += + s[29] - s[55];
1953 gout[n*36+1] += + s[54] - s[2];
1954 gout[n*36+2] += + s[1] - s[27];
1955 gout[n*36+3] += + s[0] + s[28] + s[56];
1956 gout[n*36+4] += + s[32] - s[58];
1957 gout[n*36+5] += + s[57] - s[5];
1958 gout[n*36+6] += + s[4] - s[30];
1959 gout[n*36+7] += + s[3] + s[31] + s[59];
1960 gout[n*36+8] += + s[35] - s[61];
1961 gout[n*36+9] += + s[60] - s[8];
1962 gout[n*36+10] += + s[7] - s[33];
1963 gout[n*36+11] += + s[6] + s[34] + s[62];
1964 gout[n*36+12] += + s[38] - s[64];
1965 gout[n*36+13] += + s[63] - s[11];
1966 gout[n*36+14] += + s[10] - s[36];
1967 gout[n*36+15] += + s[9] + s[37] + s[65];
1968 gout[n*36+16] += + s[41] - s[67];
1969 gout[n*36+17] += + s[66] - s[14];
1970 gout[n*36+18] += + s[13] - s[39];
1971 gout[n*36+19] += + s[12] + s[40] + s[68];
1972 gout[n*36+20] += + s[44] - s[70];
1973 gout[n*36+21] += + s[69] - s[17];
1974 gout[n*36+22] += + s[16] - s[42];
1975 gout[n*36+23] += + s[15] + s[43] + s[71];
1976 gout[n*36+24] += + s[47] - s[73];
1977 gout[n*36+25] += + s[72] - s[20];
1978 gout[n*36+26] += + s[19] - s[45];
1979 gout[n*36+27] += + s[18] + s[46] + s[74];
1980 gout[n*36+28] += + s[50] - s[76];
1981 gout[n*36+29] += + s[75] - s[23];
1982 gout[n*36+30] += + s[22] - s[48];
1983 gout[n*36+31] += + s[21] + s[49] + s[77];
1984 gout[n*36+32] += + s[53] - s[79];
1985 gout[n*36+33] += + s[78] - s[26];
1986 gout[n*36+34] += + s[25] - s[51];
1987 gout[n*36+35] += + s[24] + s[52] + s[80];
1988 }}}
int1e_ipipspnucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1989 void int1e_ipipspnucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1990 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
1991 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1992 }
int1e_ipipspnucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1993 CACHE_SIZE_T int1e_ipipspnucsp_cart(double *out, FINT *dims, FINT *shls,
1994 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1995 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
1996 CINTEnvVars envs;
1997 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1998 envs.f_gout = &CINTgout1e_int1e_ipipspnucsp;
1999 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
2000 } // int1e_ipipspnucsp_cart
int1e_ipipspnucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2001 CACHE_SIZE_T int1e_ipipspnucsp_sph(double *out, FINT *dims, FINT *shls,
2002 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2003 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2004 CINTEnvVars envs;
2005 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2006 envs.f_gout = &CINTgout1e_int1e_ipipspnucsp;
2007 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
2008 } // int1e_ipipspnucsp_sph
int1e_ipipspnucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2009 CACHE_SIZE_T int1e_ipipspnucsp_spinor(double complex *out, FINT *dims, FINT *shls,
2010 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2011 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2012 CINTEnvVars envs;
2013 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2014 envs.f_gout = &CINTgout1e_int1e_ipipspnucsp;
2015 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
2016 } // int1e_ipipspnucsp_spinor
2017 ALL_CINT1E(int1e_ipipspnucsp)
ALL_CINT1E_FORTRAN_(int1e_ipipspnucsp)2018 ALL_CINT1E_FORTRAN_(int1e_ipipspnucsp)
2019 /* <NABLA SIGMA DOT P i|NUC SIGMA DOT P |NABLA j> */
2020 void CINTgout1e_int1e_ipspnucspip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2021 FINT nf = envs->nf;
2022 FINT nrys_roots = envs->nrys_roots;
2023 FINT ix, iy, iz, n, i;
2024 double *g0 = g;
2025 double *g1 = g0 + envs->g_size * 3;
2026 double *g2 = g1 + envs->g_size * 3;
2027 double *g3 = g2 + envs->g_size * 3;
2028 double *g4 = g3 + envs->g_size * 3;
2029 double *g5 = g4 + envs->g_size * 3;
2030 double *g6 = g5 + envs->g_size * 3;
2031 double *g7 = g6 + envs->g_size * 3;
2032 double *g8 = g7 + envs->g_size * 3;
2033 double *g9 = g8 + envs->g_size * 3;
2034 double *g10 = g9 + envs->g_size * 3;
2035 double *g11 = g10 + envs->g_size * 3;
2036 double *g12 = g11 + envs->g_size * 3;
2037 double *g13 = g12 + envs->g_size * 3;
2038 double *g14 = g13 + envs->g_size * 3;
2039 double *g15 = g14 + envs->g_size * 3;
2040 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
2041 G2E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0, 0);
2042 G2E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0, 0);
2043 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
2044 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
2045 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
2046 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
2047 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
2048 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
2049 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
2050 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
2051 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
2052 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
2053 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
2054 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
2055 double s[81];
2056 for (n = 0; n < nf; n++) {
2057 ix = idx[0+n*3];
2058 iy = idx[1+n*3];
2059 iz = idx[2+n*3];
2060 for (i = 0; i < 81; i++) { s[i] = 0; }
2061 for (i = 0; i < nrys_roots; i++) {
2062 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
2063 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
2064 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
2065 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
2066 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
2067 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
2068 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
2069 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
2070 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
2071 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
2072 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
2073 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
2074 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
2075 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
2076 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
2077 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
2078 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
2079 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
2080 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
2081 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
2082 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
2083 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
2084 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
2085 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
2086 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
2087 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
2088 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
2089 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
2090 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
2091 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
2092 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
2093 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
2094 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
2095 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
2096 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
2097 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
2098 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
2099 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
2100 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
2101 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
2102 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
2103 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
2104 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
2105 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
2106 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
2107 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
2108 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
2109 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
2110 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
2111 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
2112 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
2113 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
2114 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
2115 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
2116 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
2117 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
2118 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
2119 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
2120 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
2121 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
2122 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
2123 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
2124 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
2125 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
2126 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
2127 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
2128 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
2129 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
2130 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
2131 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
2132 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
2133 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
2134 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
2135 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
2136 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
2137 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
2138 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
2139 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
2140 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
2141 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
2142 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
2143 }
2144 if (gout_empty) {
2145 gout[n*36+0] = + s[33] - s[57];
2146 gout[n*36+1] = + s[54] - s[6];
2147 gout[n*36+2] = + s[3] - s[27];
2148 gout[n*36+3] = + s[0] + s[30] + s[60];
2149 gout[n*36+4] = + s[34] - s[58];
2150 gout[n*36+5] = + s[55] - s[7];
2151 gout[n*36+6] = + s[4] - s[28];
2152 gout[n*36+7] = + s[1] + s[31] + s[61];
2153 gout[n*36+8] = + s[35] - s[59];
2154 gout[n*36+9] = + s[56] - s[8];
2155 gout[n*36+10] = + s[5] - s[29];
2156 gout[n*36+11] = + s[2] + s[32] + s[62];
2157 gout[n*36+12] = + s[42] - s[66];
2158 gout[n*36+13] = + s[63] - s[15];
2159 gout[n*36+14] = + s[12] - s[36];
2160 gout[n*36+15] = + s[9] + s[39] + s[69];
2161 gout[n*36+16] = + s[43] - s[67];
2162 gout[n*36+17] = + s[64] - s[16];
2163 gout[n*36+18] = + s[13] - s[37];
2164 gout[n*36+19] = + s[10] + s[40] + s[70];
2165 gout[n*36+20] = + s[44] - s[68];
2166 gout[n*36+21] = + s[65] - s[17];
2167 gout[n*36+22] = + s[14] - s[38];
2168 gout[n*36+23] = + s[11] + s[41] + s[71];
2169 gout[n*36+24] = + s[51] - s[75];
2170 gout[n*36+25] = + s[72] - s[24];
2171 gout[n*36+26] = + s[21] - s[45];
2172 gout[n*36+27] = + s[18] + s[48] + s[78];
2173 gout[n*36+28] = + s[52] - s[76];
2174 gout[n*36+29] = + s[73] - s[25];
2175 gout[n*36+30] = + s[22] - s[46];
2176 gout[n*36+31] = + s[19] + s[49] + s[79];
2177 gout[n*36+32] = + s[53] - s[77];
2178 gout[n*36+33] = + s[74] - s[26];
2179 gout[n*36+34] = + s[23] - s[47];
2180 gout[n*36+35] = + s[20] + s[50] + s[80];
2181 } else {
2182 gout[n*36+0] += + s[33] - s[57];
2183 gout[n*36+1] += + s[54] - s[6];
2184 gout[n*36+2] += + s[3] - s[27];
2185 gout[n*36+3] += + s[0] + s[30] + s[60];
2186 gout[n*36+4] += + s[34] - s[58];
2187 gout[n*36+5] += + s[55] - s[7];
2188 gout[n*36+6] += + s[4] - s[28];
2189 gout[n*36+7] += + s[1] + s[31] + s[61];
2190 gout[n*36+8] += + s[35] - s[59];
2191 gout[n*36+9] += + s[56] - s[8];
2192 gout[n*36+10] += + s[5] - s[29];
2193 gout[n*36+11] += + s[2] + s[32] + s[62];
2194 gout[n*36+12] += + s[42] - s[66];
2195 gout[n*36+13] += + s[63] - s[15];
2196 gout[n*36+14] += + s[12] - s[36];
2197 gout[n*36+15] += + s[9] + s[39] + s[69];
2198 gout[n*36+16] += + s[43] - s[67];
2199 gout[n*36+17] += + s[64] - s[16];
2200 gout[n*36+18] += + s[13] - s[37];
2201 gout[n*36+19] += + s[10] + s[40] + s[70];
2202 gout[n*36+20] += + s[44] - s[68];
2203 gout[n*36+21] += + s[65] - s[17];
2204 gout[n*36+22] += + s[14] - s[38];
2205 gout[n*36+23] += + s[11] + s[41] + s[71];
2206 gout[n*36+24] += + s[51] - s[75];
2207 gout[n*36+25] += + s[72] - s[24];
2208 gout[n*36+26] += + s[21] - s[45];
2209 gout[n*36+27] += + s[18] + s[48] + s[78];
2210 gout[n*36+28] += + s[52] - s[76];
2211 gout[n*36+29] += + s[73] - s[25];
2212 gout[n*36+30] += + s[22] - s[46];
2213 gout[n*36+31] += + s[19] + s[49] + s[79];
2214 gout[n*36+32] += + s[53] - s[77];
2215 gout[n*36+33] += + s[74] - s[26];
2216 gout[n*36+34] += + s[23] - s[47];
2217 gout[n*36+35] += + s[20] + s[50] + s[80];
2218 }}}
int1e_ipspnucspip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2219 void int1e_ipspnucspip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2220 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2221 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2222 }
int1e_ipspnucspip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2223 CACHE_SIZE_T int1e_ipspnucspip_cart(double *out, FINT *dims, FINT *shls,
2224 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2225 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2226 CINTEnvVars envs;
2227 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2228 envs.f_gout = &CINTgout1e_int1e_ipspnucspip;
2229 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
2230 } // int1e_ipspnucspip_cart
int1e_ipspnucspip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2231 CACHE_SIZE_T int1e_ipspnucspip_sph(double *out, FINT *dims, FINT *shls,
2232 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2233 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2234 CINTEnvVars envs;
2235 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2236 envs.f_gout = &CINTgout1e_int1e_ipspnucspip;
2237 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
2238 } // int1e_ipspnucspip_sph
int1e_ipspnucspip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2239 CACHE_SIZE_T int1e_ipspnucspip_spinor(double complex *out, FINT *dims, FINT *shls,
2240 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2241 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2242 CINTEnvVars envs;
2243 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2244 envs.f_gout = &CINTgout1e_int1e_ipspnucspip;
2245 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
2246 } // int1e_ipspnucspip_spinor
2247 ALL_CINT1E(int1e_ipspnucspip)
ALL_CINT1E_FORTRAN_(int1e_ipspnucspip)2248 ALL_CINT1E_FORTRAN_(int1e_ipspnucspip)
2249 /* <NABLA NABLA SIGMA DOT P i|RINV SIGMA DOT P |j> */
2250 void CINTgout1e_int1e_ipipsprinvsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2251 FINT nf = envs->nf;
2252 FINT nrys_roots = envs->nrys_roots;
2253 FINT ix, iy, iz, n, i;
2254 double *g0 = g;
2255 double *g1 = g0 + envs->g_size * 3;
2256 double *g2 = g1 + envs->g_size * 3;
2257 double *g3 = g2 + envs->g_size * 3;
2258 double *g4 = g3 + envs->g_size * 3;
2259 double *g5 = g4 + envs->g_size * 3;
2260 double *g6 = g5 + envs->g_size * 3;
2261 double *g7 = g6 + envs->g_size * 3;
2262 double *g8 = g7 + envs->g_size * 3;
2263 double *g9 = g8 + envs->g_size * 3;
2264 double *g10 = g9 + envs->g_size * 3;
2265 double *g11 = g10 + envs->g_size * 3;
2266 double *g12 = g11 + envs->g_size * 3;
2267 double *g13 = g12 + envs->g_size * 3;
2268 double *g14 = g13 + envs->g_size * 3;
2269 double *g15 = g14 + envs->g_size * 3;
2270 G2E_D_J(g1, g0, envs->i_l+3, envs->j_l+0, 0, 0);
2271 G2E_D_I(g2, g0, envs->i_l+2, envs->j_l, 0, 0);
2272 G2E_D_I(g3, g1, envs->i_l+2, envs->j_l, 0, 0);
2273 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
2274 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
2275 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
2276 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
2277 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
2278 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
2279 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
2280 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
2281 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
2282 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
2283 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
2284 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
2285 double s[81];
2286 for (n = 0; n < nf; n++) {
2287 ix = idx[0+n*3];
2288 iy = idx[1+n*3];
2289 iz = idx[2+n*3];
2290 for (i = 0; i < 81; i++) { s[i] = 0; }
2291 for (i = 0; i < nrys_roots; i++) {
2292 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
2293 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
2294 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
2295 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
2296 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
2297 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
2298 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
2299 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
2300 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
2301 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
2302 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
2303 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
2304 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
2305 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
2306 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
2307 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
2308 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
2309 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
2310 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
2311 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
2312 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
2313 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
2314 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
2315 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
2316 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
2317 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
2318 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
2319 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
2320 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
2321 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
2322 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
2323 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
2324 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
2325 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
2326 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
2327 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
2328 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
2329 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
2330 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
2331 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
2332 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
2333 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
2334 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
2335 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
2336 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
2337 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
2338 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
2339 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
2340 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
2341 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
2342 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
2343 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
2344 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
2345 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
2346 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
2347 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
2348 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
2349 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
2350 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
2351 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
2352 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
2353 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
2354 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
2355 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
2356 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
2357 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
2358 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
2359 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
2360 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
2361 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
2362 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
2363 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
2364 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
2365 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
2366 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
2367 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
2368 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
2369 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
2370 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
2371 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
2372 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
2373 }
2374 if (gout_empty) {
2375 gout[n*36+0] = + s[29] - s[55];
2376 gout[n*36+1] = + s[54] - s[2];
2377 gout[n*36+2] = + s[1] - s[27];
2378 gout[n*36+3] = + s[0] + s[28] + s[56];
2379 gout[n*36+4] = + s[32] - s[58];
2380 gout[n*36+5] = + s[57] - s[5];
2381 gout[n*36+6] = + s[4] - s[30];
2382 gout[n*36+7] = + s[3] + s[31] + s[59];
2383 gout[n*36+8] = + s[35] - s[61];
2384 gout[n*36+9] = + s[60] - s[8];
2385 gout[n*36+10] = + s[7] - s[33];
2386 gout[n*36+11] = + s[6] + s[34] + s[62];
2387 gout[n*36+12] = + s[38] - s[64];
2388 gout[n*36+13] = + s[63] - s[11];
2389 gout[n*36+14] = + s[10] - s[36];
2390 gout[n*36+15] = + s[9] + s[37] + s[65];
2391 gout[n*36+16] = + s[41] - s[67];
2392 gout[n*36+17] = + s[66] - s[14];
2393 gout[n*36+18] = + s[13] - s[39];
2394 gout[n*36+19] = + s[12] + s[40] + s[68];
2395 gout[n*36+20] = + s[44] - s[70];
2396 gout[n*36+21] = + s[69] - s[17];
2397 gout[n*36+22] = + s[16] - s[42];
2398 gout[n*36+23] = + s[15] + s[43] + s[71];
2399 gout[n*36+24] = + s[47] - s[73];
2400 gout[n*36+25] = + s[72] - s[20];
2401 gout[n*36+26] = + s[19] - s[45];
2402 gout[n*36+27] = + s[18] + s[46] + s[74];
2403 gout[n*36+28] = + s[50] - s[76];
2404 gout[n*36+29] = + s[75] - s[23];
2405 gout[n*36+30] = + s[22] - s[48];
2406 gout[n*36+31] = + s[21] + s[49] + s[77];
2407 gout[n*36+32] = + s[53] - s[79];
2408 gout[n*36+33] = + s[78] - s[26];
2409 gout[n*36+34] = + s[25] - s[51];
2410 gout[n*36+35] = + s[24] + s[52] + s[80];
2411 } else {
2412 gout[n*36+0] += + s[29] - s[55];
2413 gout[n*36+1] += + s[54] - s[2];
2414 gout[n*36+2] += + s[1] - s[27];
2415 gout[n*36+3] += + s[0] + s[28] + s[56];
2416 gout[n*36+4] += + s[32] - s[58];
2417 gout[n*36+5] += + s[57] - s[5];
2418 gout[n*36+6] += + s[4] - s[30];
2419 gout[n*36+7] += + s[3] + s[31] + s[59];
2420 gout[n*36+8] += + s[35] - s[61];
2421 gout[n*36+9] += + s[60] - s[8];
2422 gout[n*36+10] += + s[7] - s[33];
2423 gout[n*36+11] += + s[6] + s[34] + s[62];
2424 gout[n*36+12] += + s[38] - s[64];
2425 gout[n*36+13] += + s[63] - s[11];
2426 gout[n*36+14] += + s[10] - s[36];
2427 gout[n*36+15] += + s[9] + s[37] + s[65];
2428 gout[n*36+16] += + s[41] - s[67];
2429 gout[n*36+17] += + s[66] - s[14];
2430 gout[n*36+18] += + s[13] - s[39];
2431 gout[n*36+19] += + s[12] + s[40] + s[68];
2432 gout[n*36+20] += + s[44] - s[70];
2433 gout[n*36+21] += + s[69] - s[17];
2434 gout[n*36+22] += + s[16] - s[42];
2435 gout[n*36+23] += + s[15] + s[43] + s[71];
2436 gout[n*36+24] += + s[47] - s[73];
2437 gout[n*36+25] += + s[72] - s[20];
2438 gout[n*36+26] += + s[19] - s[45];
2439 gout[n*36+27] += + s[18] + s[46] + s[74];
2440 gout[n*36+28] += + s[50] - s[76];
2441 gout[n*36+29] += + s[75] - s[23];
2442 gout[n*36+30] += + s[22] - s[48];
2443 gout[n*36+31] += + s[21] + s[49] + s[77];
2444 gout[n*36+32] += + s[53] - s[79];
2445 gout[n*36+33] += + s[78] - s[26];
2446 gout[n*36+34] += + s[25] - s[51];
2447 gout[n*36+35] += + s[24] + s[52] + s[80];
2448 }}}
int1e_ipipsprinvsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2449 void int1e_ipipsprinvsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2450 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2451 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2452 }
int1e_ipipsprinvsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2453 CACHE_SIZE_T int1e_ipipsprinvsp_cart(double *out, FINT *dims, FINT *shls,
2454 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2455 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2456 CINTEnvVars envs;
2457 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2458 envs.f_gout = &CINTgout1e_int1e_ipipsprinvsp;
2459 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
2460 } // int1e_ipipsprinvsp_cart
int1e_ipipsprinvsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2461 CACHE_SIZE_T int1e_ipipsprinvsp_sph(double *out, FINT *dims, FINT *shls,
2462 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2463 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2464 CINTEnvVars envs;
2465 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2466 envs.f_gout = &CINTgout1e_int1e_ipipsprinvsp;
2467 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
2468 } // int1e_ipipsprinvsp_sph
int1e_ipipsprinvsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2469 CACHE_SIZE_T int1e_ipipsprinvsp_spinor(double complex *out, FINT *dims, FINT *shls,
2470 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2471 FINT ng[] = {3, 1, 0, 0, 4, 4, 0, 9};
2472 CINTEnvVars envs;
2473 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2474 envs.f_gout = &CINTgout1e_int1e_ipipsprinvsp;
2475 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
2476 } // int1e_ipipsprinvsp_spinor
2477 ALL_CINT1E(int1e_ipipsprinvsp)
ALL_CINT1E_FORTRAN_(int1e_ipipsprinvsp)2478 ALL_CINT1E_FORTRAN_(int1e_ipipsprinvsp)
2479 /* <NABLA SIGMA DOT P i|RINV SIGMA DOT P |NABLA j> */
2480 void CINTgout1e_int1e_ipsprinvspip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2481 FINT nf = envs->nf;
2482 FINT nrys_roots = envs->nrys_roots;
2483 FINT ix, iy, iz, n, i;
2484 double *g0 = g;
2485 double *g1 = g0 + envs->g_size * 3;
2486 double *g2 = g1 + envs->g_size * 3;
2487 double *g3 = g2 + envs->g_size * 3;
2488 double *g4 = g3 + envs->g_size * 3;
2489 double *g5 = g4 + envs->g_size * 3;
2490 double *g6 = g5 + envs->g_size * 3;
2491 double *g7 = g6 + envs->g_size * 3;
2492 double *g8 = g7 + envs->g_size * 3;
2493 double *g9 = g8 + envs->g_size * 3;
2494 double *g10 = g9 + envs->g_size * 3;
2495 double *g11 = g10 + envs->g_size * 3;
2496 double *g12 = g11 + envs->g_size * 3;
2497 double *g13 = g12 + envs->g_size * 3;
2498 double *g14 = g13 + envs->g_size * 3;
2499 double *g15 = g14 + envs->g_size * 3;
2500 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
2501 G2E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0, 0);
2502 G2E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0, 0);
2503 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0, 0);
2504 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0, 0);
2505 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0, 0);
2506 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0, 0);
2507 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0, 0);
2508 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0, 0);
2509 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0, 0);
2510 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0, 0);
2511 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0, 0);
2512 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0, 0);
2513 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0, 0);
2514 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0, 0);
2515 double s[81];
2516 for (n = 0; n < nf; n++) {
2517 ix = idx[0+n*3];
2518 iy = idx[1+n*3];
2519 iz = idx[2+n*3];
2520 for (i = 0; i < 81; i++) { s[i] = 0; }
2521 for (i = 0; i < nrys_roots; i++) {
2522 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
2523 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
2524 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
2525 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
2526 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
2527 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
2528 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
2529 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
2530 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
2531 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
2532 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
2533 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
2534 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
2535 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
2536 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
2537 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
2538 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
2539 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
2540 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
2541 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
2542 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
2543 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
2544 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
2545 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
2546 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
2547 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
2548 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
2549 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
2550 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
2551 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
2552 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
2553 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
2554 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
2555 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
2556 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
2557 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
2558 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
2559 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
2560 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
2561 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
2562 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
2563 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
2564 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
2565 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
2566 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
2567 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
2568 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
2569 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
2570 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
2571 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
2572 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
2573 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
2574 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
2575 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
2576 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
2577 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
2578 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
2579 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
2580 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
2581 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
2582 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
2583 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
2584 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
2585 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
2586 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
2587 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
2588 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
2589 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
2590 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
2591 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
2592 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
2593 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
2594 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
2595 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
2596 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
2597 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
2598 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
2599 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
2600 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
2601 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
2602 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
2603 }
2604 if (gout_empty) {
2605 gout[n*36+0] = + s[33] - s[57];
2606 gout[n*36+1] = + s[54] - s[6];
2607 gout[n*36+2] = + s[3] - s[27];
2608 gout[n*36+3] = + s[0] + s[30] + s[60];
2609 gout[n*36+4] = + s[34] - s[58];
2610 gout[n*36+5] = + s[55] - s[7];
2611 gout[n*36+6] = + s[4] - s[28];
2612 gout[n*36+7] = + s[1] + s[31] + s[61];
2613 gout[n*36+8] = + s[35] - s[59];
2614 gout[n*36+9] = + s[56] - s[8];
2615 gout[n*36+10] = + s[5] - s[29];
2616 gout[n*36+11] = + s[2] + s[32] + s[62];
2617 gout[n*36+12] = + s[42] - s[66];
2618 gout[n*36+13] = + s[63] - s[15];
2619 gout[n*36+14] = + s[12] - s[36];
2620 gout[n*36+15] = + s[9] + s[39] + s[69];
2621 gout[n*36+16] = + s[43] - s[67];
2622 gout[n*36+17] = + s[64] - s[16];
2623 gout[n*36+18] = + s[13] - s[37];
2624 gout[n*36+19] = + s[10] + s[40] + s[70];
2625 gout[n*36+20] = + s[44] - s[68];
2626 gout[n*36+21] = + s[65] - s[17];
2627 gout[n*36+22] = + s[14] - s[38];
2628 gout[n*36+23] = + s[11] + s[41] + s[71];
2629 gout[n*36+24] = + s[51] - s[75];
2630 gout[n*36+25] = + s[72] - s[24];
2631 gout[n*36+26] = + s[21] - s[45];
2632 gout[n*36+27] = + s[18] + s[48] + s[78];
2633 gout[n*36+28] = + s[52] - s[76];
2634 gout[n*36+29] = + s[73] - s[25];
2635 gout[n*36+30] = + s[22] - s[46];
2636 gout[n*36+31] = + s[19] + s[49] + s[79];
2637 gout[n*36+32] = + s[53] - s[77];
2638 gout[n*36+33] = + s[74] - s[26];
2639 gout[n*36+34] = + s[23] - s[47];
2640 gout[n*36+35] = + s[20] + s[50] + s[80];
2641 } else {
2642 gout[n*36+0] += + s[33] - s[57];
2643 gout[n*36+1] += + s[54] - s[6];
2644 gout[n*36+2] += + s[3] - s[27];
2645 gout[n*36+3] += + s[0] + s[30] + s[60];
2646 gout[n*36+4] += + s[34] - s[58];
2647 gout[n*36+5] += + s[55] - s[7];
2648 gout[n*36+6] += + s[4] - s[28];
2649 gout[n*36+7] += + s[1] + s[31] + s[61];
2650 gout[n*36+8] += + s[35] - s[59];
2651 gout[n*36+9] += + s[56] - s[8];
2652 gout[n*36+10] += + s[5] - s[29];
2653 gout[n*36+11] += + s[2] + s[32] + s[62];
2654 gout[n*36+12] += + s[42] - s[66];
2655 gout[n*36+13] += + s[63] - s[15];
2656 gout[n*36+14] += + s[12] - s[36];
2657 gout[n*36+15] += + s[9] + s[39] + s[69];
2658 gout[n*36+16] += + s[43] - s[67];
2659 gout[n*36+17] += + s[64] - s[16];
2660 gout[n*36+18] += + s[13] - s[37];
2661 gout[n*36+19] += + s[10] + s[40] + s[70];
2662 gout[n*36+20] += + s[44] - s[68];
2663 gout[n*36+21] += + s[65] - s[17];
2664 gout[n*36+22] += + s[14] - s[38];
2665 gout[n*36+23] += + s[11] + s[41] + s[71];
2666 gout[n*36+24] += + s[51] - s[75];
2667 gout[n*36+25] += + s[72] - s[24];
2668 gout[n*36+26] += + s[21] - s[45];
2669 gout[n*36+27] += + s[18] + s[48] + s[78];
2670 gout[n*36+28] += + s[52] - s[76];
2671 gout[n*36+29] += + s[73] - s[25];
2672 gout[n*36+30] += + s[22] - s[46];
2673 gout[n*36+31] += + s[19] + s[49] + s[79];
2674 gout[n*36+32] += + s[53] - s[77];
2675 gout[n*36+33] += + s[74] - s[26];
2676 gout[n*36+34] += + s[23] - s[47];
2677 gout[n*36+35] += + s[20] + s[50] + s[80];
2678 }}}
int1e_ipsprinvspip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2679 void int1e_ipsprinvspip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2680 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2681 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2682 }
int1e_ipsprinvspip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2683 CACHE_SIZE_T int1e_ipsprinvspip_cart(double *out, FINT *dims, FINT *shls,
2684 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2685 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2686 CINTEnvVars envs;
2687 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2688 envs.f_gout = &CINTgout1e_int1e_ipsprinvspip;
2689 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
2690 } // int1e_ipsprinvspip_cart
int1e_ipsprinvspip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2691 CACHE_SIZE_T int1e_ipsprinvspip_sph(double *out, FINT *dims, FINT *shls,
2692 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2693 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2694 CINTEnvVars envs;
2695 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2696 envs.f_gout = &CINTgout1e_int1e_ipsprinvspip;
2697 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
2698 } // int1e_ipsprinvspip_sph
int1e_ipsprinvspip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2699 CACHE_SIZE_T int1e_ipsprinvspip_spinor(double complex *out, FINT *dims, FINT *shls,
2700 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2701 FINT ng[] = {2, 2, 0, 0, 4, 4, 0, 9};
2702 CINTEnvVars envs;
2703 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2704 envs.f_gout = &CINTgout1e_int1e_ipsprinvspip;
2705 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
2706 } // int1e_ipsprinvspip_spinor
2707 ALL_CINT1E(int1e_ipsprinvspip)
ALL_CINT1E_FORTRAN_(int1e_ipsprinvspip)2708 ALL_CINT1E_FORTRAN_(int1e_ipsprinvspip)
2709 /* <NABLA NABLA k NABLA NABLA i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
2710  * = (NABLA NABLA i j|R12 |NABLA NABLA k l) */
2711 void CINTgout2e_int2e_ipip1ipip2(double *gout,
2712 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2713 FINT nf = envs->nf;
2714 FINT nrys_roots = envs->nrys_roots;
2715 FINT ix, iy, iz, i, n;
2716 double *g0 = g;
2717 double *g1 = g0 + envs->g_size * 3;
2718 double *g2 = g1 + envs->g_size * 3;
2719 double *g3 = g2 + envs->g_size * 3;
2720 double *g4 = g3 + envs->g_size * 3;
2721 double *g5 = g4 + envs->g_size * 3;
2722 double *g6 = g5 + envs->g_size * 3;
2723 double *g7 = g6 + envs->g_size * 3;
2724 double *g8 = g7 + envs->g_size * 3;
2725 double *g9 = g8 + envs->g_size * 3;
2726 double *g10 = g9 + envs->g_size * 3;
2727 double *g11 = g10 + envs->g_size * 3;
2728 double *g12 = g11 + envs->g_size * 3;
2729 double *g13 = g12 + envs->g_size * 3;
2730 double *g14 = g13 + envs->g_size * 3;
2731 double *g15 = g14 + envs->g_size * 3;
2732 G2E_D_K(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l+1, envs->l_l);
2733 G2E_D_K(g2, g0, envs->i_l+2, envs->j_l+0, envs->k_l+0, envs->l_l);
2734 G2E_D_K(g3, g1, envs->i_l+2, envs->j_l+0, envs->k_l+0, envs->l_l);
2735 G2E_D_I(g4, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
2736 G2E_D_I(g5, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
2737 G2E_D_I(g6, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
2738 G2E_D_I(g7, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
2739 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2740 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2741 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2742 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2743 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2744 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2745 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2746 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2747 double s[81];
2748 for (n = 0; n < nf; n++) {
2749 ix = idx[0+n*3];
2750 iy = idx[1+n*3];
2751 iz = idx[2+n*3];
2752 for (i = 0; i < 81; i++) { s[i] = 0; }
2753 for (i = 0; i < nrys_roots; i++) {
2754 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
2755 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
2756 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
2757 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
2758 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
2759 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
2760 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
2761 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
2762 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
2763 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
2764 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
2765 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
2766 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
2767 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
2768 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
2769 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
2770 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
2771 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
2772 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
2773 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
2774 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
2775 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
2776 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
2777 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
2778 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
2779 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
2780 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
2781 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
2782 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
2783 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
2784 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
2785 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
2786 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
2787 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
2788 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
2789 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
2790 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
2791 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
2792 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
2793 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
2794 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
2795 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
2796 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
2797 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
2798 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
2799 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
2800 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
2801 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
2802 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
2803 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
2804 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
2805 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
2806 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
2807 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
2808 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
2809 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
2810 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
2811 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
2812 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
2813 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
2814 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
2815 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
2816 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
2817 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
2818 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
2819 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
2820 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
2821 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
2822 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
2823 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
2824 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
2825 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
2826 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
2827 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
2828 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
2829 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
2830 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
2831 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
2832 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
2833 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
2834 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
2835 }
2836 if (gout_empty) {
2837 gout[n*81+0] = + s[0];
2838 gout[n*81+1] = + s[3];
2839 gout[n*81+2] = + s[6];
2840 gout[n*81+3] = + s[1];
2841 gout[n*81+4] = + s[4];
2842 gout[n*81+5] = + s[7];
2843 gout[n*81+6] = + s[2];
2844 gout[n*81+7] = + s[5];
2845 gout[n*81+8] = + s[8];
2846 gout[n*81+9] = + s[27];
2847 gout[n*81+10] = + s[30];
2848 gout[n*81+11] = + s[33];
2849 gout[n*81+12] = + s[28];
2850 gout[n*81+13] = + s[31];
2851 gout[n*81+14] = + s[34];
2852 gout[n*81+15] = + s[29];
2853 gout[n*81+16] = + s[32];
2854 gout[n*81+17] = + s[35];
2855 gout[n*81+18] = + s[54];
2856 gout[n*81+19] = + s[57];
2857 gout[n*81+20] = + s[60];
2858 gout[n*81+21] = + s[55];
2859 gout[n*81+22] = + s[58];
2860 gout[n*81+23] = + s[61];
2861 gout[n*81+24] = + s[56];
2862 gout[n*81+25] = + s[59];
2863 gout[n*81+26] = + s[62];
2864 gout[n*81+27] = + s[9];
2865 gout[n*81+28] = + s[12];
2866 gout[n*81+29] = + s[15];
2867 gout[n*81+30] = + s[10];
2868 gout[n*81+31] = + s[13];
2869 gout[n*81+32] = + s[16];
2870 gout[n*81+33] = + s[11];
2871 gout[n*81+34] = + s[14];
2872 gout[n*81+35] = + s[17];
2873 gout[n*81+36] = + s[36];
2874 gout[n*81+37] = + s[39];
2875 gout[n*81+38] = + s[42];
2876 gout[n*81+39] = + s[37];
2877 gout[n*81+40] = + s[40];
2878 gout[n*81+41] = + s[43];
2879 gout[n*81+42] = + s[38];
2880 gout[n*81+43] = + s[41];
2881 gout[n*81+44] = + s[44];
2882 gout[n*81+45] = + s[63];
2883 gout[n*81+46] = + s[66];
2884 gout[n*81+47] = + s[69];
2885 gout[n*81+48] = + s[64];
2886 gout[n*81+49] = + s[67];
2887 gout[n*81+50] = + s[70];
2888 gout[n*81+51] = + s[65];
2889 gout[n*81+52] = + s[68];
2890 gout[n*81+53] = + s[71];
2891 gout[n*81+54] = + s[18];
2892 gout[n*81+55] = + s[21];
2893 gout[n*81+56] = + s[24];
2894 gout[n*81+57] = + s[19];
2895 gout[n*81+58] = + s[22];
2896 gout[n*81+59] = + s[25];
2897 gout[n*81+60] = + s[20];
2898 gout[n*81+61] = + s[23];
2899 gout[n*81+62] = + s[26];
2900 gout[n*81+63] = + s[45];
2901 gout[n*81+64] = + s[48];
2902 gout[n*81+65] = + s[51];
2903 gout[n*81+66] = + s[46];
2904 gout[n*81+67] = + s[49];
2905 gout[n*81+68] = + s[52];
2906 gout[n*81+69] = + s[47];
2907 gout[n*81+70] = + s[50];
2908 gout[n*81+71] = + s[53];
2909 gout[n*81+72] = + s[72];
2910 gout[n*81+73] = + s[75];
2911 gout[n*81+74] = + s[78];
2912 gout[n*81+75] = + s[73];
2913 gout[n*81+76] = + s[76];
2914 gout[n*81+77] = + s[79];
2915 gout[n*81+78] = + s[74];
2916 gout[n*81+79] = + s[77];
2917 gout[n*81+80] = + s[80];
2918 } else {
2919 gout[n*81+0] += + s[0];
2920 gout[n*81+1] += + s[3];
2921 gout[n*81+2] += + s[6];
2922 gout[n*81+3] += + s[1];
2923 gout[n*81+4] += + s[4];
2924 gout[n*81+5] += + s[7];
2925 gout[n*81+6] += + s[2];
2926 gout[n*81+7] += + s[5];
2927 gout[n*81+8] += + s[8];
2928 gout[n*81+9] += + s[27];
2929 gout[n*81+10] += + s[30];
2930 gout[n*81+11] += + s[33];
2931 gout[n*81+12] += + s[28];
2932 gout[n*81+13] += + s[31];
2933 gout[n*81+14] += + s[34];
2934 gout[n*81+15] += + s[29];
2935 gout[n*81+16] += + s[32];
2936 gout[n*81+17] += + s[35];
2937 gout[n*81+18] += + s[54];
2938 gout[n*81+19] += + s[57];
2939 gout[n*81+20] += + s[60];
2940 gout[n*81+21] += + s[55];
2941 gout[n*81+22] += + s[58];
2942 gout[n*81+23] += + s[61];
2943 gout[n*81+24] += + s[56];
2944 gout[n*81+25] += + s[59];
2945 gout[n*81+26] += + s[62];
2946 gout[n*81+27] += + s[9];
2947 gout[n*81+28] += + s[12];
2948 gout[n*81+29] += + s[15];
2949 gout[n*81+30] += + s[10];
2950 gout[n*81+31] += + s[13];
2951 gout[n*81+32] += + s[16];
2952 gout[n*81+33] += + s[11];
2953 gout[n*81+34] += + s[14];
2954 gout[n*81+35] += + s[17];
2955 gout[n*81+36] += + s[36];
2956 gout[n*81+37] += + s[39];
2957 gout[n*81+38] += + s[42];
2958 gout[n*81+39] += + s[37];
2959 gout[n*81+40] += + s[40];
2960 gout[n*81+41] += + s[43];
2961 gout[n*81+42] += + s[38];
2962 gout[n*81+43] += + s[41];
2963 gout[n*81+44] += + s[44];
2964 gout[n*81+45] += + s[63];
2965 gout[n*81+46] += + s[66];
2966 gout[n*81+47] += + s[69];
2967 gout[n*81+48] += + s[64];
2968 gout[n*81+49] += + s[67];
2969 gout[n*81+50] += + s[70];
2970 gout[n*81+51] += + s[65];
2971 gout[n*81+52] += + s[68];
2972 gout[n*81+53] += + s[71];
2973 gout[n*81+54] += + s[18];
2974 gout[n*81+55] += + s[21];
2975 gout[n*81+56] += + s[24];
2976 gout[n*81+57] += + s[19];
2977 gout[n*81+58] += + s[22];
2978 gout[n*81+59] += + s[25];
2979 gout[n*81+60] += + s[20];
2980 gout[n*81+61] += + s[23];
2981 gout[n*81+62] += + s[26];
2982 gout[n*81+63] += + s[45];
2983 gout[n*81+64] += + s[48];
2984 gout[n*81+65] += + s[51];
2985 gout[n*81+66] += + s[46];
2986 gout[n*81+67] += + s[49];
2987 gout[n*81+68] += + s[52];
2988 gout[n*81+69] += + s[47];
2989 gout[n*81+70] += + s[50];
2990 gout[n*81+71] += + s[53];
2991 gout[n*81+72] += + s[72];
2992 gout[n*81+73] += + s[75];
2993 gout[n*81+74] += + s[78];
2994 gout[n*81+75] += + s[73];
2995 gout[n*81+76] += + s[76];
2996 gout[n*81+77] += + s[79];
2997 gout[n*81+78] += + s[74];
2998 gout[n*81+79] += + s[77];
2999 gout[n*81+80] += + s[80];
3000 }}}
int2e_ipip1ipip2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)3001 void int2e_ipip1ipip2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
3002 FINT ng[] = {2, 0, 2, 0, 4, 1, 1, 81};
3003 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
3004 }
int2e_ipip1ipip2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3005 CACHE_SIZE_T int2e_ipip1ipip2_cart(double *out, FINT *dims, FINT *shls,
3006 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3007 FINT ng[] = {2, 0, 2, 0, 4, 1, 1, 81};
3008 CINTEnvVars envs;
3009 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3010 envs.f_gout = &CINTgout2e_int2e_ipip1ipip2;
3011 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
3012 } // int2e_ipip1ipip2_cart
int2e_ipip1ipip2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3013 CACHE_SIZE_T int2e_ipip1ipip2_sph(double *out, FINT *dims, FINT *shls,
3014 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3015 FINT ng[] = {2, 0, 2, 0, 4, 1, 1, 81};
3016 CINTEnvVars envs;
3017 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3018 envs.f_gout = &CINTgout2e_int2e_ipip1ipip2;
3019 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
3020 } // int2e_ipip1ipip2_sph
int2e_ipip1ipip2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3021 CACHE_SIZE_T int2e_ipip1ipip2_spinor(double complex *out, FINT *dims, FINT *shls,
3022 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3023 FINT ng[] = {2, 0, 2, 0, 4, 1, 1, 81};
3024 CINTEnvVars envs;
3025 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3026 envs.f_gout = &CINTgout2e_int2e_ipip1ipip2;
3027 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
3028 } // int2e_ipip1ipip2_spinor
3029 ALL_CINT(int2e_ipip1ipip2)
ALL_CINT_FORTRAN_(int2e_ipip1ipip2)3030 ALL_CINT_FORTRAN_(int2e_ipip1ipip2)
3031 /* <NABLA k NABLA i|R12 |NABLA j NABLA l> : i,j \in electron 1; k,l \in electron 2
3032  * = (NABLA i NABLA j|R12 |NABLA k NABLA l) */
3033 void CINTgout2e_int2e_ipvip1ipvip2(double *gout,
3034 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
3035 FINT nf = envs->nf;
3036 FINT nrys_roots = envs->nrys_roots;
3037 FINT ix, iy, iz, i, n;
3038 double *g0 = g;
3039 double *g1 = g0 + envs->g_size * 3;
3040 double *g2 = g1 + envs->g_size * 3;
3041 double *g3 = g2 + envs->g_size * 3;
3042 double *g4 = g3 + envs->g_size * 3;
3043 double *g5 = g4 + envs->g_size * 3;
3044 double *g6 = g5 + envs->g_size * 3;
3045 double *g7 = g6 + envs->g_size * 3;
3046 double *g8 = g7 + envs->g_size * 3;
3047 double *g9 = g8 + envs->g_size * 3;
3048 double *g10 = g9 + envs->g_size * 3;
3049 double *g11 = g10 + envs->g_size * 3;
3050 double *g12 = g11 + envs->g_size * 3;
3051 double *g13 = g12 + envs->g_size * 3;
3052 double *g14 = g13 + envs->g_size * 3;
3053 double *g15 = g14 + envs->g_size * 3;
3054 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
3055 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
3056 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
3057 G2E_D_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
3058 G2E_D_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
3059 G2E_D_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
3060 G2E_D_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
3061 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3062 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3063 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3064 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3065 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3066 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3067 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3068 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
3069 double s[81];
3070 for (n = 0; n < nf; n++) {
3071 ix = idx[0+n*3];
3072 iy = idx[1+n*3];
3073 iz = idx[2+n*3];
3074 for (i = 0; i < 81; i++) { s[i] = 0; }
3075 for (i = 0; i < nrys_roots; i++) {
3076 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
3077 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
3078 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
3079 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
3080 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
3081 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
3082 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
3083 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
3084 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
3085 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
3086 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
3087 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
3088 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
3089 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
3090 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
3091 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
3092 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
3093 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
3094 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
3095 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
3096 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
3097 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
3098 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
3099 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
3100 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
3101 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
3102 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
3103 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
3104 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
3105 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
3106 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
3107 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
3108 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
3109 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
3110 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
3111 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
3112 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
3113 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
3114 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
3115 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
3116 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
3117 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
3118 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
3119 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
3120 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
3121 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
3122 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
3123 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
3124 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
3125 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
3126 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
3127 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
3128 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
3129 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
3130 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
3131 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
3132 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
3133 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
3134 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
3135 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
3136 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
3137 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
3138 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
3139 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
3140 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
3141 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
3142 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
3143 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
3144 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
3145 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
3146 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
3147 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
3148 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
3149 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
3150 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
3151 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
3152 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
3153 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
3154 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
3155 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
3156 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
3157 }
3158 if (gout_empty) {
3159 gout[n*81+0] = + s[0];
3160 gout[n*81+1] = + s[1];
3161 gout[n*81+2] = + s[2];
3162 gout[n*81+3] = + s[3];
3163 gout[n*81+4] = + s[4];
3164 gout[n*81+5] = + s[5];
3165 gout[n*81+6] = + s[6];
3166 gout[n*81+7] = + s[7];
3167 gout[n*81+8] = + s[8];
3168 gout[n*81+9] = + s[9];
3169 gout[n*81+10] = + s[10];
3170 gout[n*81+11] = + s[11];
3171 gout[n*81+12] = + s[12];
3172 gout[n*81+13] = + s[13];
3173 gout[n*81+14] = + s[14];
3174 gout[n*81+15] = + s[15];
3175 gout[n*81+16] = + s[16];
3176 gout[n*81+17] = + s[17];
3177 gout[n*81+18] = + s[18];
3178 gout[n*81+19] = + s[19];
3179 gout[n*81+20] = + s[20];
3180 gout[n*81+21] = + s[21];
3181 gout[n*81+22] = + s[22];
3182 gout[n*81+23] = + s[23];
3183 gout[n*81+24] = + s[24];
3184 gout[n*81+25] = + s[25];
3185 gout[n*81+26] = + s[26];
3186 gout[n*81+27] = + s[27];
3187 gout[n*81+28] = + s[28];
3188 gout[n*81+29] = + s[29];
3189 gout[n*81+30] = + s[30];
3190 gout[n*81+31] = + s[31];
3191 gout[n*81+32] = + s[32];
3192 gout[n*81+33] = + s[33];
3193 gout[n*81+34] = + s[34];
3194 gout[n*81+35] = + s[35];
3195 gout[n*81+36] = + s[36];
3196 gout[n*81+37] = + s[37];
3197 gout[n*81+38] = + s[38];
3198 gout[n*81+39] = + s[39];
3199 gout[n*81+40] = + s[40];
3200 gout[n*81+41] = + s[41];
3201 gout[n*81+42] = + s[42];
3202 gout[n*81+43] = + s[43];
3203 gout[n*81+44] = + s[44];
3204 gout[n*81+45] = + s[45];
3205 gout[n*81+46] = + s[46];
3206 gout[n*81+47] = + s[47];
3207 gout[n*81+48] = + s[48];
3208 gout[n*81+49] = + s[49];
3209 gout[n*81+50] = + s[50];
3210 gout[n*81+51] = + s[51];
3211 gout[n*81+52] = + s[52];
3212 gout[n*81+53] = + s[53];
3213 gout[n*81+54] = + s[54];
3214 gout[n*81+55] = + s[55];
3215 gout[n*81+56] = + s[56];
3216 gout[n*81+57] = + s[57];
3217 gout[n*81+58] = + s[58];
3218 gout[n*81+59] = + s[59];
3219 gout[n*81+60] = + s[60];
3220 gout[n*81+61] = + s[61];
3221 gout[n*81+62] = + s[62];
3222 gout[n*81+63] = + s[63];
3223 gout[n*81+64] = + s[64];
3224 gout[n*81+65] = + s[65];
3225 gout[n*81+66] = + s[66];
3226 gout[n*81+67] = + s[67];
3227 gout[n*81+68] = + s[68];
3228 gout[n*81+69] = + s[69];
3229 gout[n*81+70] = + s[70];
3230 gout[n*81+71] = + s[71];
3231 gout[n*81+72] = + s[72];
3232 gout[n*81+73] = + s[73];
3233 gout[n*81+74] = + s[74];
3234 gout[n*81+75] = + s[75];
3235 gout[n*81+76] = + s[76];
3236 gout[n*81+77] = + s[77];
3237 gout[n*81+78] = + s[78];
3238 gout[n*81+79] = + s[79];
3239 gout[n*81+80] = + s[80];
3240 } else {
3241 gout[n*81+0] += + s[0];
3242 gout[n*81+1] += + s[1];
3243 gout[n*81+2] += + s[2];
3244 gout[n*81+3] += + s[3];
3245 gout[n*81+4] += + s[4];
3246 gout[n*81+5] += + s[5];
3247 gout[n*81+6] += + s[6];
3248 gout[n*81+7] += + s[7];
3249 gout[n*81+8] += + s[8];
3250 gout[n*81+9] += + s[9];
3251 gout[n*81+10] += + s[10];
3252 gout[n*81+11] += + s[11];
3253 gout[n*81+12] += + s[12];
3254 gout[n*81+13] += + s[13];
3255 gout[n*81+14] += + s[14];
3256 gout[n*81+15] += + s[15];
3257 gout[n*81+16] += + s[16];
3258 gout[n*81+17] += + s[17];
3259 gout[n*81+18] += + s[18];
3260 gout[n*81+19] += + s[19];
3261 gout[n*81+20] += + s[20];
3262 gout[n*81+21] += + s[21];
3263 gout[n*81+22] += + s[22];
3264 gout[n*81+23] += + s[23];
3265 gout[n*81+24] += + s[24];
3266 gout[n*81+25] += + s[25];
3267 gout[n*81+26] += + s[26];
3268 gout[n*81+27] += + s[27];
3269 gout[n*81+28] += + s[28];
3270 gout[n*81+29] += + s[29];
3271 gout[n*81+30] += + s[30];
3272 gout[n*81+31] += + s[31];
3273 gout[n*81+32] += + s[32];
3274 gout[n*81+33] += + s[33];
3275 gout[n*81+34] += + s[34];
3276 gout[n*81+35] += + s[35];
3277 gout[n*81+36] += + s[36];
3278 gout[n*81+37] += + s[37];
3279 gout[n*81+38] += + s[38];
3280 gout[n*81+39] += + s[39];
3281 gout[n*81+40] += + s[40];
3282 gout[n*81+41] += + s[41];
3283 gout[n*81+42] += + s[42];
3284 gout[n*81+43] += + s[43];
3285 gout[n*81+44] += + s[44];
3286 gout[n*81+45] += + s[45];
3287 gout[n*81+46] += + s[46];
3288 gout[n*81+47] += + s[47];
3289 gout[n*81+48] += + s[48];
3290 gout[n*81+49] += + s[49];
3291 gout[n*81+50] += + s[50];
3292 gout[n*81+51] += + s[51];
3293 gout[n*81+52] += + s[52];
3294 gout[n*81+53] += + s[53];
3295 gout[n*81+54] += + s[54];
3296 gout[n*81+55] += + s[55];
3297 gout[n*81+56] += + s[56];
3298 gout[n*81+57] += + s[57];
3299 gout[n*81+58] += + s[58];
3300 gout[n*81+59] += + s[59];
3301 gout[n*81+60] += + s[60];
3302 gout[n*81+61] += + s[61];
3303 gout[n*81+62] += + s[62];
3304 gout[n*81+63] += + s[63];
3305 gout[n*81+64] += + s[64];
3306 gout[n*81+65] += + s[65];
3307 gout[n*81+66] += + s[66];
3308 gout[n*81+67] += + s[67];
3309 gout[n*81+68] += + s[68];
3310 gout[n*81+69] += + s[69];
3311 gout[n*81+70] += + s[70];
3312 gout[n*81+71] += + s[71];
3313 gout[n*81+72] += + s[72];
3314 gout[n*81+73] += + s[73];
3315 gout[n*81+74] += + s[74];
3316 gout[n*81+75] += + s[75];
3317 gout[n*81+76] += + s[76];
3318 gout[n*81+77] += + s[77];
3319 gout[n*81+78] += + s[78];
3320 gout[n*81+79] += + s[79];
3321 gout[n*81+80] += + s[80];
3322 }}}
int2e_ipvip1ipvip2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)3323 void int2e_ipvip1ipvip2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
3324 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 81};
3325 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
3326 }
int2e_ipvip1ipvip2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3327 CACHE_SIZE_T int2e_ipvip1ipvip2_cart(double *out, FINT *dims, FINT *shls,
3328 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3329 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 81};
3330 CINTEnvVars envs;
3331 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3332 envs.f_gout = &CINTgout2e_int2e_ipvip1ipvip2;
3333 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
3334 } // int2e_ipvip1ipvip2_cart
int2e_ipvip1ipvip2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3335 CACHE_SIZE_T int2e_ipvip1ipvip2_sph(double *out, FINT *dims, FINT *shls,
3336 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3337 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 81};
3338 CINTEnvVars envs;
3339 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3340 envs.f_gout = &CINTgout2e_int2e_ipvip1ipvip2;
3341 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
3342 } // int2e_ipvip1ipvip2_sph
int2e_ipvip1ipvip2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)3343 CACHE_SIZE_T int2e_ipvip1ipvip2_spinor(double complex *out, FINT *dims, FINT *shls,
3344 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
3345 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 81};
3346 CINTEnvVars envs;
3347 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
3348 envs.f_gout = &CINTgout2e_int2e_ipvip1ipvip2;
3349 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
3350 } // int2e_ipvip1ipvip2_spinor
3351 ALL_CINT(int2e_ipvip1ipvip2)
3352 ALL_CINT_FORTRAN_(int2e_ipvip1ipvip2)
3353