29 assert(ex1 < u1.
nex());
30 assert(ex2 < u2.
nex());
41 for (
int site = 0; site <
m_Nvol; ++site) {
42 int ig1 = Ndf * (site + m_Nvol * ex1);
43 int ig2 = Ndf * (site + m_Nvol * ex2);
44 int ig = Ndf * (site + m_Nvol * ex);
45 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
46 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
47 int jg2 = ic2 * 2 + ig2;
48 int jg1 = ic1 * Nc2 + ig1;
49 field[2 * ic2 + Nc2 * ic1 + ig] =
50 g1[0 + jg1] * g2[0 + jg2] - g1[1 + jg1] * g2[1 + jg2]
51 + g1[2 + jg1] * g2[6 + jg2] - g1[3 + jg1] * g2[7 + jg2]
52 + g1[4 + jg1] * g2[12 + jg2] - g1[5 + jg1] * g2[13 + jg2];
53 field[2 * ic2 + 1 + Nc2 * ic1 + ig] =
54 g1[0 + jg1] * g2[1 + jg2] + g1[1 + jg1] * g2[0 + jg2]
55 + g1[2 + jg1] * g2[7 + jg2] + g1[3 + jg1] * g2[6 + jg2]
56 + g1[4 + jg1] * g2[13 + jg2] + g1[5 + jg1] * g2[12 + jg2];
68 assert(ex1 < u1.
nex());
69 assert(ex2 < u2.
nex());
80 for (
int site = 0; site <
m_Nvol; ++site) {
81 int ig1 = Ndf * (site + m_Nvol * ex1);
82 int ig2 = Ndf * (site + m_Nvol * ex2);
83 int ig = Ndf * (site + m_Nvol * ex);
84 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
85 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
86 int jg2 = ic2 * 2 + ig2;
87 int jg1 = ic1 * 2 + ig1;
88 field[2 * ic2 + Nc2 * ic1 + ig] =
89 g1[0 + jg1] * g2[0 + jg2] + g1[1 + jg1] * g2[1 + jg2]
90 + g1[6 + jg1] * g2[6 + jg2] + g1[7 + jg1] * g2[7 + jg2]
91 + g1[12 + jg1] * g2[12 + jg2] + g1[13 + jg1] * g2[13 + jg2];
92 field[2 * ic2 + 1 + Nc2 * ic1 + ig] =
93 g1[0 + jg1] * g2[1 + jg2] - g1[1 + jg1] * g2[0 + jg2]
94 + g1[6 + jg1] * g2[7 + jg2] - g1[7 + jg1] * g2[6 + jg2]
95 + g1[12 + jg1] * g2[13 + jg2] - g1[13 + jg1] * g2[12 + jg2];
107 assert(ex1 < u1.
nex());
108 assert(ex2 < u2.
nex());
117 int Ndf = Nc2 *
m_Nc;
119 for (
int site = 0; site <
m_Nvol; ++site) {
120 int ig1 = Ndf * (site + m_Nvol * ex1);
121 int ig2 = Ndf * (site + m_Nvol * ex2);
122 int ig = Ndf * (site + m_Nvol * ex);
123 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
124 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
125 int jg2 = ic2 * Nc2 + ig2;
126 int jg1 = ic1 * Nc2 + ig1;
127 field[2 * ic2 + Nc2 * ic1 + ig] =
128 g1[0 + jg1] * g2[0 + jg2] + g1[1 + jg1] * g2[1 + jg2]
129 + g1[2 + jg1] * g2[2 + jg2] + g1[3 + jg1] * g2[3 + jg2]
130 + g1[4 + jg1] * g2[4 + jg2] + g1[5 + jg1] * g2[5 + jg2];
131 field[2 * ic2 + 1 + Nc2 * ic1 + ig] =
132 -g1[0 + jg1] * g2[1 + jg2] + g1[1 + jg1] * g2[0 + jg2]
133 - g1[2 + jg1] * g2[3 + jg2] + g1[3 + jg1] * g2[2 + jg2]
134 - g1[4 + jg1] * g2[5 + jg2] + g1[5 + jg1] * g2[4 + jg2];
146 assert(ex1 < u1.
nex());
147 assert(ex2 < u2.
nex());
156 int Ndf = Nc2 *
m_Nc;
158 for (
int site = 0; site <
m_Nvol; ++site) {
159 int ig1 = Ndf * (site + m_Nvol * ex1);
160 int ig2 = Ndf * (site + m_Nvol * ex2);
161 int ig = Ndf * (site + m_Nvol * ex);
162 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
163 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
164 int jg2 = ic2 * Nc2 + ig2;
165 int jg1 = ic1 * 2 + ig1;
166 field[2 * ic2 + Nc2 * ic1 + ig] =
167 g1[0 + jg1] * g2[0 + jg2] - g1[1 + jg1] * g2[1 + jg2]
168 + g1[6 + jg1] * g2[2 + jg2] - g1[7 + jg1] * g2[3 + jg2]
169 + g1[12 + jg1] * g2[4 + jg2] - g1[13 + jg1] * g2[5 + jg2];
170 field[2 * ic2 + 1 + Nc2 * ic1 + ig] =
171 -g1[0 + jg1] * g2[1 + jg2] - g1[1 + jg1] * g2[0 + jg2]
172 - g1[6 + jg1] * g2[3 + jg2] - g1[7 + jg1] * g2[2 + jg2]
173 - g1[12 + jg1] * g2[5 + jg2] - g1[13 + jg1] * g2[4 + jg2];
182 const Field_G& u2,
int ex2,
double ff)
185 assert(ex1 < u1.
nex());
186 assert(ex2 < u2.
nex());
195 int Ndf = Nc2 *
m_Nc;
197 for (
int site = 0; site <
m_Nvol; ++site) {
198 int ig1 = Ndf * (site + m_Nvol * ex1);
199 int ig2 = Ndf * (site + m_Nvol * ex2);
200 int ig = Ndf * (site + m_Nvol * ex);
201 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
202 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
203 int jg2 = ic2 * 2 + ig2;
204 int jg1 = ic1 * Nc2 + ig1;
205 field[2 * ic2 + Nc2 * ic1 + ig] += ff *
206 (g1[0 + jg1] * g2[0 + jg2] - g1[1 + jg1] * g2[1 + jg2]
207 + g1[2 + jg1] * g2[6 + jg2] - g1[3 + jg1] * g2[7 + jg2]
208 + g1[4 + jg1] * g2[12 + jg2] - g1[5 + jg1] * g2[13 + jg2]);
209 field[2 * ic2 + 1 + Nc2 * ic1 + ig] += ff *
210 (g1[0 + jg1] * g2[1 + jg2] + g1[1 + jg1] * g2[0 + jg2]
211 + g1[2 + jg1] * g2[7 + jg2] + g1[3 + jg1] * g2[6 + jg2]
212 + g1[4 + jg1] * g2[13 + jg2] + g1[5 + jg1] * g2[12 + jg2]);
221 const Field_G& u2,
int ex2,
double ff)
224 assert(ex1 < u1.
nex());
225 assert(ex2 < u2.
nex());
234 int Ndf = Nc2 *
m_Nc;
236 for (
int site = 0; site <
m_Nvol; ++site) {
237 int ig1 = Ndf * (site + m_Nvol * ex1);
238 int ig2 = Ndf * (site + m_Nvol * ex2);
239 int ig = Ndf * (site + m_Nvol * ex);
240 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
241 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
242 int jg2 = ic2 * 2 + ig2;
243 int jg1 = ic1 * 2 + ig1;
244 field[2 * ic2 + Nc2 * ic1 + ig] += ff *
245 (g1[0 + jg1] * g2[0 + jg2] + g1[1 + jg1] * g2[1 + jg2]
246 + g1[6 + jg1] * g2[6 + jg2] + g1[7 + jg1] * g2[7 + jg2]
247 + g1[12 + jg1] * g2[12 + jg2] + g1[13 + jg1] * g2[13 + jg2]);
248 field[2 * ic2 + 1 + Nc2 * ic1 + ig] += ff *
249 (g1[0 + jg1] * g2[1 + jg2] - g1[1 + jg1] * g2[0 + jg2]
250 + g1[6 + jg1] * g2[7 + jg2] - g1[7 + jg1] * g2[6 + jg2]
251 + g1[12 + jg1] * g2[13 + jg2] - g1[13 + jg1] * g2[12 + jg2]);
260 const Field_G& u2,
int ex2,
double ff)
263 assert(ex1 < u1.
nex());
264 assert(ex2 < u2.
nex());
273 int Ndf = Nc2 *
m_Nc;
275 for (
int site = 0; site <
m_Nvol; ++site) {
276 int ig1 = Ndf * (site + m_Nvol * ex1);
277 int ig2 = Ndf * (site + m_Nvol * ex2);
278 int ig = Ndf * (site + m_Nvol * ex);
279 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
280 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
281 int jg2 = ic2 * Nc2 + ig2;
282 int jg1 = ic1 * Nc2 + ig1;
283 field[2 * ic2 + Nc2 * ic1 + ig] += ff *
284 (g1[0 + jg1] * g2[0 + jg2] + g1[1 + jg1] * g2[1 + jg2]
285 + g1[2 + jg1] * g2[2 + jg2] + g1[3 + jg1] * g2[3 + jg2]
286 + g1[4 + jg1] * g2[4 + jg2] + g1[5 + jg1] * g2[5 + jg2]);
287 field[2 * ic2 + 1 + Nc2 * ic1 + ig] += ff *
288 (-g1[0 + jg1] * g2[1 + jg2] + g1[1 + jg1] * g2[0 + jg2]
289 - g1[2 + jg1] * g2[3 + jg2] + g1[3 + jg1] * g2[2 + jg2]
290 - g1[4 + jg1] * g2[5 + jg2] + g1[5 + jg1] * g2[4 + jg2]);
299 const Field_G& u2,
int ex2,
double ff)
302 assert(ex1 < u1.
nex());
303 assert(ex2 < u2.
nex());
312 int Ndf = Nc2 *
m_Nc;
314 for (
int site = 0; site <
m_Nvol; ++site) {
315 int ig1 = Ndf * (site + m_Nvol * ex1);
316 int ig2 = Ndf * (site + m_Nvol * ex2);
317 int ig = Ndf * (site + m_Nvol * ex);
318 for (
int ic2 = 0; ic2 <
m_Nc; ++ic2) {
319 for (
int ic1 = 0; ic1 <
m_Nc; ++ic1) {
320 int jg2 = ic2 * Nc2 + ig2;
321 int jg1 = ic1 * 2 + ig1;
322 field[2 * ic2 + Nc2 * ic1 + ig] += ff *
323 (g1[0 + jg1] * g2[0 + jg2] - g1[1 + jg1] * g2[1 + jg2]
324 + g1[6 + jg1] * g2[2 + jg2] - g1[7 + jg1] * g2[3 + jg2]
325 + g1[12 + jg1] * g2[4 + jg2] - g1[13 + jg1] * g2[5 + jg2]);
326 field[2 * ic2 + 1 + Nc2 * ic1 + ig] += ff *
327 (-g1[0 + jg1] * g2[1 + jg2] - g1[1 + jg1] * g2[0 + jg2]
328 - g1[6 + jg1] * g2[3 + jg2] - g1[7 + jg1] * g2[2 + jg2]
329 - g1[12 + jg1] * g2[5 + jg2] - g1[13 + jg1] * g2[4 + jg2]);
343 for (
int site = 0; site <
m_Nvol; ++site) {
344 int ig = Ndf * (site + m_Nvol * ex);
346 for (
int a = 0; a <
m_Nc; ++a) {
347 for (
int b = a + 1; b <
m_Nc; ++b) {
348 double re =
field[2 * (m_Nc * a + b) + ig]
349 -
field[2 * (m_Nc * b + a) + ig];
350 double im =
field[2 * (m_Nc * a + b) + 1 + ig]
351 +
field[2 * (m_Nc * b + a) + 1 + ig];
353 field[2 * (m_Nc * a + b) + ig] = 0.5 * re;
354 field[2 * (m_Nc * a + b) + 1 + ig] = 0.5 * im;
356 field[2 * (m_Nc * b + a) + ig] = -0.5 * re;
357 field[2 * (m_Nc * b + a) + 1 + ig] = 0.5 * im;
361 for (
int cc = 0; cc <
m_Nc; ++cc) {
362 tr +=
field[2 * (m_Nc * cc + cc) + 1 + ig];
365 for (
int cc = 0; cc <
m_Nc; ++cc) {
366 field[2 * (m_Nc * cc + cc) + ig] = 0.0;
367 field[2 * (m_Nc * cc + cc) + 1 + ig] -= tr;
380 for (
int site = 0; site <
m_Nvol; ++site) {
381 int ig = Ndf * (site + m_Nvol * ex);
383 for (
int a = 0; a <
m_Nc; ++a) {
384 for (
int b = a; b <
m_Nc; ++b) {
385 double re =
field[2 * (m_Nc * a + b) + ig]
386 -
field[2 * (m_Nc * b + a) + ig];
387 double im =
field[2 * (m_Nc * a + b) + 1 + ig]
388 +
field[2 * (m_Nc * b + a) + 1 + ig];
390 field[2 * (m_Nc * a + b) + ig] = 0.5 * re;
391 field[2 * (m_Nc * a + b) + 1 + ig] = 0.5 * im;
393 field[2 * (m_Nc * b + a) + ig] = -0.5 * re;
394 field[2 * (m_Nc * b + a) + 1 + ig] = 0.5 * im;