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