27#define _propagator_assign(p, s, i, j) \
30 for (ITMP = 0; ITMP < NF; ++ITMP) { \
31 (p).c[ITMP].c[0].c[j].c[i] = (s).c[0].c[ITMP]; \
32 (p).c[ITMP].c[1].c[j].c[i] = (s).c[1].c[ITMP]; \
33 (p).c[ITMP].c[2].c[j].c[i] = (s).c[2].c[ITMP]; \
34 (p).c[ITMP].c[3].c[j].c[i] = (s).c[3].c[ITMP]; \
42#define _propagator_assign_spin_matrix(r, s, i) (r).c[i] = (s)
45#define _PROP_AT(r, a, alpha, beta, b) ((r).c[(a)].c[(alpha)].c[(beta)].c[(b)])
47#define _PROP_IDX(r, i, j) ((r).c[((i) / 4)].c[((i) % 4)].c[((j) % 4)].c[((j) / 4)])
50#define _propagator_zero(r) \
53 for (ITMP = 0; ITMP < NF; ++ITMP) { \
54 _spinmatrix_zero((r).c[ITMP]); \
59#define _propagator_one(r) \
60 _propagator_zero(r); \
63 for (ITMP = 0; ITMP < NF; ITMP++) { \
64 _complex_1(r.c[ITMP].c[0].c[0].c[ITMP]); \
65 _complex_1(r.c[ITMP].c[1].c[1].c[ITMP]); \
66 _complex_1(r.c[ITMP].c[2].c[2].c[ITMP]); \
67 _complex_1(r.c[ITMP].c[3].c[3].c[ITMP]); \
72#define _propagator_trace(k, r) \
76 for (ITMP = 0; ITMP < NF; ITMP++) { \
77 (k) += (r).c[ITMP].c[0].c[0].c[ITMP]; \
78 (k) += (r).c[ITMP].c[1].c[1].c[ITMP]; \
79 (k) += (r).c[ITMP].c[2].c[2].c[ITMP]; \
80 (k) += (r).c[ITMP].c[3].c[3].c[ITMP]; \
84#define _propagator_add(p, q, r) \
87 for (_a = 0; _a < NF; ++_a) \
88 for (_beta = 0; _beta < 4; ++_beta) { \
89 _spinor_add_f(p.c[_a].c[_beta], q.c[_a].c[_beta], r.c[_a].c[_beta]); \
93#define _propagator_sub(p, q, r) \
96 for (_a = 0; _a < NF; ++_a) \
97 for (_beta = 0; _beta < 4; ++_beta) { \
98 _spinor_sub_f(p.c[_a].c[_beta], q.c[_a].c[_beta], r.c[_a].c[_beta]); \
103#define _propagator_mul_assign(S, k) \
106 for (_a = 0; _a < NF; ++_a) \
107 for (_beta = 0; _beta < 4; ++_beta) { \
108 _spinor_mul_f((S).c[_a].c[_beta], k, (S).c[_a].c[_beta]); \
112#define _propagator_mulc_assign(S, k) \
115 for (ITMP = 0; ITMP < 4 * NF; ITMP++) { \
116 for (JTMP = 0; JTMP < 4 * NF; JTMP++) { \
118 tmp = _PROP_IDX(S, ITMP, JTMP); \
119 _complex_mul(_PROP_IDX(S, ITMP, JTMP), k, tmp); \
125#define _propagator_transpose(r, s) \
128 for (ITMP = 0; ITMP < 4 * NF; ITMP++) { \
129 for (JTMP = 0; JTMP < 4 * NF; JTMP++) { \
130 _PROP_IDX((r), ITMP, JTMP) = _PROP_IDX((s), JTMP, ITMP); \
136#define _propagator_dagger(r, s) \
139 for (ITMP = 0; ITMP < 4 * NF; ITMP++) { \
140 for (JTMP = 0; JTMP < 4 * NF; JTMP++) { \
141 _PROP_IDX((r), ITMP, JTMP) = conj(_PROP_IDX((s), JTMP, ITMP)); \
147#define _propagator_mul_spinor(s, r, t) \
150 int _a, _b, _alpha, _beta; \
151 for (_alpha = 0; _alpha < NF; ++_alpha) { \
152 for (_a = 0; _a < NF; ++_a) { \
153 for (_beta = 0; _beta < NF; ++_beta) { \
154 for (_b = 0; _b < NF; ++_b) { \
155 _complex_mul_assign((s).c[(_alpha)].c[(_a)], (r).c[(_a)].c[(_alpha)].c[(_beta)].c[(_b)], \
156 (t).c[(_beta)].c[(_b)]); \
164#define _propagator_leftmul_spinor(s, t, r) \
167 int _a, _b, _alpha, _beta; \
168 for (_beta = 0; _beta < NF; ++_beta) { \
169 for (_b = 0; _b < NF; ++_b) { \
170 for (_alpha = 0; _alpha < NF; ++_alpha) { \
171 for (_a = 0; _a < NF; ++_a) { \
172 _complex_mul_star_assign((s).c[(_beta)].c[(_b)], (t).c[(_alpha)].c[(_a)], \
173 (r).c[(_a)].c[(_alpha)].c[(_beta)].c[(_b)]); \
181#define _propagator_mul(Q, S, R) \
183 int _a, _b, _c, _alpha, _beta, _gamma; \
184 for (_a = 0; _a < NF; ++_a) { \
185 for (_b = 0; _b < NF; ++_b) { \
186 for (_alpha = 0; _alpha < 4; ++_alpha) { \
187 for (_beta = 0; _beta < 4; ++_beta) { \
188 _complex_0(Q.c[_a].c[_alpha].c[_beta].c[_b]); \
189 for (_c = 0; _c < NF; _c++) { \
190 for (_gamma = 0; _gamma < 4; _gamma++) { \
191 _complex_mul_assign(Q.c[_a].c[_alpha].c[_beta].c[_b], S.c[_a].c[_alpha].c[_gamma].c[_c], \
192 R.c[_c].c[_gamma].c[_beta].c[_b]); \
202#define _propagator_mul_trace(tr, S, R) \
204 int _a, _b, _alpha, _beta; \
206 for (_a = 0; _a < NF; ++_a) { \
207 for (_alpha = 0; _alpha < 4; ++_alpha) { \
208 for (_b = 0; _b < NF; ++_b) { \
209 for (_beta = 0; _beta < 4; ++_beta) { \
210 _complex_mul_assign(tr, S.c[_a].c[_alpha].c[_beta].c[_b], R.c[_b].c[_beta].c[_alpha].c[_a]); \
218#define _propagator_muldag_trace(tr, S, R) \
220 int _a, _b, _alpha, _beta; \
222 for (_a = 0; _a < NF; ++_a) { \
223 for (_alpha = 0; _alpha < 4; ++_alpha) { \
224 for (_b = 0; _b < NF; ++_b) { \
225 for (_beta = 0; _beta < 4; ++_beta) { \
226 _complex_prod_assign(tr, S.c[_b].c[_beta].c[_alpha].c[_a], R.c[_b].c[_beta].c[_alpha].c[_a]); \
234#define _suNf_prop_multiply(us, u, s) \
236 suNf_vector v1, v2; \
237 int _a, _b, _alpha, _beta; \
238 for (_beta = 0; _beta < 4; ++_beta) \
239 for (_alpha = 0; _alpha < 4; ++_alpha) { \
240 for (_b = 0; _b < NF; ++_b) { \
241 for (_a = 0; _a < NF; ++_a) { \
242 v1.c[_a] = (s).c[_a].c[_alpha].c[_beta].c[_b]; \
244 _suNf_multiply(v2, (u), v1); \
245 for (_a = 0; _a < NF; ++_a) { \
246 (us).c[_a].c[_alpha].c[_beta].c[_b] = v2.c[_a]; \
253#define _suNf_inverse_prop_multiply(us, u, s) \
255 suNf_vector v1, v2; \
256 int _a, _b, _alpha, _beta; \
257 for (_beta = 0; _beta < 4; ++_beta) \
258 for (_alpha = 0; _alpha < 4; ++_alpha) { \
259 for (_b = 0; _b < NF; ++_b) { \
260 for (_a = 0; _a < NF; ++_a) { \
261 v1.c[_a] = (s).c[_a].c[_alpha].c[_beta].c[_b]; \
263 _suNf_inverse_multiply(v2, (u), v1); \
264 for (_a = 0; _a < NF; ++_a) { \
265 (us).c[_a].c[_alpha].c[_beta].c[_b] = v2.c[_a]; \
271#define _id_propagator(p, q) \
274 for (ITMP = 0; ITMP < 4 * NF; ITMP++) { \
275 for (JTMP = 0; JTMP < 4 * NF; JTMP++) { \
276 _PROP_IDX((p), ITMP, JTMP) = _PROP_IDX((q), ITMP, JTMP); \
282#define _g0_propagator(p, q) \
285 for (_a = 0; _a < NF; ++_a) { \
286 _g0_spinmatrix((p).c[_a], (q).c[_a]); \
290#define _g1_propagator(p, q) \
293 for (_a = 0; _a < NF; ++_a) { \
294 _g1_spinmatrix((p).c[_a], (q).c[_a]); \
298#define _g2_propagator(p, q) \
301 for (_a = 0; _a < NF; ++_a) { \
302 _g2_spinmatrix((p).c[_a], (q).c[_a]); \
306#define _g3_propagator(p, q) \
309 for (_a = 0; _a < NF; ++_a) { \
310 _g3_spinmatrix((p).c[_a], (q).c[_a]); \
314#define _g5_propagator(p, q) \
317 for (_a = 0; _a < NF; ++_a) { \
318 _g5_spinmatrix((p).c[_a], (q).c[_a]); \
322#define _g5g0_propagator(p, q) \
325 for (_a = 0; _a < NF; ++_a) { \
326 _g5g0_spinmatrix((p).c[_a], (q).c[_a]); \
330#define _g5g3_propagator(p, q) \
333 for (_a = 0; _a < NF; ++_a) { \
334 _g5g3_spinmatrix((p).c[_a], (q).c[_a]); \
338#define _g5g1_propagator(p, q) \
341 for (_a = 0; _a < NF; ++_a) { \
342 _g5g1_spinmatrix((p).c[_a], (q).c[_a]); \
346#define _g5g2_propagator(p, q) \
349 for (_a = 0; _a < NF; ++_a) { \
350 _g5g2_spinmatrix(p.c[_a], q.c[_a]); \
355#define _propagator_g0(p, q) \
358 for (_a = 0; _a < NF; ++_a) { \
359 _spinmatrix_g0((p).c[_a], (q).c[_a]); \
363#define _propagator_g2(p, q) \
366 for (_a = 0; _a < NF; ++_a) { \
367 _spinmatrix_g2((p).c[_a], (q).c[_a]); \
371#define _propagator_g5(p, q) \
374 for (_a = 0; _a < NF; ++_a) { \
375 _spinmatrix_g5((p).c[_a], (q).c[_a]); \
379#define _propagator_g5g0(p, q) \
382 for (_a = 0; _a < NF; ++_a) { \
383 _spinmatrix_g5g0((p).c[_a], (q).c[_a]); \
387#define _g5g0g1_propagator(p, q) \
390 for (_a = 0; _a < NF; ++_a) { \
391 _g5g0g1_spinmatrix(p.c[_a], q.c[_a]); \
395#define _g5g0g2_propagator(p, q) \
398 for (_a = 0; _a < NF; ++_a) { \
399 _g5g0g2_spinmatrix((p).c[_a], (q).c[_a]); \
403#define _propagator_g5g0g2(p, q) \
406 for (_a = 0; _a < NF; ++_a) { \
407 _spinmatrix_g5g0g2((p).c[_a], (q).c[_a]); \
411#define _g5g0g3_propagator(p, q) \
414 for (_a = 0; _a < NF; ++_a) { \
415 _g5g0g3_spinmatrix(p.c[_a], q.c[_a]); \
419#define _propagator_g5g3(p, q) \
422 for (_a = 0; _a < NF; ++_a) { \
423 _spinmatrix_g5g3((p).c[_a], (q).c[_a]); \
427#define _propagator_g5g1(p, q) \
430 for (_a = 0; _a < NF; ++_a) { \
431 _spinmatrix_g5g1((p).c[_a], (q).c[_a]); \
435#define _g0g1_propagator(p, q) \
438 for (_a = 0; _a < NF; ++_a) { \
439 _g0g1_spinmatrix(p.c[_a], q.c[_a]); \
443#define _g0g2_propagator(p, q) \
446 for (_a = 0; _a < NF; ++_a) { \
447 _g0g2_spinmatrix((p).c[_a], (q).c[_a]); \
451#define _propagator_g0g2(p, q) \
454 for (_a = 0; _a < NF; ++_a) { \
455 _spinmatrix_g0g2((p).c[_a], (q).c[_a]); \
459#define _g0g3_propagator(p, q) \
462 for (_a = 0; _a < NF; ++_a) { \
463 _g0g3_spinmatrix(p.c[_a], q.c[_a]); \
Macros for gamma x spinor.
Type definitions and macros for spin_matrix.
Definition propagator.h:22
Definition spin_matrix.h:32