1 /*
2  * Copyright (C) 2013-  Qiming Sun <osirpt.sun@gmail.com>
3  * Description: code generated by  gen-code.cl
4  */
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include "cint_bas.h"
8 #include "cart2sph.h"
9 #include "g1e.h"
10 #include "g1e_grids.h"
11 #include "g2e.h"
12 #include "optimizer.h"
13 #include "cint1e.h"
14 #include "cint2e.h"
15 #include "misc.h"
16 #include "c2f.h"
17 /* <k SIGMA DOT P i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
18  * = (SIGMA DOT P i SIGMA DOT P j|R12 |k l) */
CINTgout2e_int2e_spsp1(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)19 void CINTgout2e_int2e_spsp1(double *gout,
20 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
21 FINT nf = envs->nf;
22 FINT nrys_roots = envs->nrys_roots;
23 FINT ix, iy, iz, i, n;
24 double *g0 = g;
25 double *g1 = g0 + envs->g_size * 3;
26 double *g2 = g1 + envs->g_size * 3;
27 double *g3 = g2 + envs->g_size * 3;
28 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
29 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
30 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
31 double s[9];
32 for (n = 0; n < nf; n++) {
33 ix = idx[0+n*3];
34 iy = idx[1+n*3];
35 iz = idx[2+n*3];
36 for (i = 0; i < 9; i++) { s[i] = 0; }
37 for (i = 0; i < nrys_roots; i++) {
38 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
39 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
40 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
41 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
42 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
43 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
44 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
45 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
46 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
47 }
48 if (gout_empty) {
49 gout[n*4+0] = + s[5] - s[7];
50 gout[n*4+1] = + s[6] - s[2];
51 gout[n*4+2] = + s[1] - s[3];
52 gout[n*4+3] = + s[0] + s[4] + s[8];
53 } else {
54 gout[n*4+0] += + s[5] - s[7];
55 gout[n*4+1] += + s[6] - s[2];
56 gout[n*4+2] += + s[1] - s[3];
57 gout[n*4+3] += + s[0] + s[4] + s[8];
58 }}}
int2e_spsp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)59 void int2e_spsp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
60 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
61 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
62 }
int2e_spsp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)63 CACHE_SIZE_T int2e_spsp1_cart(double *out, FINT *dims, FINT *shls,
64 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
65 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
66 CINTEnvVars envs;
67 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
68 envs.f_gout = &CINTgout2e_int2e_spsp1;
69 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
70 } // int2e_spsp1_cart
int2e_spsp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)71 CACHE_SIZE_T int2e_spsp1_sph(double *out, FINT *dims, FINT *shls,
72 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
73 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
74 CINTEnvVars envs;
75 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
76 envs.f_gout = &CINTgout2e_int2e_spsp1;
77 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
78 } // int2e_spsp1_sph
int2e_spsp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)79 CACHE_SIZE_T int2e_spsp1_spinor(double complex *out, FINT *dims, FINT *shls,
80 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
81 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
82 CINTEnvVars envs;
83 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
84 envs.f_gout = &CINTgout2e_int2e_spsp1;
85 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
86 } // int2e_spsp1_spinor
87 ALL_CINT(int2e_spsp1)
ALL_CINT_FORTRAN_(int2e_spsp1)88 ALL_CINT_FORTRAN_(int2e_spsp1)
89 /* <SIGMA DOT P k SIGMA DOT P i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
90  * = (SIGMA DOT P i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
91 void CINTgout2e_int2e_spsp1spsp2(double *gout,
92 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
93 FINT nf = envs->nf;
94 FINT nrys_roots = envs->nrys_roots;
95 FINT ix, iy, iz, i, n;
96 double *g0 = g;
97 double *g1 = g0 + envs->g_size * 3;
98 double *g2 = g1 + envs->g_size * 3;
99 double *g3 = g2 + envs->g_size * 3;
100 double *g4 = g3 + envs->g_size * 3;
101 double *g5 = g4 + envs->g_size * 3;
102 double *g6 = g5 + envs->g_size * 3;
103 double *g7 = g6 + envs->g_size * 3;
104 double *g8 = g7 + envs->g_size * 3;
105 double *g9 = g8 + envs->g_size * 3;
106 double *g10 = g9 + envs->g_size * 3;
107 double *g11 = g10 + envs->g_size * 3;
108 double *g12 = g11 + envs->g_size * 3;
109 double *g13 = g12 + envs->g_size * 3;
110 double *g14 = g13 + envs->g_size * 3;
111 double *g15 = g14 + envs->g_size * 3;
112 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
113 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
114 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
115 G2E_D_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
116 G2E_D_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
117 G2E_D_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
118 G2E_D_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
119 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
120 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
121 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
122 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
123 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
124 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
125 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
126 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
127 double s[81];
128 for (n = 0; n < nf; n++) {
129 ix = idx[0+n*3];
130 iy = idx[1+n*3];
131 iz = idx[2+n*3];
132 for (i = 0; i < 81; i++) { s[i] = 0; }
133 for (i = 0; i < nrys_roots; i++) {
134 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
135 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
136 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
137 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
138 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
139 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
140 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
141 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
142 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
143 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
144 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
145 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
146 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
147 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
148 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
149 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
150 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
151 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
152 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
153 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
154 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
155 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
156 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
157 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
158 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
159 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
160 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
161 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
162 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
163 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
164 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
165 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
166 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
167 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
168 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
169 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
170 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
171 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
172 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
173 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
174 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
175 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
176 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
177 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
178 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
179 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
180 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
181 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
182 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
183 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
184 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
185 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
186 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
187 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
188 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
189 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
190 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
191 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
192 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
193 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
194 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
195 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
196 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
197 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
198 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
199 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
200 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
201 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
202 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
203 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
204 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
205 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
206 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
207 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
208 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
209 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
210 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
211 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
212 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
213 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
214 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
215 }
216 if (gout_empty) {
217 gout[n*16+0] = + s[50] - s[68] - s[52] + s[70];
218 gout[n*16+1] = + s[59] - s[23] - s[61] + s[25];
219 gout[n*16+2] = + s[14] - s[32] - s[16] + s[34];
220 gout[n*16+3] = + s[5] + s[41] + s[77] - s[7] - s[43] - s[79];
221 gout[n*16+4] = + s[51] - s[69] - s[47] + s[65];
222 gout[n*16+5] = + s[60] - s[24] - s[56] + s[20];
223 gout[n*16+6] = + s[15] - s[33] - s[11] + s[29];
224 gout[n*16+7] = + s[6] + s[42] + s[78] - s[2] - s[38] - s[74];
225 gout[n*16+8] = + s[46] - s[64] - s[48] + s[66];
226 gout[n*16+9] = + s[55] - s[19] - s[57] + s[21];
227 gout[n*16+10] = + s[10] - s[28] - s[12] + s[30];
228 gout[n*16+11] = + s[1] + s[37] + s[73] - s[3] - s[39] - s[75];
229 gout[n*16+12] = + s[45] - s[63] + s[49] - s[67] + s[53] - s[71];
230 gout[n*16+13] = + s[54] - s[18] + s[58] - s[22] + s[62] - s[26];
231 gout[n*16+14] = + s[9] - s[27] + s[13] - s[31] + s[17] - s[35];
232 gout[n*16+15] = + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
233 } else {
234 gout[n*16+0] += + s[50] - s[68] - s[52] + s[70];
235 gout[n*16+1] += + s[59] - s[23] - s[61] + s[25];
236 gout[n*16+2] += + s[14] - s[32] - s[16] + s[34];
237 gout[n*16+3] += + s[5] + s[41] + s[77] - s[7] - s[43] - s[79];
238 gout[n*16+4] += + s[51] - s[69] - s[47] + s[65];
239 gout[n*16+5] += + s[60] - s[24] - s[56] + s[20];
240 gout[n*16+6] += + s[15] - s[33] - s[11] + s[29];
241 gout[n*16+7] += + s[6] + s[42] + s[78] - s[2] - s[38] - s[74];
242 gout[n*16+8] += + s[46] - s[64] - s[48] + s[66];
243 gout[n*16+9] += + s[55] - s[19] - s[57] + s[21];
244 gout[n*16+10] += + s[10] - s[28] - s[12] + s[30];
245 gout[n*16+11] += + s[1] + s[37] + s[73] - s[3] - s[39] - s[75];
246 gout[n*16+12] += + s[45] - s[63] + s[49] - s[67] + s[53] - s[71];
247 gout[n*16+13] += + s[54] - s[18] + s[58] - s[22] + s[62] - s[26];
248 gout[n*16+14] += + s[9] - s[27] + s[13] - s[31] + s[17] - s[35];
249 gout[n*16+15] += + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
250 }}}
int2e_spsp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)251 void int2e_spsp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
252 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
253 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
254 }
int2e_spsp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)255 CACHE_SIZE_T int2e_spsp1spsp2_cart(double *out, FINT *dims, FINT *shls,
256 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
257 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
258 CINTEnvVars envs;
259 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
260 envs.f_gout = &CINTgout2e_int2e_spsp1spsp2;
261 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
262 } // int2e_spsp1spsp2_cart
int2e_spsp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)263 CACHE_SIZE_T int2e_spsp1spsp2_sph(double *out, FINT *dims, FINT *shls,
264 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
265 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
266 CINTEnvVars envs;
267 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
268 envs.f_gout = &CINTgout2e_int2e_spsp1spsp2;
269 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
270 } // int2e_spsp1spsp2_sph
int2e_spsp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)271 CACHE_SIZE_T int2e_spsp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
272 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
273 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
274 CINTEnvVars envs;
275 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
276 envs.f_gout = &CINTgout2e_int2e_spsp1spsp2;
277 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
278 } // int2e_spsp1spsp2_spinor
279 ALL_CINT(int2e_spsp1spsp2)
ALL_CINT_FORTRAN_(int2e_spsp1spsp2)280 ALL_CINT_FORTRAN_(int2e_spsp1spsp2)
281 /* <k SIGMA DOT R i|R12 |SIGMA DOT R j l> : i,j \in electron 1; k,l \in electron 2
282  * = (SIGMA DOT R i SIGMA DOT R j|R12 |k l) */
283 void CINTgout2e_int2e_srsr1(double *gout,
284 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
285 FINT nf = envs->nf;
286 FINT nrys_roots = envs->nrys_roots;
287 FINT ix, iy, iz, i, n;
288 double *g0 = g;
289 double *g1 = g0 + envs->g_size * 3;
290 double *g2 = g1 + envs->g_size * 3;
291 double *g3 = g2 + envs->g_size * 3;
292 G2E_R_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
293 G2E_R_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
294 G2E_R_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
295 double s[9];
296 for (n = 0; n < nf; n++) {
297 ix = idx[0+n*3];
298 iy = idx[1+n*3];
299 iz = idx[2+n*3];
300 for (i = 0; i < 9; i++) { s[i] = 0; }
301 for (i = 0; i < nrys_roots; i++) {
302 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
303 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
304 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
305 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
306 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
307 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
308 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
309 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
310 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
311 }
312 if (gout_empty) {
313 gout[n*4+0] = + s[5] - s[7];
314 gout[n*4+1] = + s[6] - s[2];
315 gout[n*4+2] = + s[1] - s[3];
316 gout[n*4+3] = + s[0] + s[4] + s[8];
317 } else {
318 gout[n*4+0] += + s[5] - s[7];
319 gout[n*4+1] += + s[6] - s[2];
320 gout[n*4+2] += + s[1] - s[3];
321 gout[n*4+3] += + s[0] + s[4] + s[8];
322 }}}
int2e_srsr1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)323 void int2e_srsr1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
324 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
325 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
326 }
int2e_srsr1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)327 CACHE_SIZE_T int2e_srsr1_cart(double *out, FINT *dims, FINT *shls,
328 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
329 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
330 CINTEnvVars envs;
331 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
332 envs.f_gout = &CINTgout2e_int2e_srsr1;
333 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
334 } // int2e_srsr1_cart
int2e_srsr1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)335 CACHE_SIZE_T int2e_srsr1_sph(double *out, FINT *dims, FINT *shls,
336 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
337 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
338 CINTEnvVars envs;
339 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
340 envs.f_gout = &CINTgout2e_int2e_srsr1;
341 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
342 } // int2e_srsr1_sph
int2e_srsr1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)343 CACHE_SIZE_T int2e_srsr1_spinor(double complex *out, FINT *dims, FINT *shls,
344 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
345 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
346 CINTEnvVars envs;
347 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
348 envs.f_gout = &CINTgout2e_int2e_srsr1;
349 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
350 } // int2e_srsr1_spinor
351 ALL_CINT(int2e_srsr1)
ALL_CINT_FORTRAN_(int2e_srsr1)352 ALL_CINT_FORTRAN_(int2e_srsr1)
353 /* <SIGMA DOT R k SIGMA DOT R i|R12 |SIGMA DOT R j SIGMA DOT R l> : i,j \in electron 1; k,l \in electron 2
354  * = (SIGMA DOT R i SIGMA DOT R j|R12 |SIGMA DOT R k SIGMA DOT R l) */
355 void CINTgout2e_int2e_srsr1srsr2(double *gout,
356 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
357 FINT nf = envs->nf;
358 FINT nrys_roots = envs->nrys_roots;
359 FINT ix, iy, iz, i, n;
360 double *g0 = g;
361 double *g1 = g0 + envs->g_size * 3;
362 double *g2 = g1 + envs->g_size * 3;
363 double *g3 = g2 + envs->g_size * 3;
364 double *g4 = g3 + envs->g_size * 3;
365 double *g5 = g4 + envs->g_size * 3;
366 double *g6 = g5 + envs->g_size * 3;
367 double *g7 = g6 + envs->g_size * 3;
368 double *g8 = g7 + envs->g_size * 3;
369 double *g9 = g8 + envs->g_size * 3;
370 double *g10 = g9 + envs->g_size * 3;
371 double *g11 = g10 + envs->g_size * 3;
372 double *g12 = g11 + envs->g_size * 3;
373 double *g13 = g12 + envs->g_size * 3;
374 double *g14 = g13 + envs->g_size * 3;
375 double *g15 = g14 + envs->g_size * 3;
376 G2E_R_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
377 G2E_R_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
378 G2E_R_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
379 G2E_R_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
380 G2E_R_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
381 G2E_R_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
382 G2E_R_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
383 G2E_R_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
384 G2E_R_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
385 G2E_R_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
386 G2E_R_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
387 G2E_R_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
388 G2E_R_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
389 G2E_R_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
390 G2E_R_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
391 double s[81];
392 for (n = 0; n < nf; n++) {
393 ix = idx[0+n*3];
394 iy = idx[1+n*3];
395 iz = idx[2+n*3];
396 for (i = 0; i < 81; i++) { s[i] = 0; }
397 for (i = 0; i < nrys_roots; i++) {
398 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
399 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
400 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
401 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
402 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
403 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
404 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
405 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
406 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
407 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
408 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
409 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
410 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
411 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
412 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
413 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
414 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
415 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
416 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
417 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
418 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
419 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
420 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
421 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
422 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
423 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
424 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
425 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
426 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
427 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
428 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
429 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
430 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
431 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
432 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
433 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
434 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
435 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
436 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
437 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
438 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
439 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
440 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
441 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
442 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
443 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
444 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
445 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
446 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
447 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
448 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
449 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
450 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
451 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
452 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
453 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
454 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
455 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
456 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
457 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
458 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
459 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
460 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
461 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
462 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
463 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
464 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
465 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
466 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
467 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
468 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
469 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
470 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
471 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
472 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
473 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
474 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
475 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
476 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
477 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
478 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
479 }
480 if (gout_empty) {
481 gout[n*16+0] = + s[50] - s[68] - s[52] + s[70];
482 gout[n*16+1] = + s[59] - s[23] - s[61] + s[25];
483 gout[n*16+2] = + s[14] - s[32] - s[16] + s[34];
484 gout[n*16+3] = + s[5] + s[41] + s[77] - s[7] - s[43] - s[79];
485 gout[n*16+4] = + s[51] - s[69] - s[47] + s[65];
486 gout[n*16+5] = + s[60] - s[24] - s[56] + s[20];
487 gout[n*16+6] = + s[15] - s[33] - s[11] + s[29];
488 gout[n*16+7] = + s[6] + s[42] + s[78] - s[2] - s[38] - s[74];
489 gout[n*16+8] = + s[46] - s[64] - s[48] + s[66];
490 gout[n*16+9] = + s[55] - s[19] - s[57] + s[21];
491 gout[n*16+10] = + s[10] - s[28] - s[12] + s[30];
492 gout[n*16+11] = + s[1] + s[37] + s[73] - s[3] - s[39] - s[75];
493 gout[n*16+12] = + s[45] - s[63] + s[49] - s[67] + s[53] - s[71];
494 gout[n*16+13] = + s[54] - s[18] + s[58] - s[22] + s[62] - s[26];
495 gout[n*16+14] = + s[9] - s[27] + s[13] - s[31] + s[17] - s[35];
496 gout[n*16+15] = + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
497 } else {
498 gout[n*16+0] += + s[50] - s[68] - s[52] + s[70];
499 gout[n*16+1] += + s[59] - s[23] - s[61] + s[25];
500 gout[n*16+2] += + s[14] - s[32] - s[16] + s[34];
501 gout[n*16+3] += + s[5] + s[41] + s[77] - s[7] - s[43] - s[79];
502 gout[n*16+4] += + s[51] - s[69] - s[47] + s[65];
503 gout[n*16+5] += + s[60] - s[24] - s[56] + s[20];
504 gout[n*16+6] += + s[15] - s[33] - s[11] + s[29];
505 gout[n*16+7] += + s[6] + s[42] + s[78] - s[2] - s[38] - s[74];
506 gout[n*16+8] += + s[46] - s[64] - s[48] + s[66];
507 gout[n*16+9] += + s[55] - s[19] - s[57] + s[21];
508 gout[n*16+10] += + s[10] - s[28] - s[12] + s[30];
509 gout[n*16+11] += + s[1] + s[37] + s[73] - s[3] - s[39] - s[75];
510 gout[n*16+12] += + s[45] - s[63] + s[49] - s[67] + s[53] - s[71];
511 gout[n*16+13] += + s[54] - s[18] + s[58] - s[22] + s[62] - s[26];
512 gout[n*16+14] += + s[9] - s[27] + s[13] - s[31] + s[17] - s[35];
513 gout[n*16+15] += + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
514 }}}
int2e_srsr1srsr2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)515 void int2e_srsr1srsr2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
516 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
517 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
518 }
int2e_srsr1srsr2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)519 CACHE_SIZE_T int2e_srsr1srsr2_cart(double *out, FINT *dims, FINT *shls,
520 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
521 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
522 CINTEnvVars envs;
523 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
524 envs.f_gout = &CINTgout2e_int2e_srsr1srsr2;
525 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
526 } // int2e_srsr1srsr2_cart
int2e_srsr1srsr2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)527 CACHE_SIZE_T int2e_srsr1srsr2_sph(double *out, FINT *dims, FINT *shls,
528 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
529 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
530 CINTEnvVars envs;
531 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
532 envs.f_gout = &CINTgout2e_int2e_srsr1srsr2;
533 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
534 } // int2e_srsr1srsr2_sph
int2e_srsr1srsr2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)535 CACHE_SIZE_T int2e_srsr1srsr2_spinor(double complex *out, FINT *dims, FINT *shls,
536 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
537 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 1};
538 CINTEnvVars envs;
539 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
540 envs.f_gout = &CINTgout2e_int2e_srsr1srsr2;
541 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
542 } // int2e_srsr1srsr2_spinor
543 ALL_CINT(int2e_srsr1srsr2)
ALL_CINT_FORTRAN_(int2e_srsr1srsr2)544 ALL_CINT_FORTRAN_(int2e_srsr1srsr2)
545 /* <k RC CROSS SIGMA i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
546  * = (RC CROSS SIGMA i SIGMA DOT P j|R12 |k l) */
547 void CINTgout2e_int2e_cg_sa10sp1(double *gout,
548 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
549 FINT nf = envs->nf;
550 FINT nrys_roots = envs->nrys_roots;
551 FINT ix, iy, iz, i, n;
552 double *g0 = g;
553 double *g1 = g0 + envs->g_size * 3;
554 double *g2 = g1 + envs->g_size * 3;
555 double *g3 = g2 + envs->g_size * 3;
556 double dri[3];
557 dri[0] = envs->ri[0] - envs->env[PTR_COMMON_ORIG+0];
558 dri[1] = envs->ri[1] - envs->env[PTR_COMMON_ORIG+1];
559 dri[2] = envs->ri[2] - envs->env[PTR_COMMON_ORIG+2];
560 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
561 G2E_RCI(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
562 G2E_RCI(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
563 double s[9];
564 for (n = 0; n < nf; n++) {
565 ix = idx[0+n*3];
566 iy = idx[1+n*3];
567 iz = idx[2+n*3];
568 for (i = 0; i < 9; i++) { s[i] = 0; }
569 for (i = 0; i < nrys_roots; i++) {
570 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
571 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
572 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
573 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
574 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
575 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
576 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
577 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
578 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
579 }
580 if (gout_empty) {
581 gout[n*12+0] = + s[8] + s[4];
582 gout[n*12+1] = - s[3];
583 gout[n*12+2] = - s[6];
584 gout[n*12+3] = + s[7] - s[5];
585 gout[n*12+4] = - s[1];
586 gout[n*12+5] = + s[0] + s[8];
587 gout[n*12+6] = - s[7];
588 gout[n*12+7] = - s[6] + s[2];
589 gout[n*12+8] = - s[2];
590 gout[n*12+9] = - s[5];
591 gout[n*12+10] = + s[4] + s[0];
592 gout[n*12+11] = + s[3] - s[1];
593 } else {
594 gout[n*12+0] += + s[8] + s[4];
595 gout[n*12+1] += - s[3];
596 gout[n*12+2] += - s[6];
597 gout[n*12+3] += + s[7] - s[5];
598 gout[n*12+4] += - s[1];
599 gout[n*12+5] += + s[0] + s[8];
600 gout[n*12+6] += - s[7];
601 gout[n*12+7] += - s[6] + s[2];
602 gout[n*12+8] += - s[2];
603 gout[n*12+9] += - s[5];
604 gout[n*12+10] += + s[4] + s[0];
605 gout[n*12+11] += + s[3] - s[1];
606 }}}
int2e_cg_sa10sp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)607 void int2e_cg_sa10sp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
608 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
609 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
610 }
int2e_cg_sa10sp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)611 CACHE_SIZE_T int2e_cg_sa10sp1_cart(double *out, FINT *dims, FINT *shls,
612 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
613 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
614 CINTEnvVars envs;
615 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
616 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1;
617 envs.common_factor *= 0.5;
618 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
619 } // int2e_cg_sa10sp1_cart
int2e_cg_sa10sp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)620 CACHE_SIZE_T int2e_cg_sa10sp1_sph(double *out, FINT *dims, FINT *shls,
621 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
622 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
623 CINTEnvVars envs;
624 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
625 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1;
626 envs.common_factor *= 0.5;
627 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
628 } // int2e_cg_sa10sp1_sph
int2e_cg_sa10sp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)629 CACHE_SIZE_T int2e_cg_sa10sp1_spinor(double complex *out, FINT *dims, FINT *shls,
630 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
631 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
632 CINTEnvVars envs;
633 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
634 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1;
635 envs.common_factor *= 0.5;
636 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_sf_2e2);
637 } // int2e_cg_sa10sp1_spinor
638 ALL_CINT(int2e_cg_sa10sp1)
ALL_CINT_FORTRAN_(int2e_cg_sa10sp1)639 ALL_CINT_FORTRAN_(int2e_cg_sa10sp1)
640 /* <SIGMA DOT P k RC CROSS SIGMA i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
641  * = (RC CROSS SIGMA i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
642 void CINTgout2e_int2e_cg_sa10sp1spsp2(double *gout,
643 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
644 FINT nf = envs->nf;
645 FINT nrys_roots = envs->nrys_roots;
646 FINT ix, iy, iz, i, n;
647 double *g0 = g;
648 double *g1 = g0 + envs->g_size * 3;
649 double *g2 = g1 + envs->g_size * 3;
650 double *g3 = g2 + envs->g_size * 3;
651 double *g4 = g3 + envs->g_size * 3;
652 double *g5 = g4 + envs->g_size * 3;
653 double *g6 = g5 + envs->g_size * 3;
654 double *g7 = g6 + envs->g_size * 3;
655 double *g8 = g7 + envs->g_size * 3;
656 double *g9 = g8 + envs->g_size * 3;
657 double *g10 = g9 + envs->g_size * 3;
658 double *g11 = g10 + envs->g_size * 3;
659 double *g12 = g11 + envs->g_size * 3;
660 double *g13 = g12 + envs->g_size * 3;
661 double *g14 = g13 + envs->g_size * 3;
662 double *g15 = g14 + envs->g_size * 3;
663 double dri[3];
664 dri[0] = envs->ri[0] - envs->env[PTR_COMMON_ORIG+0];
665 dri[1] = envs->ri[1] - envs->env[PTR_COMMON_ORIG+1];
666 dri[2] = envs->ri[2] - envs->env[PTR_COMMON_ORIG+2];
667 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
668 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
669 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
670 G2E_D_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
671 G2E_D_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
672 G2E_D_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
673 G2E_D_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
674 G2E_RCI(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
675 G2E_RCI(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
676 G2E_RCI(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
677 G2E_RCI(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
678 G2E_RCI(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
679 G2E_RCI(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
680 G2E_RCI(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
681 G2E_RCI(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
682 double s[81];
683 for (n = 0; n < nf; n++) {
684 ix = idx[0+n*3];
685 iy = idx[1+n*3];
686 iz = idx[2+n*3];
687 for (i = 0; i < 81; i++) { s[i] = 0; }
688 for (i = 0; i < nrys_roots; i++) {
689 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
690 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
691 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
692 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
693 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
694 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
695 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
696 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
697 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
698 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
699 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
700 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
701 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
702 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
703 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
704 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
705 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
706 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
707 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
708 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
709 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
710 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
711 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
712 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
713 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
714 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
715 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
716 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
717 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
718 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
719 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
720 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
721 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
722 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
723 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
724 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
725 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
726 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
727 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
728 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
729 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
730 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
731 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
732 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
733 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
734 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
735 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
736 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
737 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
738 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
739 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
740 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
741 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
742 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
743 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
744 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
745 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
746 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
747 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
748 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
749 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
750 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
751 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
752 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
753 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
754 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
755 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
756 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
757 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
758 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
759 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
760 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
761 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
762 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
763 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
764 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
765 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
766 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
767 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
768 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
769 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
770 }
771 if (gout_empty) {
772 gout[n*48+0] = + s[77] + s[41] - s[79] - s[43];
773 gout[n*48+1] = - s[32] + s[34];
774 gout[n*48+2] = - s[59] + s[61];
775 gout[n*48+3] = + s[68] - s[50] - s[70] + s[52];
776 gout[n*48+4] = + s[78] + s[42] - s[74] - s[38];
777 gout[n*48+5] = - s[33] + s[29];
778 gout[n*48+6] = - s[60] + s[56];
779 gout[n*48+7] = + s[69] - s[51] - s[65] + s[47];
780 gout[n*48+8] = + s[73] + s[37] - s[75] - s[39];
781 gout[n*48+9] = - s[28] + s[30];
782 gout[n*48+10] = - s[55] + s[57];
783 gout[n*48+11] = + s[64] - s[46] - s[66] + s[48];
784 gout[n*48+12] = + s[72] + s[36] + s[76] + s[40] + s[80] + s[44];
785 gout[n*48+13] = - s[27] - s[31] - s[35];
786 gout[n*48+14] = - s[54] - s[58] - s[62];
787 gout[n*48+15] = + s[63] - s[45] + s[67] - s[49] + s[71] - s[53];
788 gout[n*48+16] = - s[14] + s[16];
789 gout[n*48+17] = + s[5] + s[77] - s[7] - s[79];
790 gout[n*48+18] = - s[68] + s[70];
791 gout[n*48+19] = - s[59] + s[23] + s[61] - s[25];
792 gout[n*48+20] = - s[15] + s[11];
793 gout[n*48+21] = + s[6] + s[78] - s[2] - s[74];
794 gout[n*48+22] = - s[69] + s[65];
795 gout[n*48+23] = - s[60] + s[24] + s[56] - s[20];
796 gout[n*48+24] = - s[10] + s[12];
797 gout[n*48+25] = + s[1] + s[73] - s[3] - s[75];
798 gout[n*48+26] = - s[64] + s[66];
799 gout[n*48+27] = - s[55] + s[19] + s[57] - s[21];
800 gout[n*48+28] = - s[9] - s[13] - s[17];
801 gout[n*48+29] = + s[0] + s[72] + s[4] + s[76] + s[8] + s[80];
802 gout[n*48+30] = - s[63] - s[67] - s[71];
803 gout[n*48+31] = - s[54] + s[18] - s[58] + s[22] - s[62] + s[26];
804 gout[n*48+32] = - s[23] + s[25];
805 gout[n*48+33] = - s[50] + s[52];
806 gout[n*48+34] = + s[41] + s[5] - s[43] - s[7];
807 gout[n*48+35] = + s[32] - s[14] - s[34] + s[16];
808 gout[n*48+36] = - s[24] + s[20];
809 gout[n*48+37] = - s[51] + s[47];
810 gout[n*48+38] = + s[42] + s[6] - s[38] - s[2];
811 gout[n*48+39] = + s[33] - s[15] - s[29] + s[11];
812 gout[n*48+40] = - s[19] + s[21];
813 gout[n*48+41] = - s[46] + s[48];
814 gout[n*48+42] = + s[37] + s[1] - s[39] - s[3];
815 gout[n*48+43] = + s[28] - s[10] - s[30] + s[12];
816 gout[n*48+44] = - s[18] - s[22] - s[26];
817 gout[n*48+45] = - s[45] - s[49] - s[53];
818 gout[n*48+46] = + s[36] + s[0] + s[40] + s[4] + s[44] + s[8];
819 gout[n*48+47] = + s[27] - s[9] + s[31] - s[13] + s[35] - s[17];
820 } else {
821 gout[n*48+0] += + s[77] + s[41] - s[79] - s[43];
822 gout[n*48+1] += - s[32] + s[34];
823 gout[n*48+2] += - s[59] + s[61];
824 gout[n*48+3] += + s[68] - s[50] - s[70] + s[52];
825 gout[n*48+4] += + s[78] + s[42] - s[74] - s[38];
826 gout[n*48+5] += - s[33] + s[29];
827 gout[n*48+6] += - s[60] + s[56];
828 gout[n*48+7] += + s[69] - s[51] - s[65] + s[47];
829 gout[n*48+8] += + s[73] + s[37] - s[75] - s[39];
830 gout[n*48+9] += - s[28] + s[30];
831 gout[n*48+10] += - s[55] + s[57];
832 gout[n*48+11] += + s[64] - s[46] - s[66] + s[48];
833 gout[n*48+12] += + s[72] + s[36] + s[76] + s[40] + s[80] + s[44];
834 gout[n*48+13] += - s[27] - s[31] - s[35];
835 gout[n*48+14] += - s[54] - s[58] - s[62];
836 gout[n*48+15] += + s[63] - s[45] + s[67] - s[49] + s[71] - s[53];
837 gout[n*48+16] += - s[14] + s[16];
838 gout[n*48+17] += + s[5] + s[77] - s[7] - s[79];
839 gout[n*48+18] += - s[68] + s[70];
840 gout[n*48+19] += - s[59] + s[23] + s[61] - s[25];
841 gout[n*48+20] += - s[15] + s[11];
842 gout[n*48+21] += + s[6] + s[78] - s[2] - s[74];
843 gout[n*48+22] += - s[69] + s[65];
844 gout[n*48+23] += - s[60] + s[24] + s[56] - s[20];
845 gout[n*48+24] += - s[10] + s[12];
846 gout[n*48+25] += + s[1] + s[73] - s[3] - s[75];
847 gout[n*48+26] += - s[64] + s[66];
848 gout[n*48+27] += - s[55] + s[19] + s[57] - s[21];
849 gout[n*48+28] += - s[9] - s[13] - s[17];
850 gout[n*48+29] += + s[0] + s[72] + s[4] + s[76] + s[8] + s[80];
851 gout[n*48+30] += - s[63] - s[67] - s[71];
852 gout[n*48+31] += - s[54] + s[18] - s[58] + s[22] - s[62] + s[26];
853 gout[n*48+32] += - s[23] + s[25];
854 gout[n*48+33] += - s[50] + s[52];
855 gout[n*48+34] += + s[41] + s[5] - s[43] - s[7];
856 gout[n*48+35] += + s[32] - s[14] - s[34] + s[16];
857 gout[n*48+36] += - s[24] + s[20];
858 gout[n*48+37] += - s[51] + s[47];
859 gout[n*48+38] += + s[42] + s[6] - s[38] - s[2];
860 gout[n*48+39] += + s[33] - s[15] - s[29] + s[11];
861 gout[n*48+40] += - s[19] + s[21];
862 gout[n*48+41] += - s[46] + s[48];
863 gout[n*48+42] += + s[37] + s[1] - s[39] - s[3];
864 gout[n*48+43] += + s[28] - s[10] - s[30] + s[12];
865 gout[n*48+44] += - s[18] - s[22] - s[26];
866 gout[n*48+45] += - s[45] - s[49] - s[53];
867 gout[n*48+46] += + s[36] + s[0] + s[40] + s[4] + s[44] + s[8];
868 gout[n*48+47] += + s[27] - s[9] + s[31] - s[13] + s[35] - s[17];
869 }}}
int2e_cg_sa10sp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)870 void int2e_cg_sa10sp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
871 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
872 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
873 }
int2e_cg_sa10sp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)874 CACHE_SIZE_T int2e_cg_sa10sp1spsp2_cart(double *out, FINT *dims, FINT *shls,
875 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
876 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
877 CINTEnvVars envs;
878 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
879 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1spsp2;
880 envs.common_factor *= 0.5;
881 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
882 } // int2e_cg_sa10sp1spsp2_cart
int2e_cg_sa10sp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)883 CACHE_SIZE_T int2e_cg_sa10sp1spsp2_sph(double *out, FINT *dims, FINT *shls,
884 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
885 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
886 CINTEnvVars envs;
887 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
888 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1spsp2;
889 envs.common_factor *= 0.5;
890 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
891 } // int2e_cg_sa10sp1spsp2_sph
int2e_cg_sa10sp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)892 CACHE_SIZE_T int2e_cg_sa10sp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
893 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
894 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
895 CINTEnvVars envs;
896 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
897 envs.f_gout = &CINTgout2e_int2e_cg_sa10sp1spsp2;
898 envs.common_factor *= 0.5;
899 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_si_2e2);
900 } // int2e_cg_sa10sp1spsp2_spinor
901 ALL_CINT(int2e_cg_sa10sp1spsp2)
ALL_CINT_FORTRAN_(int2e_cg_sa10sp1spsp2)902 ALL_CINT_FORTRAN_(int2e_cg_sa10sp1spsp2)
903 /* <k R CROSS SIGMA i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
904  * = (R CROSS SIGMA i SIGMA DOT P j|R12 |k l) */
905 void CINTgout2e_int2e_giao_sa10sp1(double *gout,
906 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
907 FINT nf = envs->nf;
908 FINT nrys_roots = envs->nrys_roots;
909 FINT ix, iy, iz, i, n;
910 double *g0 = g;
911 double *g1 = g0 + envs->g_size * 3;
912 double *g2 = g1 + envs->g_size * 3;
913 double *g3 = g2 + envs->g_size * 3;
914 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
915 G2E_R_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
916 G2E_R_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
917 double s[9];
918 for (n = 0; n < nf; n++) {
919 ix = idx[0+n*3];
920 iy = idx[1+n*3];
921 iz = idx[2+n*3];
922 for (i = 0; i < 9; i++) { s[i] = 0; }
923 for (i = 0; i < nrys_roots; i++) {
924 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
925 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
926 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
927 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
928 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
929 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
930 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
931 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
932 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
933 }
934 if (gout_empty) {
935 gout[n*12+0] = + s[8] + s[4];
936 gout[n*12+1] = - s[3];
937 gout[n*12+2] = - s[6];
938 gout[n*12+3] = + s[7] - s[5];
939 gout[n*12+4] = - s[1];
940 gout[n*12+5] = + s[0] + s[8];
941 gout[n*12+6] = - s[7];
942 gout[n*12+7] = - s[6] + s[2];
943 gout[n*12+8] = - s[2];
944 gout[n*12+9] = - s[5];
945 gout[n*12+10] = + s[4] + s[0];
946 gout[n*12+11] = + s[3] - s[1];
947 } else {
948 gout[n*12+0] += + s[8] + s[4];
949 gout[n*12+1] += - s[3];
950 gout[n*12+2] += - s[6];
951 gout[n*12+3] += + s[7] - s[5];
952 gout[n*12+4] += - s[1];
953 gout[n*12+5] += + s[0] + s[8];
954 gout[n*12+6] += - s[7];
955 gout[n*12+7] += - s[6] + s[2];
956 gout[n*12+8] += - s[2];
957 gout[n*12+9] += - s[5];
958 gout[n*12+10] += + s[4] + s[0];
959 gout[n*12+11] += + s[3] - s[1];
960 }}}
int2e_giao_sa10sp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)961 void int2e_giao_sa10sp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
962 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
963 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
964 }
int2e_giao_sa10sp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)965 CACHE_SIZE_T int2e_giao_sa10sp1_cart(double *out, FINT *dims, FINT *shls,
966 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
967 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
968 CINTEnvVars envs;
969 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
970 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1;
971 envs.common_factor *= 0.5;
972 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
973 } // int2e_giao_sa10sp1_cart
int2e_giao_sa10sp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)974 CACHE_SIZE_T int2e_giao_sa10sp1_sph(double *out, FINT *dims, FINT *shls,
975 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
976 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
977 CINTEnvVars envs;
978 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
979 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1;
980 envs.common_factor *= 0.5;
981 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
982 } // int2e_giao_sa10sp1_sph
int2e_giao_sa10sp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)983 CACHE_SIZE_T int2e_giao_sa10sp1_spinor(double complex *out, FINT *dims, FINT *shls,
984 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
985 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
986 CINTEnvVars envs;
987 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
988 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1;
989 envs.common_factor *= 0.5;
990 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_sf_2e2);
991 } // int2e_giao_sa10sp1_spinor
992 ALL_CINT(int2e_giao_sa10sp1)
ALL_CINT_FORTRAN_(int2e_giao_sa10sp1)993 ALL_CINT_FORTRAN_(int2e_giao_sa10sp1)
994 /* <SIGMA DOT P k R CROSS SIGMA i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
995  * = (R CROSS SIGMA i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
996 void CINTgout2e_int2e_giao_sa10sp1spsp2(double *gout,
997 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
998 FINT nf = envs->nf;
999 FINT nrys_roots = envs->nrys_roots;
1000 FINT ix, iy, iz, i, n;
1001 double *g0 = g;
1002 double *g1 = g0 + envs->g_size * 3;
1003 double *g2 = g1 + envs->g_size * 3;
1004 double *g3 = g2 + envs->g_size * 3;
1005 double *g4 = g3 + envs->g_size * 3;
1006 double *g5 = g4 + envs->g_size * 3;
1007 double *g6 = g5 + envs->g_size * 3;
1008 double *g7 = g6 + envs->g_size * 3;
1009 double *g8 = g7 + envs->g_size * 3;
1010 double *g9 = g8 + envs->g_size * 3;
1011 double *g10 = g9 + envs->g_size * 3;
1012 double *g11 = g10 + envs->g_size * 3;
1013 double *g12 = g11 + envs->g_size * 3;
1014 double *g13 = g12 + envs->g_size * 3;
1015 double *g14 = g13 + envs->g_size * 3;
1016 double *g15 = g14 + envs->g_size * 3;
1017 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
1018 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
1019 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
1020 G2E_D_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
1021 G2E_D_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
1022 G2E_D_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
1023 G2E_D_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
1024 G2E_R_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1025 G2E_R_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1026 G2E_R_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1027 G2E_R_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1028 G2E_R_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1029 G2E_R_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1030 G2E_R_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1031 G2E_R_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1032 double s[81];
1033 for (n = 0; n < nf; n++) {
1034 ix = idx[0+n*3];
1035 iy = idx[1+n*3];
1036 iz = idx[2+n*3];
1037 for (i = 0; i < 81; i++) { s[i] = 0; }
1038 for (i = 0; i < nrys_roots; i++) {
1039 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
1040 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
1041 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
1042 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
1043 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
1044 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
1045 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
1046 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
1047 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
1048 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
1049 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
1050 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
1051 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
1052 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
1053 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
1054 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
1055 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
1056 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
1057 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
1058 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
1059 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
1060 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
1061 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
1062 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
1063 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
1064 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
1065 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
1066 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
1067 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
1068 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
1069 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
1070 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
1071 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
1072 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
1073 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
1074 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
1075 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
1076 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
1077 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
1078 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
1079 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
1080 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
1081 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
1082 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
1083 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
1084 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
1085 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
1086 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
1087 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
1088 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
1089 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
1090 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
1091 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
1092 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
1093 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
1094 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
1095 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
1096 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
1097 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
1098 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
1099 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
1100 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
1101 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
1102 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
1103 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
1104 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
1105 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
1106 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
1107 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
1108 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
1109 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
1110 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
1111 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
1112 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
1113 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
1114 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
1115 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
1116 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
1117 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
1118 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
1119 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
1120 }
1121 if (gout_empty) {
1122 gout[n*48+0] = + s[77] + s[41] - s[79] - s[43];
1123 gout[n*48+1] = - s[32] + s[34];
1124 gout[n*48+2] = - s[59] + s[61];
1125 gout[n*48+3] = + s[68] - s[50] - s[70] + s[52];
1126 gout[n*48+4] = + s[78] + s[42] - s[74] - s[38];
1127 gout[n*48+5] = - s[33] + s[29];
1128 gout[n*48+6] = - s[60] + s[56];
1129 gout[n*48+7] = + s[69] - s[51] - s[65] + s[47];
1130 gout[n*48+8] = + s[73] + s[37] - s[75] - s[39];
1131 gout[n*48+9] = - s[28] + s[30];
1132 gout[n*48+10] = - s[55] + s[57];
1133 gout[n*48+11] = + s[64] - s[46] - s[66] + s[48];
1134 gout[n*48+12] = + s[72] + s[36] + s[76] + s[40] + s[80] + s[44];
1135 gout[n*48+13] = - s[27] - s[31] - s[35];
1136 gout[n*48+14] = - s[54] - s[58] - s[62];
1137 gout[n*48+15] = + s[63] - s[45] + s[67] - s[49] + s[71] - s[53];
1138 gout[n*48+16] = - s[14] + s[16];
1139 gout[n*48+17] = + s[5] + s[77] - s[7] - s[79];
1140 gout[n*48+18] = - s[68] + s[70];
1141 gout[n*48+19] = - s[59] + s[23] + s[61] - s[25];
1142 gout[n*48+20] = - s[15] + s[11];
1143 gout[n*48+21] = + s[6] + s[78] - s[2] - s[74];
1144 gout[n*48+22] = - s[69] + s[65];
1145 gout[n*48+23] = - s[60] + s[24] + s[56] - s[20];
1146 gout[n*48+24] = - s[10] + s[12];
1147 gout[n*48+25] = + s[1] + s[73] - s[3] - s[75];
1148 gout[n*48+26] = - s[64] + s[66];
1149 gout[n*48+27] = - s[55] + s[19] + s[57] - s[21];
1150 gout[n*48+28] = - s[9] - s[13] - s[17];
1151 gout[n*48+29] = + s[0] + s[72] + s[4] + s[76] + s[8] + s[80];
1152 gout[n*48+30] = - s[63] - s[67] - s[71];
1153 gout[n*48+31] = - s[54] + s[18] - s[58] + s[22] - s[62] + s[26];
1154 gout[n*48+32] = - s[23] + s[25];
1155 gout[n*48+33] = - s[50] + s[52];
1156 gout[n*48+34] = + s[41] + s[5] - s[43] - s[7];
1157 gout[n*48+35] = + s[32] - s[14] - s[34] + s[16];
1158 gout[n*48+36] = - s[24] + s[20];
1159 gout[n*48+37] = - s[51] + s[47];
1160 gout[n*48+38] = + s[42] + s[6] - s[38] - s[2];
1161 gout[n*48+39] = + s[33] - s[15] - s[29] + s[11];
1162 gout[n*48+40] = - s[19] + s[21];
1163 gout[n*48+41] = - s[46] + s[48];
1164 gout[n*48+42] = + s[37] + s[1] - s[39] - s[3];
1165 gout[n*48+43] = + s[28] - s[10] - s[30] + s[12];
1166 gout[n*48+44] = - s[18] - s[22] - s[26];
1167 gout[n*48+45] = - s[45] - s[49] - s[53];
1168 gout[n*48+46] = + s[36] + s[0] + s[40] + s[4] + s[44] + s[8];
1169 gout[n*48+47] = + s[27] - s[9] + s[31] - s[13] + s[35] - s[17];
1170 } else {
1171 gout[n*48+0] += + s[77] + s[41] - s[79] - s[43];
1172 gout[n*48+1] += - s[32] + s[34];
1173 gout[n*48+2] += - s[59] + s[61];
1174 gout[n*48+3] += + s[68] - s[50] - s[70] + s[52];
1175 gout[n*48+4] += + s[78] + s[42] - s[74] - s[38];
1176 gout[n*48+5] += - s[33] + s[29];
1177 gout[n*48+6] += - s[60] + s[56];
1178 gout[n*48+7] += + s[69] - s[51] - s[65] + s[47];
1179 gout[n*48+8] += + s[73] + s[37] - s[75] - s[39];
1180 gout[n*48+9] += - s[28] + s[30];
1181 gout[n*48+10] += - s[55] + s[57];
1182 gout[n*48+11] += + s[64] - s[46] - s[66] + s[48];
1183 gout[n*48+12] += + s[72] + s[36] + s[76] + s[40] + s[80] + s[44];
1184 gout[n*48+13] += - s[27] - s[31] - s[35];
1185 gout[n*48+14] += - s[54] - s[58] - s[62];
1186 gout[n*48+15] += + s[63] - s[45] + s[67] - s[49] + s[71] - s[53];
1187 gout[n*48+16] += - s[14] + s[16];
1188 gout[n*48+17] += + s[5] + s[77] - s[7] - s[79];
1189 gout[n*48+18] += - s[68] + s[70];
1190 gout[n*48+19] += - s[59] + s[23] + s[61] - s[25];
1191 gout[n*48+20] += - s[15] + s[11];
1192 gout[n*48+21] += + s[6] + s[78] - s[2] - s[74];
1193 gout[n*48+22] += - s[69] + s[65];
1194 gout[n*48+23] += - s[60] + s[24] + s[56] - s[20];
1195 gout[n*48+24] += - s[10] + s[12];
1196 gout[n*48+25] += + s[1] + s[73] - s[3] - s[75];
1197 gout[n*48+26] += - s[64] + s[66];
1198 gout[n*48+27] += - s[55] + s[19] + s[57] - s[21];
1199 gout[n*48+28] += - s[9] - s[13] - s[17];
1200 gout[n*48+29] += + s[0] + s[72] + s[4] + s[76] + s[8] + s[80];
1201 gout[n*48+30] += - s[63] - s[67] - s[71];
1202 gout[n*48+31] += - s[54] + s[18] - s[58] + s[22] - s[62] + s[26];
1203 gout[n*48+32] += - s[23] + s[25];
1204 gout[n*48+33] += - s[50] + s[52];
1205 gout[n*48+34] += + s[41] + s[5] - s[43] - s[7];
1206 gout[n*48+35] += + s[32] - s[14] - s[34] + s[16];
1207 gout[n*48+36] += - s[24] + s[20];
1208 gout[n*48+37] += - s[51] + s[47];
1209 gout[n*48+38] += + s[42] + s[6] - s[38] - s[2];
1210 gout[n*48+39] += + s[33] - s[15] - s[29] + s[11];
1211 gout[n*48+40] += - s[19] + s[21];
1212 gout[n*48+41] += - s[46] + s[48];
1213 gout[n*48+42] += + s[37] + s[1] - s[39] - s[3];
1214 gout[n*48+43] += + s[28] - s[10] - s[30] + s[12];
1215 gout[n*48+44] += - s[18] - s[22] - s[26];
1216 gout[n*48+45] += - s[45] - s[49] - s[53];
1217 gout[n*48+46] += + s[36] + s[0] + s[40] + s[4] + s[44] + s[8];
1218 gout[n*48+47] += + s[27] - s[9] + s[31] - s[13] + s[35] - s[17];
1219 }}}
int2e_giao_sa10sp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1220 void int2e_giao_sa10sp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1221 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
1222 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1223 }
int2e_giao_sa10sp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1224 CACHE_SIZE_T int2e_giao_sa10sp1spsp2_cart(double *out, FINT *dims, FINT *shls,
1225 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1226 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
1227 CINTEnvVars envs;
1228 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1229 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1spsp2;
1230 envs.common_factor *= 0.5;
1231 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1232 } // int2e_giao_sa10sp1spsp2_cart
int2e_giao_sa10sp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1233 CACHE_SIZE_T int2e_giao_sa10sp1spsp2_sph(double *out, FINT *dims, FINT *shls,
1234 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1235 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
1236 CINTEnvVars envs;
1237 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1238 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1spsp2;
1239 envs.common_factor *= 0.5;
1240 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1241 } // int2e_giao_sa10sp1spsp2_sph
int2e_giao_sa10sp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1242 CACHE_SIZE_T int2e_giao_sa10sp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
1243 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1244 FINT ng[] = {1, 1, 1, 1, 4, 4, 4, 3};
1245 CINTEnvVars envs;
1246 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1247 envs.f_gout = &CINTgout2e_int2e_giao_sa10sp1spsp2;
1248 envs.common_factor *= 0.5;
1249 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_si_2e2);
1250 } // int2e_giao_sa10sp1spsp2_spinor
1251 ALL_CINT(int2e_giao_sa10sp1spsp2)
ALL_CINT_FORTRAN_(int2e_giao_sa10sp1spsp2)1252 ALL_CINT_FORTRAN_(int2e_giao_sa10sp1spsp2)
1253 /* <k G i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
1254  * = (G i j|R12 |k l) */
1255 void CINTgout2e_int2e_g1(double *gout,
1256 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1257 FINT nf = envs->nf;
1258 FINT nrys_roots = envs->nrys_roots;
1259 FINT ix, iy, iz, i, n;
1260 double *g0 = g;
1261 double *g1 = g0 + envs->g_size * 3;
1262 double rirj[3];
1263 rirj[0] = envs->ri[0] - envs->rj[0];
1264 rirj[1] = envs->ri[1] - envs->rj[1];
1265 rirj[2] = envs->ri[2] - envs->rj[2];
1266 double c[3];
1267 c[0] = 1 * rirj[0];
1268 c[1] = 1 * rirj[1];
1269 c[2] = 1 * rirj[2];
1270 G2E_R0I(g1, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1271 double s[3];
1272 for (n = 0; n < nf; n++) {
1273 ix = idx[0+n*3];
1274 iy = idx[1+n*3];
1275 iz = idx[2+n*3];
1276 switch (nrys_roots) {
1277 case 1:
1278 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
1279 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
1280 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
1281 break;
1282 case 2:
1283 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1];
1284 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1];
1285 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1];
1286 break;
1287 case 3:
1288 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2];
1289 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2];
1290 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2];
1291 break;
1292 case 4:
1293 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3];
1294 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3];
1295 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3];
1296 break;
1297 default:
1298 for (i = 0; i < 3; i++) { s[i] = 0; }
1299 for (i = 0; i < nrys_roots; i++) {
1300 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
1301 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
1302 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
1303 } break;}
1304 if (gout_empty) {
1305 gout[n*3+0] = + c[1]*s[2] - c[2]*s[1];
1306 gout[n*3+1] = + c[2]*s[0] - c[0]*s[2];
1307 gout[n*3+2] = + c[0]*s[1] - c[1]*s[0];
1308 } else {
1309 gout[n*3+0] += + c[1]*s[2] - c[2]*s[1];
1310 gout[n*3+1] += + c[2]*s[0] - c[0]*s[2];
1311 gout[n*3+2] += + c[0]*s[1] - c[1]*s[0];
1312 }}}
int2e_g1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1313 void int2e_g1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1314 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
1315 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1316 }
int2e_g1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1317 CACHE_SIZE_T int2e_g1_cart(double *out, FINT *dims, FINT *shls,
1318 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1319 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
1320 CINTEnvVars envs;
1321 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1322 envs.f_gout = &CINTgout2e_int2e_g1;
1323 envs.common_factor *= 0.5;
1324 FINT i, nout;
1325 FINT counts[4];
1326 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1327 counts[0] = envs.nfi * envs.x_ctr[0];
1328 counts[1] = envs.nfj * envs.x_ctr[1];
1329 counts[2] = envs.nfk * envs.x_ctr[2];
1330 counts[3] = envs.nfl * envs.x_ctr[3];
1331 if (dims == NULL) { dims = counts; }
1332 nout = dims[0] * dims[1] * dims[2] * dims[3];
1333 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1334 c2s_dset0(out+nout*i, dims, counts); }
1335 return 0; }
1336 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1337 } // int2e_g1_cart
int2e_g1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1338 CACHE_SIZE_T int2e_g1_sph(double *out, FINT *dims, FINT *shls,
1339 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1340 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
1341 CINTEnvVars envs;
1342 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1343 envs.f_gout = &CINTgout2e_int2e_g1;
1344 envs.common_factor *= 0.5;
1345 FINT i, nout;
1346 FINT counts[4];
1347 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1348 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
1349 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
1350 counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
1351 counts[3] = (envs.l_l*2+1) * envs.x_ctr[3];
1352 if (dims == NULL) { dims = counts; }
1353 nout = dims[0] * dims[1] * dims[2] * dims[3];
1354 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1355 c2s_dset0(out+nout*i, dims, counts); }
1356 return 0; }
1357 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1358 } // int2e_g1_sph
int2e_g1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1359 CACHE_SIZE_T int2e_g1_spinor(double complex *out, FINT *dims, FINT *shls,
1360 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1361 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
1362 CINTEnvVars envs;
1363 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1364 envs.f_gout = &CINTgout2e_int2e_g1;
1365 envs.common_factor *= 0.5;
1366 FINT i, nout;
1367 FINT counts[4];
1368 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1369 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
1370 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
1371 counts[2] = CINTcgto_spinor(envs.shls[2], envs.bas);
1372 counts[3] = CINTcgto_spinor(envs.shls[3], envs.bas);
1373 if (dims == NULL) { dims = counts; }
1374 nout = dims[0] * dims[1] * dims[2] * dims[3];
1375 for (i = 0; i < envs.ncomp_tensor; i++) {
1376 c2s_zset0(out+nout*i, dims, counts); }
1377 return 0; }
1378 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1i, &c2s_sf_2e2);
1379 } // int2e_g1_spinor
1380 ALL_CINT(int2e_g1)
ALL_CINT_FORTRAN_(int2e_g1)1381 ALL_CINT_FORTRAN_(int2e_g1)
1382 /* <k G SIGMA DOT P i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
1383  * = (G SIGMA DOT P i SIGMA DOT P j|R12 |k l) */
1384 void CINTgout2e_int2e_spgsp1(double *gout,
1385 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1386 FINT nf = envs->nf;
1387 FINT nrys_roots = envs->nrys_roots;
1388 FINT ix, iy, iz, i, n;
1389 double *g0 = g;
1390 double *g1 = g0 + envs->g_size * 3;
1391 double *g2 = g1 + envs->g_size * 3;
1392 double *g3 = g2 + envs->g_size * 3;
1393 double *g4 = g3 + envs->g_size * 3;
1394 double *g5 = g4 + envs->g_size * 3;
1395 double *g6 = g5 + envs->g_size * 3;
1396 double *g7 = g6 + envs->g_size * 3;
1397 double rirj[3];
1398 rirj[0] = envs->ri[0] - envs->rj[0];
1399 rirj[1] = envs->ri[1] - envs->rj[1];
1400 rirj[2] = envs->ri[2] - envs->rj[2];
1401 double c[3];
1402 c[0] = 1 * rirj[0];
1403 c[1] = 1 * rirj[1];
1404 c[2] = 1 * rirj[2];
1405 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1406 G2E_R0I(g2, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1407 G2E_R0I(g3, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1408 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1409 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1410 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1411 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1412 double s[27];
1413 for (n = 0; n < nf; n++) {
1414 ix = idx[0+n*3];
1415 iy = idx[1+n*3];
1416 iz = idx[2+n*3];
1417 for (i = 0; i < 27; i++) { s[i] = 0; }
1418 for (i = 0; i < nrys_roots; i++) {
1419 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
1420 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
1421 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
1422 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
1423 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
1424 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
1425 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
1426 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
1427 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
1428 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
1429 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
1430 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
1431 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
1432 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
1433 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
1434 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
1435 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
1436 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
1437 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
1438 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
1439 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
1440 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
1441 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
1442 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
1443 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
1444 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
1445 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
1446 }
1447 if (gout_empty) {
1448 gout[n*12+0] = + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1449 gout[n*12+1] = + c[1]*s[24] - c[2]*s[21] - c[1]*s[8] + c[2]*s[5];
1450 gout[n*12+2] = + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
1451 gout[n*12+3] = + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1452 gout[n*12+4] = + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
1453 gout[n*12+5] = + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1454 gout[n*12+6] = + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
1455 gout[n*12+7] = + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1456 gout[n*12+8] = + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
1457 gout[n*12+9] = + c[0]*s[21] - c[1]*s[18] - c[0]*s[5] + c[1]*s[2];
1458 gout[n*12+10] = + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1459 gout[n*12+11] = + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1460 } else {
1461 gout[n*12+0] += + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1462 gout[n*12+1] += + c[1]*s[24] - c[2]*s[21] - c[1]*s[8] + c[2]*s[5];
1463 gout[n*12+2] += + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
1464 gout[n*12+3] += + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1465 gout[n*12+4] += + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
1466 gout[n*12+5] += + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1467 gout[n*12+6] += + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
1468 gout[n*12+7] += + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1469 gout[n*12+8] += + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
1470 gout[n*12+9] += + c[0]*s[21] - c[1]*s[18] - c[0]*s[5] + c[1]*s[2];
1471 gout[n*12+10] += + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1472 gout[n*12+11] += + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1473 }}}
int2e_spgsp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1474 void int2e_spgsp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1475 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1476 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1477 }
int2e_spgsp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1478 CACHE_SIZE_T int2e_spgsp1_cart(double *out, FINT *dims, FINT *shls,
1479 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1480 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1481 CINTEnvVars envs;
1482 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1483 envs.f_gout = &CINTgout2e_int2e_spgsp1;
1484 envs.common_factor *= 0.5;
1485 FINT i, nout;
1486 FINT counts[4];
1487 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1488 counts[0] = envs.nfi * envs.x_ctr[0];
1489 counts[1] = envs.nfj * envs.x_ctr[1];
1490 counts[2] = envs.nfk * envs.x_ctr[2];
1491 counts[3] = envs.nfl * envs.x_ctr[3];
1492 if (dims == NULL) { dims = counts; }
1493 nout = dims[0] * dims[1] * dims[2] * dims[3];
1494 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1495 c2s_dset0(out+nout*i, dims, counts); }
1496 return 0; }
1497 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1498 } // int2e_spgsp1_cart
int2e_spgsp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1499 CACHE_SIZE_T int2e_spgsp1_sph(double *out, FINT *dims, FINT *shls,
1500 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1501 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1502 CINTEnvVars envs;
1503 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1504 envs.f_gout = &CINTgout2e_int2e_spgsp1;
1505 envs.common_factor *= 0.5;
1506 FINT i, nout;
1507 FINT counts[4];
1508 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1509 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
1510 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
1511 counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
1512 counts[3] = (envs.l_l*2+1) * envs.x_ctr[3];
1513 if (dims == NULL) { dims = counts; }
1514 nout = dims[0] * dims[1] * dims[2] * dims[3];
1515 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1516 c2s_dset0(out+nout*i, dims, counts); }
1517 return 0; }
1518 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1519 } // int2e_spgsp1_sph
int2e_spgsp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1520 CACHE_SIZE_T int2e_spgsp1_spinor(double complex *out, FINT *dims, FINT *shls,
1521 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1522 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1523 CINTEnvVars envs;
1524 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1525 envs.f_gout = &CINTgout2e_int2e_spgsp1;
1526 envs.common_factor *= 0.5;
1527 FINT i, nout;
1528 FINT counts[4];
1529 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1530 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
1531 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
1532 counts[2] = CINTcgto_spinor(envs.shls[2], envs.bas);
1533 counts[3] = CINTcgto_spinor(envs.shls[3], envs.bas);
1534 if (dims == NULL) { dims = counts; }
1535 nout = dims[0] * dims[1] * dims[2] * dims[3];
1536 for (i = 0; i < envs.ncomp_tensor; i++) {
1537 c2s_zset0(out+nout*i, dims, counts); }
1538 return 0; }
1539 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_sf_2e2);
1540 } // int2e_spgsp1_spinor
1541 ALL_CINT(int2e_spgsp1)
ALL_CINT_FORTRAN_(int2e_spgsp1)1542 ALL_CINT_FORTRAN_(int2e_spgsp1)
1543 /* <SIGMA DOT P k G i|R12 |j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
1544  * = (G i j|R12 |SIGMA DOT P k SIGMA DOT P l) */
1545 void CINTgout2e_int2e_g1spsp2(double *gout,
1546 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1547 FINT nf = envs->nf;
1548 FINT nrys_roots = envs->nrys_roots;
1549 FINT ix, iy, iz, i, n;
1550 double *g0 = g;
1551 double *g1 = g0 + envs->g_size * 3;
1552 double *g2 = g1 + envs->g_size * 3;
1553 double *g3 = g2 + envs->g_size * 3;
1554 double *g4 = g3 + envs->g_size * 3;
1555 double *g5 = g4 + envs->g_size * 3;
1556 double *g6 = g5 + envs->g_size * 3;
1557 double *g7 = g6 + envs->g_size * 3;
1558 double rirj[3];
1559 rirj[0] = envs->ri[0] - envs->rj[0];
1560 rirj[1] = envs->ri[1] - envs->rj[1];
1561 rirj[2] = envs->ri[2] - envs->rj[2];
1562 double c[3];
1563 c[0] = 1 * rirj[0];
1564 c[1] = 1 * rirj[1];
1565 c[2] = 1 * rirj[2];
1566 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0);
1567 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
1568 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
1569 G2E_R0I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1570 G2E_R0I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1571 G2E_R0I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1572 G2E_R0I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1573 double s[27];
1574 for (n = 0; n < nf; n++) {
1575 ix = idx[0+n*3];
1576 iy = idx[1+n*3];
1577 iz = idx[2+n*3];
1578 for (i = 0; i < 27; i++) { s[i] = 0; }
1579 for (i = 0; i < nrys_roots; i++) {
1580 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
1581 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
1582 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
1583 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
1584 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
1585 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
1586 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
1587 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
1588 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
1589 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
1590 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
1591 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
1592 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
1593 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
1594 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
1595 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
1596 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
1597 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
1598 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
1599 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
1600 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
1601 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
1602 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
1603 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
1604 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
1605 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
1606 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
1607 }
1608 if (gout_empty) {
1609 gout[n*12+0] = + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16];
1610 gout[n*12+1] = + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11];
1611 gout[n*12+2] = + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12];
1612 gout[n*12+3] = + c[1]*s[18] - c[2]*s[9] + c[1]*s[22] - c[2]*s[13] + c[1]*s[26] - c[2]*s[17];
1613 gout[n*12+4] = + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25];
1614 gout[n*12+5] = + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20];
1615 gout[n*12+6] = + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21];
1616 gout[n*12+7] = + c[2]*s[0] - c[0]*s[18] + c[2]*s[4] - c[0]*s[22] + c[2]*s[8] - c[0]*s[26];
1617 gout[n*12+8] = + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7];
1618 gout[n*12+9] = + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2];
1619 gout[n*12+10] = + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3];
1620 gout[n*12+11] = + c[0]*s[9] - c[1]*s[0] + c[0]*s[13] - c[1]*s[4] + c[0]*s[17] - c[1]*s[8];
1621 } else {
1622 gout[n*12+0] += + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16];
1623 gout[n*12+1] += + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11];
1624 gout[n*12+2] += + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12];
1625 gout[n*12+3] += + c[1]*s[18] - c[2]*s[9] + c[1]*s[22] - c[2]*s[13] + c[1]*s[26] - c[2]*s[17];
1626 gout[n*12+4] += + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25];
1627 gout[n*12+5] += + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20];
1628 gout[n*12+6] += + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21];
1629 gout[n*12+7] += + c[2]*s[0] - c[0]*s[18] + c[2]*s[4] - c[0]*s[22] + c[2]*s[8] - c[0]*s[26];
1630 gout[n*12+8] += + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7];
1631 gout[n*12+9] += + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2];
1632 gout[n*12+10] += + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3];
1633 gout[n*12+11] += + c[0]*s[9] - c[1]*s[0] + c[0]*s[13] - c[1]*s[4] + c[0]*s[17] - c[1]*s[8];
1634 }}}
int2e_g1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1635 void int2e_g1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1636 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1637 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1638 }
int2e_g1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1639 CACHE_SIZE_T int2e_g1spsp2_cart(double *out, FINT *dims, FINT *shls,
1640 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1641 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1642 CINTEnvVars envs;
1643 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1644 envs.f_gout = &CINTgout2e_int2e_g1spsp2;
1645 envs.common_factor *= 0.5;
1646 FINT i, nout;
1647 FINT counts[4];
1648 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1649 counts[0] = envs.nfi * envs.x_ctr[0];
1650 counts[1] = envs.nfj * envs.x_ctr[1];
1651 counts[2] = envs.nfk * envs.x_ctr[2];
1652 counts[3] = envs.nfl * envs.x_ctr[3];
1653 if (dims == NULL) { dims = counts; }
1654 nout = dims[0] * dims[1] * dims[2] * dims[3];
1655 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1656 c2s_dset0(out+nout*i, dims, counts); }
1657 return 0; }
1658 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1659 } // int2e_g1spsp2_cart
int2e_g1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1660 CACHE_SIZE_T int2e_g1spsp2_sph(double *out, FINT *dims, FINT *shls,
1661 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1662 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1663 CINTEnvVars envs;
1664 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1665 envs.f_gout = &CINTgout2e_int2e_g1spsp2;
1666 envs.common_factor *= 0.5;
1667 FINT i, nout;
1668 FINT counts[4];
1669 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1670 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
1671 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
1672 counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
1673 counts[3] = (envs.l_l*2+1) * envs.x_ctr[3];
1674 if (dims == NULL) { dims = counts; }
1675 nout = dims[0] * dims[1] * dims[2] * dims[3];
1676 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
1677 c2s_dset0(out+nout*i, dims, counts); }
1678 return 0; }
1679 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1680 } // int2e_g1spsp2_sph
int2e_g1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1681 CACHE_SIZE_T int2e_g1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
1682 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1683 FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3};
1684 CINTEnvVars envs;
1685 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1686 envs.f_gout = &CINTgout2e_int2e_g1spsp2;
1687 envs.common_factor *= 0.5;
1688 FINT i, nout;
1689 FINT counts[4];
1690 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1691 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
1692 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
1693 counts[2] = CINTcgto_spinor(envs.shls[2], envs.bas);
1694 counts[3] = CINTcgto_spinor(envs.shls[3], envs.bas);
1695 if (dims == NULL) { dims = counts; }
1696 nout = dims[0] * dims[1] * dims[2] * dims[3];
1697 for (i = 0; i < envs.ncomp_tensor; i++) {
1698 c2s_zset0(out+nout*i, dims, counts); }
1699 return 0; }
1700 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1i, &c2s_si_2e2);
1701 } // int2e_g1spsp2_spinor
1702 ALL_CINT(int2e_g1spsp2)
ALL_CINT_FORTRAN_(int2e_g1spsp2)1703 ALL_CINT_FORTRAN_(int2e_g1spsp2)
1704 /* <SIGMA DOT P k G SIGMA DOT P i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
1705  * = (G SIGMA DOT P i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
1706 void CINTgout2e_int2e_spgsp1spsp2(double *gout,
1707 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1708 FINT nf = envs->nf;
1709 FINT nrys_roots = envs->nrys_roots;
1710 FINT ix, iy, iz, i, n;
1711 double *g0 = g;
1712 double *g1 = g0 + envs->g_size * 3;
1713 double *g2 = g1 + envs->g_size * 3;
1714 double *g3 = g2 + envs->g_size * 3;
1715 double *g4 = g3 + envs->g_size * 3;
1716 double *g5 = g4 + envs->g_size * 3;
1717 double *g6 = g5 + envs->g_size * 3;
1718 double *g7 = g6 + envs->g_size * 3;
1719 double *g8 = g7 + envs->g_size * 3;
1720 double *g9 = g8 + envs->g_size * 3;
1721 double *g10 = g9 + envs->g_size * 3;
1722 double *g11 = g10 + envs->g_size * 3;
1723 double *g12 = g11 + envs->g_size * 3;
1724 double *g13 = g12 + envs->g_size * 3;
1725 double *g14 = g13 + envs->g_size * 3;
1726 double *g15 = g14 + envs->g_size * 3;
1727 double *g16 = g15 + envs->g_size * 3;
1728 double *g17 = g16 + envs->g_size * 3;
1729 double *g18 = g17 + envs->g_size * 3;
1730 double *g19 = g18 + envs->g_size * 3;
1731 double *g20 = g19 + envs->g_size * 3;
1732 double *g21 = g20 + envs->g_size * 3;
1733 double *g22 = g21 + envs->g_size * 3;
1734 double *g23 = g22 + envs->g_size * 3;
1735 double *g24 = g23 + envs->g_size * 3;
1736 double *g25 = g24 + envs->g_size * 3;
1737 double *g26 = g25 + envs->g_size * 3;
1738 double *g27 = g26 + envs->g_size * 3;
1739 double *g28 = g27 + envs->g_size * 3;
1740 double *g29 = g28 + envs->g_size * 3;
1741 double *g30 = g29 + envs->g_size * 3;
1742 double *g31 = g30 + envs->g_size * 3;
1743 double rirj[3];
1744 rirj[0] = envs->ri[0] - envs->rj[0];
1745 rirj[1] = envs->ri[1] - envs->rj[1];
1746 rirj[2] = envs->ri[2] - envs->rj[2];
1747 double c[3];
1748 c[0] = 1 * rirj[0];
1749 c[1] = 1 * rirj[1];
1750 c[2] = 1 * rirj[2];
1751 G2E_D_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0);
1752 G2E_D_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
1753 G2E_D_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
1754 G2E_D_J(g4, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1755 G2E_D_J(g5, g1, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1756 G2E_D_J(g6, g2, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1757 G2E_D_J(g7, g3, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l);
1758 G2E_R0I(g8, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1759 G2E_R0I(g9, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1760 G2E_R0I(g10, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1761 G2E_R0I(g11, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1762 G2E_R0I(g12, g4, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1763 G2E_R0I(g13, g5, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1764 G2E_R0I(g14, g6, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1765 G2E_R0I(g15, g7, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l);
1766 G2E_D_I(g16, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1767 G2E_D_I(g17, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1768 G2E_D_I(g18, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1769 G2E_D_I(g19, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1770 G2E_D_I(g20, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1771 G2E_D_I(g21, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1772 G2E_D_I(g22, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1773 G2E_D_I(g23, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1774 G2E_D_I(g24, g8, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1775 G2E_D_I(g25, g9, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1776 G2E_D_I(g26, g10, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1777 G2E_D_I(g27, g11, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1778 G2E_D_I(g28, g12, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1779 G2E_D_I(g29, g13, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1780 G2E_D_I(g30, g14, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1781 G2E_D_I(g31, g15, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
1782 double s[243];
1783 for (n = 0; n < nf; n++) {
1784 ix = idx[0+n*3];
1785 iy = idx[1+n*3];
1786 iz = idx[2+n*3];
1787 for (i = 0; i < 243; i++) { s[i] = 0; }
1788 for (i = 0; i < nrys_roots; i++) {
1789 s[0] += g31[ix+i] * g0[iy+i] * g0[iz+i];
1790 s[1] += g30[ix+i] * g1[iy+i] * g0[iz+i];
1791 s[2] += g30[ix+i] * g0[iy+i] * g1[iz+i];
1792 s[3] += g29[ix+i] * g2[iy+i] * g0[iz+i];
1793 s[4] += g28[ix+i] * g3[iy+i] * g0[iz+i];
1794 s[5] += g28[ix+i] * g2[iy+i] * g1[iz+i];
1795 s[6] += g29[ix+i] * g0[iy+i] * g2[iz+i];
1796 s[7] += g28[ix+i] * g1[iy+i] * g2[iz+i];
1797 s[8] += g28[ix+i] * g0[iy+i] * g3[iz+i];
1798 s[9] += g27[ix+i] * g4[iy+i] * g0[iz+i];
1799 s[10] += g26[ix+i] * g5[iy+i] * g0[iz+i];
1800 s[11] += g26[ix+i] * g4[iy+i] * g1[iz+i];
1801 s[12] += g25[ix+i] * g6[iy+i] * g0[iz+i];
1802 s[13] += g24[ix+i] * g7[iy+i] * g0[iz+i];
1803 s[14] += g24[ix+i] * g6[iy+i] * g1[iz+i];
1804 s[15] += g25[ix+i] * g4[iy+i] * g2[iz+i];
1805 s[16] += g24[ix+i] * g5[iy+i] * g2[iz+i];
1806 s[17] += g24[ix+i] * g4[iy+i] * g3[iz+i];
1807 s[18] += g27[ix+i] * g0[iy+i] * g4[iz+i];
1808 s[19] += g26[ix+i] * g1[iy+i] * g4[iz+i];
1809 s[20] += g26[ix+i] * g0[iy+i] * g5[iz+i];
1810 s[21] += g25[ix+i] * g2[iy+i] * g4[iz+i];
1811 s[22] += g24[ix+i] * g3[iy+i] * g4[iz+i];
1812 s[23] += g24[ix+i] * g2[iy+i] * g5[iz+i];
1813 s[24] += g25[ix+i] * g0[iy+i] * g6[iz+i];
1814 s[25] += g24[ix+i] * g1[iy+i] * g6[iz+i];
1815 s[26] += g24[ix+i] * g0[iy+i] * g7[iz+i];
1816 s[27] += g23[ix+i] * g8[iy+i] * g0[iz+i];
1817 s[28] += g22[ix+i] * g9[iy+i] * g0[iz+i];
1818 s[29] += g22[ix+i] * g8[iy+i] * g1[iz+i];
1819 s[30] += g21[ix+i] * g10[iy+i] * g0[iz+i];
1820 s[31] += g20[ix+i] * g11[iy+i] * g0[iz+i];
1821 s[32] += g20[ix+i] * g10[iy+i] * g1[iz+i];
1822 s[33] += g21[ix+i] * g8[iy+i] * g2[iz+i];
1823 s[34] += g20[ix+i] * g9[iy+i] * g2[iz+i];
1824 s[35] += g20[ix+i] * g8[iy+i] * g3[iz+i];
1825 s[36] += g19[ix+i] * g12[iy+i] * g0[iz+i];
1826 s[37] += g18[ix+i] * g13[iy+i] * g0[iz+i];
1827 s[38] += g18[ix+i] * g12[iy+i] * g1[iz+i];
1828 s[39] += g17[ix+i] * g14[iy+i] * g0[iz+i];
1829 s[40] += g16[ix+i] * g15[iy+i] * g0[iz+i];
1830 s[41] += g16[ix+i] * g14[iy+i] * g1[iz+i];
1831 s[42] += g17[ix+i] * g12[iy+i] * g2[iz+i];
1832 s[43] += g16[ix+i] * g13[iy+i] * g2[iz+i];
1833 s[44] += g16[ix+i] * g12[iy+i] * g3[iz+i];
1834 s[45] += g19[ix+i] * g8[iy+i] * g4[iz+i];
1835 s[46] += g18[ix+i] * g9[iy+i] * g4[iz+i];
1836 s[47] += g18[ix+i] * g8[iy+i] * g5[iz+i];
1837 s[48] += g17[ix+i] * g10[iy+i] * g4[iz+i];
1838 s[49] += g16[ix+i] * g11[iy+i] * g4[iz+i];
1839 s[50] += g16[ix+i] * g10[iy+i] * g5[iz+i];
1840 s[51] += g17[ix+i] * g8[iy+i] * g6[iz+i];
1841 s[52] += g16[ix+i] * g9[iy+i] * g6[iz+i];
1842 s[53] += g16[ix+i] * g8[iy+i] * g7[iz+i];
1843 s[54] += g23[ix+i] * g0[iy+i] * g8[iz+i];
1844 s[55] += g22[ix+i] * g1[iy+i] * g8[iz+i];
1845 s[56] += g22[ix+i] * g0[iy+i] * g9[iz+i];
1846 s[57] += g21[ix+i] * g2[iy+i] * g8[iz+i];
1847 s[58] += g20[ix+i] * g3[iy+i] * g8[iz+i];
1848 s[59] += g20[ix+i] * g2[iy+i] * g9[iz+i];
1849 s[60] += g21[ix+i] * g0[iy+i] * g10[iz+i];
1850 s[61] += g20[ix+i] * g1[iy+i] * g10[iz+i];
1851 s[62] += g20[ix+i] * g0[iy+i] * g11[iz+i];
1852 s[63] += g19[ix+i] * g4[iy+i] * g8[iz+i];
1853 s[64] += g18[ix+i] * g5[iy+i] * g8[iz+i];
1854 s[65] += g18[ix+i] * g4[iy+i] * g9[iz+i];
1855 s[66] += g17[ix+i] * g6[iy+i] * g8[iz+i];
1856 s[67] += g16[ix+i] * g7[iy+i] * g8[iz+i];
1857 s[68] += g16[ix+i] * g6[iy+i] * g9[iz+i];
1858 s[69] += g17[ix+i] * g4[iy+i] * g10[iz+i];
1859 s[70] += g16[ix+i] * g5[iy+i] * g10[iz+i];
1860 s[71] += g16[ix+i] * g4[iy+i] * g11[iz+i];
1861 s[72] += g19[ix+i] * g0[iy+i] * g12[iz+i];
1862 s[73] += g18[ix+i] * g1[iy+i] * g12[iz+i];
1863 s[74] += g18[ix+i] * g0[iy+i] * g13[iz+i];
1864 s[75] += g17[ix+i] * g2[iy+i] * g12[iz+i];
1865 s[76] += g16[ix+i] * g3[iy+i] * g12[iz+i];
1866 s[77] += g16[ix+i] * g2[iy+i] * g13[iz+i];
1867 s[78] += g17[ix+i] * g0[iy+i] * g14[iz+i];
1868 s[79] += g16[ix+i] * g1[iy+i] * g14[iz+i];
1869 s[80] += g16[ix+i] * g0[iy+i] * g15[iz+i];
1870 s[81] += g15[ix+i] * g16[iy+i] * g0[iz+i];
1871 s[82] += g14[ix+i] * g17[iy+i] * g0[iz+i];
1872 s[83] += g14[ix+i] * g16[iy+i] * g1[iz+i];
1873 s[84] += g13[ix+i] * g18[iy+i] * g0[iz+i];
1874 s[85] += g12[ix+i] * g19[iy+i] * g0[iz+i];
1875 s[86] += g12[ix+i] * g18[iy+i] * g1[iz+i];
1876 s[87] += g13[ix+i] * g16[iy+i] * g2[iz+i];
1877 s[88] += g12[ix+i] * g17[iy+i] * g2[iz+i];
1878 s[89] += g12[ix+i] * g16[iy+i] * g3[iz+i];
1879 s[90] += g11[ix+i] * g20[iy+i] * g0[iz+i];
1880 s[91] += g10[ix+i] * g21[iy+i] * g0[iz+i];
1881 s[92] += g10[ix+i] * g20[iy+i] * g1[iz+i];
1882 s[93] += g9[ix+i] * g22[iy+i] * g0[iz+i];
1883 s[94] += g8[ix+i] * g23[iy+i] * g0[iz+i];
1884 s[95] += g8[ix+i] * g22[iy+i] * g1[iz+i];
1885 s[96] += g9[ix+i] * g20[iy+i] * g2[iz+i];
1886 s[97] += g8[ix+i] * g21[iy+i] * g2[iz+i];
1887 s[98] += g8[ix+i] * g20[iy+i] * g3[iz+i];
1888 s[99] += g11[ix+i] * g16[iy+i] * g4[iz+i];
1889 s[100] += g10[ix+i] * g17[iy+i] * g4[iz+i];
1890 s[101] += g10[ix+i] * g16[iy+i] * g5[iz+i];
1891 s[102] += g9[ix+i] * g18[iy+i] * g4[iz+i];
1892 s[103] += g8[ix+i] * g19[iy+i] * g4[iz+i];
1893 s[104] += g8[ix+i] * g18[iy+i] * g5[iz+i];
1894 s[105] += g9[ix+i] * g16[iy+i] * g6[iz+i];
1895 s[106] += g8[ix+i] * g17[iy+i] * g6[iz+i];
1896 s[107] += g8[ix+i] * g16[iy+i] * g7[iz+i];
1897 s[108] += g7[ix+i] * g24[iy+i] * g0[iz+i];
1898 s[109] += g6[ix+i] * g25[iy+i] * g0[iz+i];
1899 s[110] += g6[ix+i] * g24[iy+i] * g1[iz+i];
1900 s[111] += g5[ix+i] * g26[iy+i] * g0[iz+i];
1901 s[112] += g4[ix+i] * g27[iy+i] * g0[iz+i];
1902 s[113] += g4[ix+i] * g26[iy+i] * g1[iz+i];
1903 s[114] += g5[ix+i] * g24[iy+i] * g2[iz+i];
1904 s[115] += g4[ix+i] * g25[iy+i] * g2[iz+i];
1905 s[116] += g4[ix+i] * g24[iy+i] * g3[iz+i];
1906 s[117] += g3[ix+i] * g28[iy+i] * g0[iz+i];
1907 s[118] += g2[ix+i] * g29[iy+i] * g0[iz+i];
1908 s[119] += g2[ix+i] * g28[iy+i] * g1[iz+i];
1909 s[120] += g1[ix+i] * g30[iy+i] * g0[iz+i];
1910 s[121] += g0[ix+i] * g31[iy+i] * g0[iz+i];
1911 s[122] += g0[ix+i] * g30[iy+i] * g1[iz+i];
1912 s[123] += g1[ix+i] * g28[iy+i] * g2[iz+i];
1913 s[124] += g0[ix+i] * g29[iy+i] * g2[iz+i];
1914 s[125] += g0[ix+i] * g28[iy+i] * g3[iz+i];
1915 s[126] += g3[ix+i] * g24[iy+i] * g4[iz+i];
1916 s[127] += g2[ix+i] * g25[iy+i] * g4[iz+i];
1917 s[128] += g2[ix+i] * g24[iy+i] * g5[iz+i];
1918 s[129] += g1[ix+i] * g26[iy+i] * g4[iz+i];
1919 s[130] += g0[ix+i] * g27[iy+i] * g4[iz+i];
1920 s[131] += g0[ix+i] * g26[iy+i] * g5[iz+i];
1921 s[132] += g1[ix+i] * g24[iy+i] * g6[iz+i];
1922 s[133] += g0[ix+i] * g25[iy+i] * g6[iz+i];
1923 s[134] += g0[ix+i] * g24[iy+i] * g7[iz+i];
1924 s[135] += g7[ix+i] * g16[iy+i] * g8[iz+i];
1925 s[136] += g6[ix+i] * g17[iy+i] * g8[iz+i];
1926 s[137] += g6[ix+i] * g16[iy+i] * g9[iz+i];
1927 s[138] += g5[ix+i] * g18[iy+i] * g8[iz+i];
1928 s[139] += g4[ix+i] * g19[iy+i] * g8[iz+i];
1929 s[140] += g4[ix+i] * g18[iy+i] * g9[iz+i];
1930 s[141] += g5[ix+i] * g16[iy+i] * g10[iz+i];
1931 s[142] += g4[ix+i] * g17[iy+i] * g10[iz+i];
1932 s[143] += g4[ix+i] * g16[iy+i] * g11[iz+i];
1933 s[144] += g3[ix+i] * g20[iy+i] * g8[iz+i];
1934 s[145] += g2[ix+i] * g21[iy+i] * g8[iz+i];
1935 s[146] += g2[ix+i] * g20[iy+i] * g9[iz+i];
1936 s[147] += g1[ix+i] * g22[iy+i] * g8[iz+i];
1937 s[148] += g0[ix+i] * g23[iy+i] * g8[iz+i];
1938 s[149] += g0[ix+i] * g22[iy+i] * g9[iz+i];
1939 s[150] += g1[ix+i] * g20[iy+i] * g10[iz+i];
1940 s[151] += g0[ix+i] * g21[iy+i] * g10[iz+i];
1941 s[152] += g0[ix+i] * g20[iy+i] * g11[iz+i];
1942 s[153] += g3[ix+i] * g16[iy+i] * g12[iz+i];
1943 s[154] += g2[ix+i] * g17[iy+i] * g12[iz+i];
1944 s[155] += g2[ix+i] * g16[iy+i] * g13[iz+i];
1945 s[156] += g1[ix+i] * g18[iy+i] * g12[iz+i];
1946 s[157] += g0[ix+i] * g19[iy+i] * g12[iz+i];
1947 s[158] += g0[ix+i] * g18[iy+i] * g13[iz+i];
1948 s[159] += g1[ix+i] * g16[iy+i] * g14[iz+i];
1949 s[160] += g0[ix+i] * g17[iy+i] * g14[iz+i];
1950 s[161] += g0[ix+i] * g16[iy+i] * g15[iz+i];
1951 s[162] += g15[ix+i] * g0[iy+i] * g16[iz+i];
1952 s[163] += g14[ix+i] * g1[iy+i] * g16[iz+i];
1953 s[164] += g14[ix+i] * g0[iy+i] * g17[iz+i];
1954 s[165] += g13[ix+i] * g2[iy+i] * g16[iz+i];
1955 s[166] += g12[ix+i] * g3[iy+i] * g16[iz+i];
1956 s[167] += g12[ix+i] * g2[iy+i] * g17[iz+i];
1957 s[168] += g13[ix+i] * g0[iy+i] * g18[iz+i];
1958 s[169] += g12[ix+i] * g1[iy+i] * g18[iz+i];
1959 s[170] += g12[ix+i] * g0[iy+i] * g19[iz+i];
1960 s[171] += g11[ix+i] * g4[iy+i] * g16[iz+i];
1961 s[172] += g10[ix+i] * g5[iy+i] * g16[iz+i];
1962 s[173] += g10[ix+i] * g4[iy+i] * g17[iz+i];
1963 s[174] += g9[ix+i] * g6[iy+i] * g16[iz+i];
1964 s[175] += g8[ix+i] * g7[iy+i] * g16[iz+i];
1965 s[176] += g8[ix+i] * g6[iy+i] * g17[iz+i];
1966 s[177] += g9[ix+i] * g4[iy+i] * g18[iz+i];
1967 s[178] += g8[ix+i] * g5[iy+i] * g18[iz+i];
1968 s[179] += g8[ix+i] * g4[iy+i] * g19[iz+i];
1969 s[180] += g11[ix+i] * g0[iy+i] * g20[iz+i];
1970 s[181] += g10[ix+i] * g1[iy+i] * g20[iz+i];
1971 s[182] += g10[ix+i] * g0[iy+i] * g21[iz+i];
1972 s[183] += g9[ix+i] * g2[iy+i] * g20[iz+i];
1973 s[184] += g8[ix+i] * g3[iy+i] * g20[iz+i];
1974 s[185] += g8[ix+i] * g2[iy+i] * g21[iz+i];
1975 s[186] += g9[ix+i] * g0[iy+i] * g22[iz+i];
1976 s[187] += g8[ix+i] * g1[iy+i] * g22[iz+i];
1977 s[188] += g8[ix+i] * g0[iy+i] * g23[iz+i];
1978 s[189] += g7[ix+i] * g8[iy+i] * g16[iz+i];
1979 s[190] += g6[ix+i] * g9[iy+i] * g16[iz+i];
1980 s[191] += g6[ix+i] * g8[iy+i] * g17[iz+i];
1981 s[192] += g5[ix+i] * g10[iy+i] * g16[iz+i];
1982 s[193] += g4[ix+i] * g11[iy+i] * g16[iz+i];
1983 s[194] += g4[ix+i] * g10[iy+i] * g17[iz+i];
1984 s[195] += g5[ix+i] * g8[iy+i] * g18[iz+i];
1985 s[196] += g4[ix+i] * g9[iy+i] * g18[iz+i];
1986 s[197] += g4[ix+i] * g8[iy+i] * g19[iz+i];
1987 s[198] += g3[ix+i] * g12[iy+i] * g16[iz+i];
1988 s[199] += g2[ix+i] * g13[iy+i] * g16[iz+i];
1989 s[200] += g2[ix+i] * g12[iy+i] * g17[iz+i];
1990 s[201] += g1[ix+i] * g14[iy+i] * g16[iz+i];
1991 s[202] += g0[ix+i] * g15[iy+i] * g16[iz+i];
1992 s[203] += g0[ix+i] * g14[iy+i] * g17[iz+i];
1993 s[204] += g1[ix+i] * g12[iy+i] * g18[iz+i];
1994 s[205] += g0[ix+i] * g13[iy+i] * g18[iz+i];
1995 s[206] += g0[ix+i] * g12[iy+i] * g19[iz+i];
1996 s[207] += g3[ix+i] * g8[iy+i] * g20[iz+i];
1997 s[208] += g2[ix+i] * g9[iy+i] * g20[iz+i];
1998 s[209] += g2[ix+i] * g8[iy+i] * g21[iz+i];
1999 s[210] += g1[ix+i] * g10[iy+i] * g20[iz+i];
2000 s[211] += g0[ix+i] * g11[iy+i] * g20[iz+i];
2001 s[212] += g0[ix+i] * g10[iy+i] * g21[iz+i];
2002 s[213] += g1[ix+i] * g8[iy+i] * g22[iz+i];
2003 s[214] += g0[ix+i] * g9[iy+i] * g22[iz+i];
2004 s[215] += g0[ix+i] * g8[iy+i] * g23[iz+i];
2005 s[216] += g7[ix+i] * g0[iy+i] * g24[iz+i];
2006 s[217] += g6[ix+i] * g1[iy+i] * g24[iz+i];
2007 s[218] += g6[ix+i] * g0[iy+i] * g25[iz+i];
2008 s[219] += g5[ix+i] * g2[iy+i] * g24[iz+i];
2009 s[220] += g4[ix+i] * g3[iy+i] * g24[iz+i];
2010 s[221] += g4[ix+i] * g2[iy+i] * g25[iz+i];
2011 s[222] += g5[ix+i] * g0[iy+i] * g26[iz+i];
2012 s[223] += g4[ix+i] * g1[iy+i] * g26[iz+i];
2013 s[224] += g4[ix+i] * g0[iy+i] * g27[iz+i];
2014 s[225] += g3[ix+i] * g4[iy+i] * g24[iz+i];
2015 s[226] += g2[ix+i] * g5[iy+i] * g24[iz+i];
2016 s[227] += g2[ix+i] * g4[iy+i] * g25[iz+i];
2017 s[228] += g1[ix+i] * g6[iy+i] * g24[iz+i];
2018 s[229] += g0[ix+i] * g7[iy+i] * g24[iz+i];
2019 s[230] += g0[ix+i] * g6[iy+i] * g25[iz+i];
2020 s[231] += g1[ix+i] * g4[iy+i] * g26[iz+i];
2021 s[232] += g0[ix+i] * g5[iy+i] * g26[iz+i];
2022 s[233] += g0[ix+i] * g4[iy+i] * g27[iz+i];
2023 s[234] += g3[ix+i] * g0[iy+i] * g28[iz+i];
2024 s[235] += g2[ix+i] * g1[iy+i] * g28[iz+i];
2025 s[236] += g2[ix+i] * g0[iy+i] * g29[iz+i];
2026 s[237] += g1[ix+i] * g2[iy+i] * g28[iz+i];
2027 s[238] += g0[ix+i] * g3[iy+i] * g28[iz+i];
2028 s[239] += g0[ix+i] * g2[iy+i] * g29[iz+i];
2029 s[240] += g1[ix+i] * g0[iy+i] * g30[iz+i];
2030 s[241] += g0[ix+i] * g1[iy+i] * g30[iz+i];
2031 s[242] += g0[ix+i] * g0[iy+i] * g31[iz+i];
2032 }
2033 if (gout_empty) {
2034 gout[n*48+0] = + c[1]*s[158] - c[2]*s[131] - c[1]*s[230] + c[2]*s[203] - c[1]*s[160] + c[2]*s[133] + c[1]*s[232] - c[2]*s[205];
2035 gout[n*48+1] = + c[1]*s[221] - c[2]*s[194] - c[1]*s[77] + c[2]*s[50] - c[1]*s[223] + c[2]*s[196] + c[1]*s[79] - c[2]*s[52];
2036 gout[n*48+2] = + c[1]*s[68] - c[2]*s[41] - c[1]*s[140] + c[2]*s[113] - c[1]*s[70] + c[2]*s[43] + c[1]*s[142] - c[2]*s[115];
2037 gout[n*48+3] = + c[1]*s[59] - c[2]*s[32] + c[1]*s[149] - c[2]*s[122] + c[1]*s[239] - c[2]*s[212] - c[1]*s[61] + c[2]*s[34] - c[1]*s[151] + c[2]*s[124] - c[1]*s[241] + c[2]*s[214];
2038 gout[n*48+4] = + c[1]*s[159] - c[2]*s[132] - c[1]*s[231] + c[2]*s[204] - c[1]*s[155] + c[2]*s[128] + c[1]*s[227] - c[2]*s[200];
2039 gout[n*48+5] = + c[1]*s[222] - c[2]*s[195] - c[1]*s[78] + c[2]*s[51] - c[1]*s[218] + c[2]*s[191] + c[1]*s[74] - c[2]*s[47];
2040 gout[n*48+6] = + c[1]*s[69] - c[2]*s[42] - c[1]*s[141] + c[2]*s[114] - c[1]*s[65] + c[2]*s[38] + c[1]*s[137] - c[2]*s[110];
2041 gout[n*48+7] = + c[1]*s[60] - c[2]*s[33] + c[1]*s[150] - c[2]*s[123] + c[1]*s[240] - c[2]*s[213] - c[1]*s[56] + c[2]*s[29] - c[1]*s[146] + c[2]*s[119] - c[1]*s[236] + c[2]*s[209];
2042 gout[n*48+8] = + c[1]*s[154] - c[2]*s[127] - c[1]*s[226] + c[2]*s[199] - c[1]*s[156] + c[2]*s[129] + c[1]*s[228] - c[2]*s[201];
2043 gout[n*48+9] = + c[1]*s[217] - c[2]*s[190] - c[1]*s[73] + c[2]*s[46] - c[1]*s[219] + c[2]*s[192] + c[1]*s[75] - c[2]*s[48];
2044 gout[n*48+10] = + c[1]*s[64] - c[2]*s[37] - c[1]*s[136] + c[2]*s[109] - c[1]*s[66] + c[2]*s[39] + c[1]*s[138] - c[2]*s[111];
2045 gout[n*48+11] = + c[1]*s[55] - c[2]*s[28] + c[1]*s[145] - c[2]*s[118] + c[1]*s[235] - c[2]*s[208] - c[1]*s[57] + c[2]*s[30] - c[1]*s[147] + c[2]*s[120] - c[1]*s[237] + c[2]*s[210];
2046 gout[n*48+12] = + c[1]*s[153] - c[2]*s[126] - c[1]*s[225] + c[2]*s[198] + c[1]*s[157] - c[2]*s[130] - c[1]*s[229] + c[2]*s[202] + c[1]*s[161] - c[2]*s[134] - c[1]*s[233] + c[2]*s[206];
2047 gout[n*48+13] = + c[1]*s[216] - c[2]*s[189] - c[1]*s[72] + c[2]*s[45] + c[1]*s[220] - c[2]*s[193] - c[1]*s[76] + c[2]*s[49] + c[1]*s[224] - c[2]*s[197] - c[1]*s[80] + c[2]*s[53];
2048 gout[n*48+14] = + c[1]*s[63] - c[2]*s[36] - c[1]*s[135] + c[2]*s[108] + c[1]*s[67] - c[2]*s[40] - c[1]*s[139] + c[2]*s[112] + c[1]*s[71] - c[2]*s[44] - c[1]*s[143] + c[2]*s[116];
2049 gout[n*48+15] = + c[1]*s[54] - c[2]*s[27] + c[1]*s[144] - c[2]*s[117] + c[1]*s[234] - c[2]*s[207] + c[1]*s[58] - c[2]*s[31] + c[1]*s[148] - c[2]*s[121] + c[1]*s[238] - c[2]*s[211] + c[1]*s[62] - c[2]*s[35] + c[1]*s[152] - c[2]*s[125] + c[1]*s[242] - c[2]*s[215];
2050 gout[n*48+16] = + c[2]*s[104] - c[0]*s[158] - c[2]*s[176] + c[0]*s[230] - c[2]*s[106] + c[0]*s[160] + c[2]*s[178] - c[0]*s[232];
2051 gout[n*48+17] = + c[2]*s[167] - c[0]*s[221] - c[2]*s[23] + c[0]*s[77] - c[2]*s[169] + c[0]*s[223] + c[2]*s[25] - c[0]*s[79];
2052 gout[n*48+18] = + c[2]*s[14] - c[0]*s[68] - c[2]*s[86] + c[0]*s[140] - c[2]*s[16] + c[0]*s[70] + c[2]*s[88] - c[0]*s[142];
2053 gout[n*48+19] = + c[2]*s[5] - c[0]*s[59] + c[2]*s[95] - c[0]*s[149] + c[2]*s[185] - c[0]*s[239] - c[2]*s[7] + c[0]*s[61] - c[2]*s[97] + c[0]*s[151] - c[2]*s[187] + c[0]*s[241];
2054 gout[n*48+20] = + c[2]*s[105] - c[0]*s[159] - c[2]*s[177] + c[0]*s[231] - c[2]*s[101] + c[0]*s[155] + c[2]*s[173] - c[0]*s[227];
2055 gout[n*48+21] = + c[2]*s[168] - c[0]*s[222] - c[2]*s[24] + c[0]*s[78] - c[2]*s[164] + c[0]*s[218] + c[2]*s[20] - c[0]*s[74];
2056 gout[n*48+22] = + c[2]*s[15] - c[0]*s[69] - c[2]*s[87] + c[0]*s[141] - c[2]*s[11] + c[0]*s[65] + c[2]*s[83] - c[0]*s[137];
2057 gout[n*48+23] = + c[2]*s[6] - c[0]*s[60] + c[2]*s[96] - c[0]*s[150] + c[2]*s[186] - c[0]*s[240] - c[2]*s[2] + c[0]*s[56] - c[2]*s[92] + c[0]*s[146] - c[2]*s[182] + c[0]*s[236];
2058 gout[n*48+24] = + c[2]*s[100] - c[0]*s[154] - c[2]*s[172] + c[0]*s[226] - c[2]*s[102] + c[0]*s[156] + c[2]*s[174] - c[0]*s[228];
2059 gout[n*48+25] = + c[2]*s[163] - c[0]*s[217] - c[2]*s[19] + c[0]*s[73] - c[2]*s[165] + c[0]*s[219] + c[2]*s[21] - c[0]*s[75];
2060 gout[n*48+26] = + c[2]*s[10] - c[0]*s[64] - c[2]*s[82] + c[0]*s[136] - c[2]*s[12] + c[0]*s[66] + c[2]*s[84] - c[0]*s[138];
2061 gout[n*48+27] = + c[2]*s[1] - c[0]*s[55] + c[2]*s[91] - c[0]*s[145] + c[2]*s[181] - c[0]*s[235] - c[2]*s[3] + c[0]*s[57] - c[2]*s[93] + c[0]*s[147] - c[2]*s[183] + c[0]*s[237];
2062 gout[n*48+28] = + c[2]*s[99] - c[0]*s[153] - c[2]*s[171] + c[0]*s[225] + c[2]*s[103] - c[0]*s[157] - c[2]*s[175] + c[0]*s[229] + c[2]*s[107] - c[0]*s[161] - c[2]*s[179] + c[0]*s[233];
2063 gout[n*48+29] = + c[2]*s[162] - c[0]*s[216] - c[2]*s[18] + c[0]*s[72] + c[2]*s[166] - c[0]*s[220] - c[2]*s[22] + c[0]*s[76] + c[2]*s[170] - c[0]*s[224] - c[2]*s[26] + c[0]*s[80];
2064 gout[n*48+30] = + c[2]*s[9] - c[0]*s[63] - c[2]*s[81] + c[0]*s[135] + c[2]*s[13] - c[0]*s[67] - c[2]*s[85] + c[0]*s[139] + c[2]*s[17] - c[0]*s[71] - c[2]*s[89] + c[0]*s[143];
2065 gout[n*48+31] = + c[2]*s[0] - c[0]*s[54] + c[2]*s[90] - c[0]*s[144] + c[2]*s[180] - c[0]*s[234] + c[2]*s[4] - c[0]*s[58] + c[2]*s[94] - c[0]*s[148] + c[2]*s[184] - c[0]*s[238] + c[2]*s[8] - c[0]*s[62] + c[2]*s[98] - c[0]*s[152] + c[2]*s[188] - c[0]*s[242];
2066 gout[n*48+32] = + c[0]*s[131] - c[1]*s[104] - c[0]*s[203] + c[1]*s[176] - c[0]*s[133] + c[1]*s[106] + c[0]*s[205] - c[1]*s[178];
2067 gout[n*48+33] = + c[0]*s[194] - c[1]*s[167] - c[0]*s[50] + c[1]*s[23] - c[0]*s[196] + c[1]*s[169] + c[0]*s[52] - c[1]*s[25];
2068 gout[n*48+34] = + c[0]*s[41] - c[1]*s[14] - c[0]*s[113] + c[1]*s[86] - c[0]*s[43] + c[1]*s[16] + c[0]*s[115] - c[1]*s[88];
2069 gout[n*48+35] = + c[0]*s[32] - c[1]*s[5] + c[0]*s[122] - c[1]*s[95] + c[0]*s[212] - c[1]*s[185] - c[0]*s[34] + c[1]*s[7] - c[0]*s[124] + c[1]*s[97] - c[0]*s[214] + c[1]*s[187];
2070 gout[n*48+36] = + c[0]*s[132] - c[1]*s[105] - c[0]*s[204] + c[1]*s[177] - c[0]*s[128] + c[1]*s[101] + c[0]*s[200] - c[1]*s[173];
2071 gout[n*48+37] = + c[0]*s[195] - c[1]*s[168] - c[0]*s[51] + c[1]*s[24] - c[0]*s[191] + c[1]*s[164] + c[0]*s[47] - c[1]*s[20];
2072 gout[n*48+38] = + c[0]*s[42] - c[1]*s[15] - c[0]*s[114] + c[1]*s[87] - c[0]*s[38] + c[1]*s[11] + c[0]*s[110] - c[1]*s[83];
2073 gout[n*48+39] = + c[0]*s[33] - c[1]*s[6] + c[0]*s[123] - c[1]*s[96] + c[0]*s[213] - c[1]*s[186] - c[0]*s[29] + c[1]*s[2] - c[0]*s[119] + c[1]*s[92] - c[0]*s[209] + c[1]*s[182];
2074 gout[n*48+40] = + c[0]*s[127] - c[1]*s[100] - c[0]*s[199] + c[1]*s[172] - c[0]*s[129] + c[1]*s[102] + c[0]*s[201] - c[1]*s[174];
2075 gout[n*48+41] = + c[0]*s[190] - c[1]*s[163] - c[0]*s[46] + c[1]*s[19] - c[0]*s[192] + c[1]*s[165] + c[0]*s[48] - c[1]*s[21];
2076 gout[n*48+42] = + c[0]*s[37] - c[1]*s[10] - c[0]*s[109] + c[1]*s[82] - c[0]*s[39] + c[1]*s[12] + c[0]*s[111] - c[1]*s[84];
2077 gout[n*48+43] = + c[0]*s[28] - c[1]*s[1] + c[0]*s[118] - c[1]*s[91] + c[0]*s[208] - c[1]*s[181] - c[0]*s[30] + c[1]*s[3] - c[0]*s[120] + c[1]*s[93] - c[0]*s[210] + c[1]*s[183];
2078 gout[n*48+44] = + c[0]*s[126] - c[1]*s[99] - c[0]*s[198] + c[1]*s[171] + c[0]*s[130] - c[1]*s[103] - c[0]*s[202] + c[1]*s[175] + c[0]*s[134] - c[1]*s[107] - c[0]*s[206] + c[1]*s[179];
2079 gout[n*48+45] = + c[0]*s[189] - c[1]*s[162] - c[0]*s[45] + c[1]*s[18] + c[0]*s[193] - c[1]*s[166] - c[0]*s[49] + c[1]*s[22] + c[0]*s[197] - c[1]*s[170] - c[0]*s[53] + c[1]*s[26];
2080 gout[n*48+46] = + c[0]*s[36] - c[1]*s[9] - c[0]*s[108] + c[1]*s[81] + c[0]*s[40] - c[1]*s[13] - c[0]*s[112] + c[1]*s[85] + c[0]*s[44] - c[1]*s[17] - c[0]*s[116] + c[1]*s[89];
2081 gout[n*48+47] = + c[0]*s[27] - c[1]*s[0] + c[0]*s[117] - c[1]*s[90] + c[0]*s[207] - c[1]*s[180] + c[0]*s[31] - c[1]*s[4] + c[0]*s[121] - c[1]*s[94] + c[0]*s[211] - c[1]*s[184] + c[0]*s[35] - c[1]*s[8] + c[0]*s[125] - c[1]*s[98] + c[0]*s[215] - c[1]*s[188];
2082 } else {
2083 gout[n*48+0] += + c[1]*s[158] - c[2]*s[131] - c[1]*s[230] + c[2]*s[203] - c[1]*s[160] + c[2]*s[133] + c[1]*s[232] - c[2]*s[205];
2084 gout[n*48+1] += + c[1]*s[221] - c[2]*s[194] - c[1]*s[77] + c[2]*s[50] - c[1]*s[223] + c[2]*s[196] + c[1]*s[79] - c[2]*s[52];
2085 gout[n*48+2] += + c[1]*s[68] - c[2]*s[41] - c[1]*s[140] + c[2]*s[113] - c[1]*s[70] + c[2]*s[43] + c[1]*s[142] - c[2]*s[115];
2086 gout[n*48+3] += + c[1]*s[59] - c[2]*s[32] + c[1]*s[149] - c[2]*s[122] + c[1]*s[239] - c[2]*s[212] - c[1]*s[61] + c[2]*s[34] - c[1]*s[151] + c[2]*s[124] - c[1]*s[241] + c[2]*s[214];
2087 gout[n*48+4] += + c[1]*s[159] - c[2]*s[132] - c[1]*s[231] + c[2]*s[204] - c[1]*s[155] + c[2]*s[128] + c[1]*s[227] - c[2]*s[200];
2088 gout[n*48+5] += + c[1]*s[222] - c[2]*s[195] - c[1]*s[78] + c[2]*s[51] - c[1]*s[218] + c[2]*s[191] + c[1]*s[74] - c[2]*s[47];
2089 gout[n*48+6] += + c[1]*s[69] - c[2]*s[42] - c[1]*s[141] + c[2]*s[114] - c[1]*s[65] + c[2]*s[38] + c[1]*s[137] - c[2]*s[110];
2090 gout[n*48+7] += + c[1]*s[60] - c[2]*s[33] + c[1]*s[150] - c[2]*s[123] + c[1]*s[240] - c[2]*s[213] - c[1]*s[56] + c[2]*s[29] - c[1]*s[146] + c[2]*s[119] - c[1]*s[236] + c[2]*s[209];
2091 gout[n*48+8] += + c[1]*s[154] - c[2]*s[127] - c[1]*s[226] + c[2]*s[199] - c[1]*s[156] + c[2]*s[129] + c[1]*s[228] - c[2]*s[201];
2092 gout[n*48+9] += + c[1]*s[217] - c[2]*s[190] - c[1]*s[73] + c[2]*s[46] - c[1]*s[219] + c[2]*s[192] + c[1]*s[75] - c[2]*s[48];
2093 gout[n*48+10] += + c[1]*s[64] - c[2]*s[37] - c[1]*s[136] + c[2]*s[109] - c[1]*s[66] + c[2]*s[39] + c[1]*s[138] - c[2]*s[111];
2094 gout[n*48+11] += + c[1]*s[55] - c[2]*s[28] + c[1]*s[145] - c[2]*s[118] + c[1]*s[235] - c[2]*s[208] - c[1]*s[57] + c[2]*s[30] - c[1]*s[147] + c[2]*s[120] - c[1]*s[237] + c[2]*s[210];
2095 gout[n*48+12] += + c[1]*s[153] - c[2]*s[126] - c[1]*s[225] + c[2]*s[198] + c[1]*s[157] - c[2]*s[130] - c[1]*s[229] + c[2]*s[202] + c[1]*s[161] - c[2]*s[134] - c[1]*s[233] + c[2]*s[206];
2096 gout[n*48+13] += + c[1]*s[216] - c[2]*s[189] - c[1]*s[72] + c[2]*s[45] + c[1]*s[220] - c[2]*s[193] - c[1]*s[76] + c[2]*s[49] + c[1]*s[224] - c[2]*s[197] - c[1]*s[80] + c[2]*s[53];
2097 gout[n*48+14] += + c[1]*s[63] - c[2]*s[36] - c[1]*s[135] + c[2]*s[108] + c[1]*s[67] - c[2]*s[40] - c[1]*s[139] + c[2]*s[112] + c[1]*s[71] - c[2]*s[44] - c[1]*s[143] + c[2]*s[116];
2098 gout[n*48+15] += + c[1]*s[54] - c[2]*s[27] + c[1]*s[144] - c[2]*s[117] + c[1]*s[234] - c[2]*s[207] + c[1]*s[58] - c[2]*s[31] + c[1]*s[148] - c[2]*s[121] + c[1]*s[238] - c[2]*s[211] + c[1]*s[62] - c[2]*s[35] + c[1]*s[152] - c[2]*s[125] + c[1]*s[242] - c[2]*s[215];
2099 gout[n*48+16] += + c[2]*s[104] - c[0]*s[158] - c[2]*s[176] + c[0]*s[230] - c[2]*s[106] + c[0]*s[160] + c[2]*s[178] - c[0]*s[232];
2100 gout[n*48+17] += + c[2]*s[167] - c[0]*s[221] - c[2]*s[23] + c[0]*s[77] - c[2]*s[169] + c[0]*s[223] + c[2]*s[25] - c[0]*s[79];
2101 gout[n*48+18] += + c[2]*s[14] - c[0]*s[68] - c[2]*s[86] + c[0]*s[140] - c[2]*s[16] + c[0]*s[70] + c[2]*s[88] - c[0]*s[142];
2102 gout[n*48+19] += + c[2]*s[5] - c[0]*s[59] + c[2]*s[95] - c[0]*s[149] + c[2]*s[185] - c[0]*s[239] - c[2]*s[7] + c[0]*s[61] - c[2]*s[97] + c[0]*s[151] - c[2]*s[187] + c[0]*s[241];
2103 gout[n*48+20] += + c[2]*s[105] - c[0]*s[159] - c[2]*s[177] + c[0]*s[231] - c[2]*s[101] + c[0]*s[155] + c[2]*s[173] - c[0]*s[227];
2104 gout[n*48+21] += + c[2]*s[168] - c[0]*s[222] - c[2]*s[24] + c[0]*s[78] - c[2]*s[164] + c[0]*s[218] + c[2]*s[20] - c[0]*s[74];
2105 gout[n*48+22] += + c[2]*s[15] - c[0]*s[69] - c[2]*s[87] + c[0]*s[141] - c[2]*s[11] + c[0]*s[65] + c[2]*s[83] - c[0]*s[137];
2106 gout[n*48+23] += + c[2]*s[6] - c[0]*s[60] + c[2]*s[96] - c[0]*s[150] + c[2]*s[186] - c[0]*s[240] - c[2]*s[2] + c[0]*s[56] - c[2]*s[92] + c[0]*s[146] - c[2]*s[182] + c[0]*s[236];
2107 gout[n*48+24] += + c[2]*s[100] - c[0]*s[154] - c[2]*s[172] + c[0]*s[226] - c[2]*s[102] + c[0]*s[156] + c[2]*s[174] - c[0]*s[228];
2108 gout[n*48+25] += + c[2]*s[163] - c[0]*s[217] - c[2]*s[19] + c[0]*s[73] - c[2]*s[165] + c[0]*s[219] + c[2]*s[21] - c[0]*s[75];
2109 gout[n*48+26] += + c[2]*s[10] - c[0]*s[64] - c[2]*s[82] + c[0]*s[136] - c[2]*s[12] + c[0]*s[66] + c[2]*s[84] - c[0]*s[138];
2110 gout[n*48+27] += + c[2]*s[1] - c[0]*s[55] + c[2]*s[91] - c[0]*s[145] + c[2]*s[181] - c[0]*s[235] - c[2]*s[3] + c[0]*s[57] - c[2]*s[93] + c[0]*s[147] - c[2]*s[183] + c[0]*s[237];
2111 gout[n*48+28] += + c[2]*s[99] - c[0]*s[153] - c[2]*s[171] + c[0]*s[225] + c[2]*s[103] - c[0]*s[157] - c[2]*s[175] + c[0]*s[229] + c[2]*s[107] - c[0]*s[161] - c[2]*s[179] + c[0]*s[233];
2112 gout[n*48+29] += + c[2]*s[162] - c[0]*s[216] - c[2]*s[18] + c[0]*s[72] + c[2]*s[166] - c[0]*s[220] - c[2]*s[22] + c[0]*s[76] + c[2]*s[170] - c[0]*s[224] - c[2]*s[26] + c[0]*s[80];
2113 gout[n*48+30] += + c[2]*s[9] - c[0]*s[63] - c[2]*s[81] + c[0]*s[135] + c[2]*s[13] - c[0]*s[67] - c[2]*s[85] + c[0]*s[139] + c[2]*s[17] - c[0]*s[71] - c[2]*s[89] + c[0]*s[143];
2114 gout[n*48+31] += + c[2]*s[0] - c[0]*s[54] + c[2]*s[90] - c[0]*s[144] + c[2]*s[180] - c[0]*s[234] + c[2]*s[4] - c[0]*s[58] + c[2]*s[94] - c[0]*s[148] + c[2]*s[184] - c[0]*s[238] + c[2]*s[8] - c[0]*s[62] + c[2]*s[98] - c[0]*s[152] + c[2]*s[188] - c[0]*s[242];
2115 gout[n*48+32] += + c[0]*s[131] - c[1]*s[104] - c[0]*s[203] + c[1]*s[176] - c[0]*s[133] + c[1]*s[106] + c[0]*s[205] - c[1]*s[178];
2116 gout[n*48+33] += + c[0]*s[194] - c[1]*s[167] - c[0]*s[50] + c[1]*s[23] - c[0]*s[196] + c[1]*s[169] + c[0]*s[52] - c[1]*s[25];
2117 gout[n*48+34] += + c[0]*s[41] - c[1]*s[14] - c[0]*s[113] + c[1]*s[86] - c[0]*s[43] + c[1]*s[16] + c[0]*s[115] - c[1]*s[88];
2118 gout[n*48+35] += + c[0]*s[32] - c[1]*s[5] + c[0]*s[122] - c[1]*s[95] + c[0]*s[212] - c[1]*s[185] - c[0]*s[34] + c[1]*s[7] - c[0]*s[124] + c[1]*s[97] - c[0]*s[214] + c[1]*s[187];
2119 gout[n*48+36] += + c[0]*s[132] - c[1]*s[105] - c[0]*s[204] + c[1]*s[177] - c[0]*s[128] + c[1]*s[101] + c[0]*s[200] - c[1]*s[173];
2120 gout[n*48+37] += + c[0]*s[195] - c[1]*s[168] - c[0]*s[51] + c[1]*s[24] - c[0]*s[191] + c[1]*s[164] + c[0]*s[47] - c[1]*s[20];
2121 gout[n*48+38] += + c[0]*s[42] - c[1]*s[15] - c[0]*s[114] + c[1]*s[87] - c[0]*s[38] + c[1]*s[11] + c[0]*s[110] - c[1]*s[83];
2122 gout[n*48+39] += + c[0]*s[33] - c[1]*s[6] + c[0]*s[123] - c[1]*s[96] + c[0]*s[213] - c[1]*s[186] - c[0]*s[29] + c[1]*s[2] - c[0]*s[119] + c[1]*s[92] - c[0]*s[209] + c[1]*s[182];
2123 gout[n*48+40] += + c[0]*s[127] - c[1]*s[100] - c[0]*s[199] + c[1]*s[172] - c[0]*s[129] + c[1]*s[102] + c[0]*s[201] - c[1]*s[174];
2124 gout[n*48+41] += + c[0]*s[190] - c[1]*s[163] - c[0]*s[46] + c[1]*s[19] - c[0]*s[192] + c[1]*s[165] + c[0]*s[48] - c[1]*s[21];
2125 gout[n*48+42] += + c[0]*s[37] - c[1]*s[10] - c[0]*s[109] + c[1]*s[82] - c[0]*s[39] + c[1]*s[12] + c[0]*s[111] - c[1]*s[84];
2126 gout[n*48+43] += + c[0]*s[28] - c[1]*s[1] + c[0]*s[118] - c[1]*s[91] + c[0]*s[208] - c[1]*s[181] - c[0]*s[30] + c[1]*s[3] - c[0]*s[120] + c[1]*s[93] - c[0]*s[210] + c[1]*s[183];
2127 gout[n*48+44] += + c[0]*s[126] - c[1]*s[99] - c[0]*s[198] + c[1]*s[171] + c[0]*s[130] - c[1]*s[103] - c[0]*s[202] + c[1]*s[175] + c[0]*s[134] - c[1]*s[107] - c[0]*s[206] + c[1]*s[179];
2128 gout[n*48+45] += + c[0]*s[189] - c[1]*s[162] - c[0]*s[45] + c[1]*s[18] + c[0]*s[193] - c[1]*s[166] - c[0]*s[49] + c[1]*s[22] + c[0]*s[197] - c[1]*s[170] - c[0]*s[53] + c[1]*s[26];
2129 gout[n*48+46] += + c[0]*s[36] - c[1]*s[9] - c[0]*s[108] + c[1]*s[81] + c[0]*s[40] - c[1]*s[13] - c[0]*s[112] + c[1]*s[85] + c[0]*s[44] - c[1]*s[17] - c[0]*s[116] + c[1]*s[89];
2130 gout[n*48+47] += + c[0]*s[27] - c[1]*s[0] + c[0]*s[117] - c[1]*s[90] + c[0]*s[207] - c[1]*s[180] + c[0]*s[31] - c[1]*s[4] + c[0]*s[121] - c[1]*s[94] + c[0]*s[211] - c[1]*s[184] + c[0]*s[35] - c[1]*s[8] + c[0]*s[125] - c[1]*s[98] + c[0]*s[215] - c[1]*s[188];
2131 }}}
int2e_spgsp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2132 void int2e_spgsp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2133 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
2134 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2135 }
int2e_spgsp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2136 CACHE_SIZE_T int2e_spgsp1spsp2_cart(double *out, FINT *dims, FINT *shls,
2137 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2138 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
2139 CINTEnvVars envs;
2140 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2141 envs.f_gout = &CINTgout2e_int2e_spgsp1spsp2;
2142 envs.common_factor *= 0.5;
2143 FINT i, nout;
2144 FINT counts[4];
2145 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2146 counts[0] = envs.nfi * envs.x_ctr[0];
2147 counts[1] = envs.nfj * envs.x_ctr[1];
2148 counts[2] = envs.nfk * envs.x_ctr[2];
2149 counts[3] = envs.nfl * envs.x_ctr[3];
2150 if (dims == NULL) { dims = counts; }
2151 nout = dims[0] * dims[1] * dims[2] * dims[3];
2152 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
2153 c2s_dset0(out+nout*i, dims, counts); }
2154 return 0; }
2155 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
2156 } // int2e_spgsp1spsp2_cart
int2e_spgsp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2157 CACHE_SIZE_T int2e_spgsp1spsp2_sph(double *out, FINT *dims, FINT *shls,
2158 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2159 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
2160 CINTEnvVars envs;
2161 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2162 envs.f_gout = &CINTgout2e_int2e_spgsp1spsp2;
2163 envs.common_factor *= 0.5;
2164 FINT i, nout;
2165 FINT counts[4];
2166 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2167 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
2168 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
2169 counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
2170 counts[3] = (envs.l_l*2+1) * envs.x_ctr[3];
2171 if (dims == NULL) { dims = counts; }
2172 nout = dims[0] * dims[1] * dims[2] * dims[3];
2173 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_e2 * envs.ncomp_tensor; i++) {
2174 c2s_dset0(out+nout*i, dims, counts); }
2175 return 0; }
2176 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
2177 } // int2e_spgsp1spsp2_sph
int2e_spgsp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2178 CACHE_SIZE_T int2e_spgsp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
2179 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2180 FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3};
2181 CINTEnvVars envs;
2182 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2183 envs.f_gout = &CINTgout2e_int2e_spgsp1spsp2;
2184 envs.common_factor *= 0.5;
2185 FINT i, nout;
2186 FINT counts[4];
2187 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2188 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
2189 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
2190 counts[2] = CINTcgto_spinor(envs.shls[2], envs.bas);
2191 counts[3] = CINTcgto_spinor(envs.shls[3], envs.bas);
2192 if (dims == NULL) { dims = counts; }
2193 nout = dims[0] * dims[1] * dims[2] * dims[3];
2194 for (i = 0; i < envs.ncomp_tensor; i++) {
2195 c2s_zset0(out+nout*i, dims, counts); }
2196 return 0; }
2197 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1i, &c2s_si_2e2);
2198 } // int2e_spgsp1spsp2_spinor
2199 ALL_CINT(int2e_spgsp1spsp2)
ALL_CINT_FORTRAN_(int2e_spgsp1spsp2)2200 ALL_CINT_FORTRAN_(int2e_spgsp1spsp2)
2201 /* <k P* i|R12 |DOT P j l> : i,j \in electron 1; k,l \in electron 2
2202  * = (P* i DOT P j|R12 |k l) */
2203 void CINTgout2e_int2e_pp1(double *gout,
2204 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2205 FINT nf = envs->nf;
2206 FINT nrys_roots = envs->nrys_roots;
2207 FINT ix, iy, iz, i, n;
2208 double *g0 = g;
2209 double *g1 = g0 + envs->g_size * 3;
2210 double *g2 = g1 + envs->g_size * 3;
2211 double *g3 = g2 + envs->g_size * 3;
2212 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
2213 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2214 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2215 double s[9];
2216 for (n = 0; n < nf; n++) {
2217 ix = idx[0+n*3];
2218 iy = idx[1+n*3];
2219 iz = idx[2+n*3];
2220 for (i = 0; i < 9; i++) { s[i] = 0; }
2221 for (i = 0; i < nrys_roots; i++) {
2222 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
2223 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
2224 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
2225 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
2226 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
2227 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
2228 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
2229 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
2230 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
2231 }
2232 if (gout_empty) {
2233 gout[n*1+0] = + s[0] + s[4] + s[8];
2234 } else {
2235 gout[n*1+0] += + s[0] + s[4] + s[8];
2236 }}}
int2e_pp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2237 void int2e_pp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2238 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
2239 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2240 }
int2e_pp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2241 CACHE_SIZE_T int2e_pp1_cart(double *out, FINT *dims, FINT *shls,
2242 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2243 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
2244 CINTEnvVars envs;
2245 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2246 envs.f_gout = &CINTgout2e_int2e_pp1;
2247 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
2248 } // int2e_pp1_cart
int2e_pp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2249 CACHE_SIZE_T int2e_pp1_sph(double *out, FINT *dims, FINT *shls,
2250 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2251 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
2252 CINTEnvVars envs;
2253 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2254 envs.f_gout = &CINTgout2e_int2e_pp1;
2255 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
2256 } // int2e_pp1_sph
int2e_pp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2257 CACHE_SIZE_T int2e_pp1_spinor(double complex *out, FINT *dims, FINT *shls,
2258 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2259 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
2260 CINTEnvVars envs;
2261 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2262 envs.f_gout = &CINTgout2e_int2e_pp1;
2263 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
2264 } // int2e_pp1_spinor
2265 ALL_CINT(int2e_pp1)
ALL_CINT_FORTRAN_(int2e_pp1)2266 ALL_CINT_FORTRAN_(int2e_pp1)
2267 /* <P* k i|R12 |j DOT P l> : i,j \in electron 1; k,l \in electron 2
2268  * = (i j|R12 |P* k DOT P l) */
2269 void CINTgout2e_int2e_pp2(double *gout,
2270 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2271 FINT nf = envs->nf;
2272 FINT nrys_roots = envs->nrys_roots;
2273 FINT ix, iy, iz, i, n;
2274 double *g0 = g;
2275 double *g1 = g0 + envs->g_size * 3;
2276 double *g2 = g1 + envs->g_size * 3;
2277 double *g3 = g2 + envs->g_size * 3;
2278 G2E_D_L(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l+1, envs->l_l+0);
2279 G2E_D_K(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l);
2280 G2E_D_K(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l);
2281 double s[9];
2282 for (n = 0; n < nf; n++) {
2283 ix = idx[0+n*3];
2284 iy = idx[1+n*3];
2285 iz = idx[2+n*3];
2286 for (i = 0; i < 9; i++) { s[i] = 0; }
2287 for (i = 0; i < nrys_roots; i++) {
2288 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
2289 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
2290 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
2291 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
2292 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
2293 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
2294 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
2295 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
2296 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
2297 }
2298 if (gout_empty) {
2299 gout[n*1+0] = + s[0] + s[4] + s[8];
2300 } else {
2301 gout[n*1+0] += + s[0] + s[4] + s[8];
2302 }}}
int2e_pp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2303 void int2e_pp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2304 FINT ng[] = {0, 0, 1, 1, 2, 1, 1, 1};
2305 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2306 }
int2e_pp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2307 CACHE_SIZE_T int2e_pp2_cart(double *out, FINT *dims, FINT *shls,
2308 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2309 FINT ng[] = {0, 0, 1, 1, 2, 1, 1, 1};
2310 CINTEnvVars envs;
2311 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2312 envs.f_gout = &CINTgout2e_int2e_pp2;
2313 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
2314 } // int2e_pp2_cart
int2e_pp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2315 CACHE_SIZE_T int2e_pp2_sph(double *out, FINT *dims, FINT *shls,
2316 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2317 FINT ng[] = {0, 0, 1, 1, 2, 1, 1, 1};
2318 CINTEnvVars envs;
2319 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2320 envs.f_gout = &CINTgout2e_int2e_pp2;
2321 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
2322 } // int2e_pp2_sph
int2e_pp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2323 CACHE_SIZE_T int2e_pp2_spinor(double complex *out, FINT *dims, FINT *shls,
2324 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2325 FINT ng[] = {0, 0, 1, 1, 2, 1, 1, 1};
2326 CINTEnvVars envs;
2327 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2328 envs.f_gout = &CINTgout2e_int2e_pp2;
2329 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
2330 } // int2e_pp2_spinor
2331 ALL_CINT(int2e_pp2)
ALL_CINT_FORTRAN_(int2e_pp2)2332 ALL_CINT_FORTRAN_(int2e_pp2)
2333 /* <P* k P* i|R12 |DOT P j DOT P l> : i,j \in electron 1; k,l \in electron 2
2334  * = (P* i DOT P j|R12 |P* k DOT P l) */
2335 void CINTgout2e_int2e_pp1pp2(double *gout,
2336 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2337 FINT nf = envs->nf;
2338 FINT nrys_roots = envs->nrys_roots;
2339 FINT ix, iy, iz, i, n;
2340 double *g0 = g;
2341 double *g1 = g0 + envs->g_size * 3;
2342 double *g2 = g1 + envs->g_size * 3;
2343 double *g3 = g2 + envs->g_size * 3;
2344 double *g4 = g3 + envs->g_size * 3;
2345 double *g5 = g4 + envs->g_size * 3;
2346 double *g6 = g5 + envs->g_size * 3;
2347 double *g7 = g6 + envs->g_size * 3;
2348 double *g8 = g7 + envs->g_size * 3;
2349 double *g9 = g8 + envs->g_size * 3;
2350 double *g10 = g9 + envs->g_size * 3;
2351 double *g11 = g10 + envs->g_size * 3;
2352 double *g12 = g11 + envs->g_size * 3;
2353 double *g13 = g12 + envs->g_size * 3;
2354 double *g14 = g13 + envs->g_size * 3;
2355 double *g15 = g14 + envs->g_size * 3;
2356 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+1, envs->k_l+1, envs->l_l+0);
2357 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
2358 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+1, envs->k_l+0, envs->l_l);
2359 G2E_D_J(g4, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
2360 G2E_D_J(g5, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
2361 G2E_D_J(g6, g2, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
2362 G2E_D_J(g7, g3, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
2363 G2E_D_I(g8, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2364 G2E_D_I(g9, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2365 G2E_D_I(g10, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2366 G2E_D_I(g11, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2367 G2E_D_I(g12, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2368 G2E_D_I(g13, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2369 G2E_D_I(g14, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2370 G2E_D_I(g15, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
2371 double s[81];
2372 for (n = 0; n < nf; n++) {
2373 ix = idx[0+n*3];
2374 iy = idx[1+n*3];
2375 iz = idx[2+n*3];
2376 for (i = 0; i < 81; i++) { s[i] = 0; }
2377 for (i = 0; i < nrys_roots; i++) {
2378 s[0] += g15[ix+i] * g0[iy+i] * g0[iz+i];
2379 s[1] += g14[ix+i] * g1[iy+i] * g0[iz+i];
2380 s[2] += g14[ix+i] * g0[iy+i] * g1[iz+i];
2381 s[3] += g13[ix+i] * g2[iy+i] * g0[iz+i];
2382 s[4] += g12[ix+i] * g3[iy+i] * g0[iz+i];
2383 s[5] += g12[ix+i] * g2[iy+i] * g1[iz+i];
2384 s[6] += g13[ix+i] * g0[iy+i] * g2[iz+i];
2385 s[7] += g12[ix+i] * g1[iy+i] * g2[iz+i];
2386 s[8] += g12[ix+i] * g0[iy+i] * g3[iz+i];
2387 s[9] += g11[ix+i] * g4[iy+i] * g0[iz+i];
2388 s[10] += g10[ix+i] * g5[iy+i] * g0[iz+i];
2389 s[11] += g10[ix+i] * g4[iy+i] * g1[iz+i];
2390 s[12] += g9[ix+i] * g6[iy+i] * g0[iz+i];
2391 s[13] += g8[ix+i] * g7[iy+i] * g0[iz+i];
2392 s[14] += g8[ix+i] * g6[iy+i] * g1[iz+i];
2393 s[15] += g9[ix+i] * g4[iy+i] * g2[iz+i];
2394 s[16] += g8[ix+i] * g5[iy+i] * g2[iz+i];
2395 s[17] += g8[ix+i] * g4[iy+i] * g3[iz+i];
2396 s[18] += g11[ix+i] * g0[iy+i] * g4[iz+i];
2397 s[19] += g10[ix+i] * g1[iy+i] * g4[iz+i];
2398 s[20] += g10[ix+i] * g0[iy+i] * g5[iz+i];
2399 s[21] += g9[ix+i] * g2[iy+i] * g4[iz+i];
2400 s[22] += g8[ix+i] * g3[iy+i] * g4[iz+i];
2401 s[23] += g8[ix+i] * g2[iy+i] * g5[iz+i];
2402 s[24] += g9[ix+i] * g0[iy+i] * g6[iz+i];
2403 s[25] += g8[ix+i] * g1[iy+i] * g6[iz+i];
2404 s[26] += g8[ix+i] * g0[iy+i] * g7[iz+i];
2405 s[27] += g7[ix+i] * g8[iy+i] * g0[iz+i];
2406 s[28] += g6[ix+i] * g9[iy+i] * g0[iz+i];
2407 s[29] += g6[ix+i] * g8[iy+i] * g1[iz+i];
2408 s[30] += g5[ix+i] * g10[iy+i] * g0[iz+i];
2409 s[31] += g4[ix+i] * g11[iy+i] * g0[iz+i];
2410 s[32] += g4[ix+i] * g10[iy+i] * g1[iz+i];
2411 s[33] += g5[ix+i] * g8[iy+i] * g2[iz+i];
2412 s[34] += g4[ix+i] * g9[iy+i] * g2[iz+i];
2413 s[35] += g4[ix+i] * g8[iy+i] * g3[iz+i];
2414 s[36] += g3[ix+i] * g12[iy+i] * g0[iz+i];
2415 s[37] += g2[ix+i] * g13[iy+i] * g0[iz+i];
2416 s[38] += g2[ix+i] * g12[iy+i] * g1[iz+i];
2417 s[39] += g1[ix+i] * g14[iy+i] * g0[iz+i];
2418 s[40] += g0[ix+i] * g15[iy+i] * g0[iz+i];
2419 s[41] += g0[ix+i] * g14[iy+i] * g1[iz+i];
2420 s[42] += g1[ix+i] * g12[iy+i] * g2[iz+i];
2421 s[43] += g0[ix+i] * g13[iy+i] * g2[iz+i];
2422 s[44] += g0[ix+i] * g12[iy+i] * g3[iz+i];
2423 s[45] += g3[ix+i] * g8[iy+i] * g4[iz+i];
2424 s[46] += g2[ix+i] * g9[iy+i] * g4[iz+i];
2425 s[47] += g2[ix+i] * g8[iy+i] * g5[iz+i];
2426 s[48] += g1[ix+i] * g10[iy+i] * g4[iz+i];
2427 s[49] += g0[ix+i] * g11[iy+i] * g4[iz+i];
2428 s[50] += g0[ix+i] * g10[iy+i] * g5[iz+i];
2429 s[51] += g1[ix+i] * g8[iy+i] * g6[iz+i];
2430 s[52] += g0[ix+i] * g9[iy+i] * g6[iz+i];
2431 s[53] += g0[ix+i] * g8[iy+i] * g7[iz+i];
2432 s[54] += g7[ix+i] * g0[iy+i] * g8[iz+i];
2433 s[55] += g6[ix+i] * g1[iy+i] * g8[iz+i];
2434 s[56] += g6[ix+i] * g0[iy+i] * g9[iz+i];
2435 s[57] += g5[ix+i] * g2[iy+i] * g8[iz+i];
2436 s[58] += g4[ix+i] * g3[iy+i] * g8[iz+i];
2437 s[59] += g4[ix+i] * g2[iy+i] * g9[iz+i];
2438 s[60] += g5[ix+i] * g0[iy+i] * g10[iz+i];
2439 s[61] += g4[ix+i] * g1[iy+i] * g10[iz+i];
2440 s[62] += g4[ix+i] * g0[iy+i] * g11[iz+i];
2441 s[63] += g3[ix+i] * g4[iy+i] * g8[iz+i];
2442 s[64] += g2[ix+i] * g5[iy+i] * g8[iz+i];
2443 s[65] += g2[ix+i] * g4[iy+i] * g9[iz+i];
2444 s[66] += g1[ix+i] * g6[iy+i] * g8[iz+i];
2445 s[67] += g0[ix+i] * g7[iy+i] * g8[iz+i];
2446 s[68] += g0[ix+i] * g6[iy+i] * g9[iz+i];
2447 s[69] += g1[ix+i] * g4[iy+i] * g10[iz+i];
2448 s[70] += g0[ix+i] * g5[iy+i] * g10[iz+i];
2449 s[71] += g0[ix+i] * g4[iy+i] * g11[iz+i];
2450 s[72] += g3[ix+i] * g0[iy+i] * g12[iz+i];
2451 s[73] += g2[ix+i] * g1[iy+i] * g12[iz+i];
2452 s[74] += g2[ix+i] * g0[iy+i] * g13[iz+i];
2453 s[75] += g1[ix+i] * g2[iy+i] * g12[iz+i];
2454 s[76] += g0[ix+i] * g3[iy+i] * g12[iz+i];
2455 s[77] += g0[ix+i] * g2[iy+i] * g13[iz+i];
2456 s[78] += g1[ix+i] * g0[iy+i] * g14[iz+i];
2457 s[79] += g0[ix+i] * g1[iy+i] * g14[iz+i];
2458 s[80] += g0[ix+i] * g0[iy+i] * g15[iz+i];
2459 }
2460 if (gout_empty) {
2461 gout[n*1+0] = + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
2462 } else {
2463 gout[n*1+0] += + s[0] + s[36] + s[72] + s[4] + s[40] + s[76] + s[8] + s[44] + s[80];
2464 }}}
int2e_pp1pp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2465 void int2e_pp1pp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2466 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 1};
2467 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2468 }
int2e_pp1pp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2469 CACHE_SIZE_T int2e_pp1pp2_cart(double *out, FINT *dims, FINT *shls,
2470 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2471 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 1};
2472 CINTEnvVars envs;
2473 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2474 envs.f_gout = &CINTgout2e_int2e_pp1pp2;
2475 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
2476 } // int2e_pp1pp2_cart
int2e_pp1pp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2477 CACHE_SIZE_T int2e_pp1pp2_sph(double *out, FINT *dims, FINT *shls,
2478 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2479 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 1};
2480 CINTEnvVars envs;
2481 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2482 envs.f_gout = &CINTgout2e_int2e_pp1pp2;
2483 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
2484 } // int2e_pp1pp2_sph
int2e_pp1pp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2485 CACHE_SIZE_T int2e_pp1pp2_spinor(double complex *out, FINT *dims, FINT *shls,
2486 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2487 FINT ng[] = {1, 1, 1, 1, 4, 1, 1, 1};
2488 CINTEnvVars envs;
2489 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2490 envs.f_gout = &CINTgout2e_int2e_pp1pp2;
2491 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2);
2492 } // int2e_pp1pp2_spinor
2493 ALL_CINT(int2e_pp1pp2)
2494 ALL_CINT_FORTRAN_(int2e_pp1pp2)
2495