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