QUDA
v0.7.0
A library for QCD on GPUs
Main Page
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
quda
lib
dslash_core
tmc_core.h
Go to the documentation of this file.
1
#define APPLY_CLOVER_TWIST(c, a, reg)\
2
\
3
/* change to chiral basis*/
\
4
{\
5
spinorFloat a00_re = -reg##10_re - reg##30_re;\
6
spinorFloat a00_im = -reg##10_im - reg##30_im;\
7
spinorFloat a10_re = reg##00_re + reg##20_re;\
8
spinorFloat a10_im = reg##00_im + reg##20_im;\
9
spinorFloat a20_re = -reg##10_re + reg##30_re;\
10
spinorFloat a20_im = -reg##10_im + reg##30_im;\
11
spinorFloat a30_re = reg##00_re - reg##20_re;\
12
spinorFloat a30_im = reg##00_im - reg##20_im;\
13
\
14
reg##00_re = a00_re; reg##00_im = a00_im;\
15
reg##10_re = a10_re; reg##10_im = a10_im;\
16
reg##20_re = a20_re; reg##20_im = a20_im;\
17
reg##30_re = a30_re; reg##30_im = a30_im;\
18
}\
19
\
20
{\
21
spinorFloat a01_re = -reg##11_re - reg##31_re;\
22
spinorFloat a01_im = -reg##11_im - reg##31_im;\
23
spinorFloat a11_re = reg##01_re + reg##21_re;\
24
spinorFloat a11_im = reg##01_im + reg##21_im;\
25
spinorFloat a21_re = -reg##11_re + reg##31_re;\
26
spinorFloat a21_im = -reg##11_im + reg##31_im;\
27
spinorFloat a31_re = reg##01_re - reg##21_re;\
28
spinorFloat a31_im = reg##01_im - reg##21_im;\
29
\
30
reg##01_re = a01_re; reg##01_im = a01_im;\
31
reg##11_re = a11_re; reg##11_im = a11_im;\
32
reg##21_re = a21_re; reg##21_im = a21_im;\
33
reg##31_re = a31_re; reg##31_im = a31_im;\
34
}\
35
\
36
{\
37
spinorFloat a02_re = -reg##12_re - reg##32_re;\
38
spinorFloat a02_im = -reg##12_im - reg##32_im;\
39
spinorFloat a12_re = reg##02_re + reg##22_re;\
40
spinorFloat a12_im = reg##02_im + reg##22_im;\
41
spinorFloat a22_re = -reg##12_re + reg##32_re;\
42
spinorFloat a22_im = -reg##12_im + reg##32_im;\
43
spinorFloat a32_re = reg##02_re - reg##22_re;\
44
spinorFloat a32_im = reg##02_im - reg##22_im;\
45
\
46
reg##02_re = a02_re; reg##02_im = a02_im;\
47
reg##12_re = a12_re; reg##12_im = a12_im;\
48
reg##22_re = a22_re; reg##22_im = a22_im;\
49
reg##32_re = a32_re; reg##32_im = a32_im;\
50
}\
51
\
52
/* apply first chiral block*/
\
53
{\
54
ASSN_CLOVER(TMCLOVERTEX, 0)\
55
spinorFloat a00_re = 0; spinorFloat a00_im = 0;\
56
spinorFloat a01_re = 0; spinorFloat a01_im = 0;\
57
spinorFloat a02_re = 0; spinorFloat a02_im = 0;\
58
spinorFloat a10_re = 0; spinorFloat a10_im = 0;\
59
spinorFloat a11_re = 0; spinorFloat a11_im = 0;\
60
spinorFloat a12_re = 0; spinorFloat a12_im = 0;\
61
\
62
a00_re += c##00_00_re * reg##00_re;\
63
a00_im += c##00_00_re * reg##00_im;\
64
a00_re += c##00_01_re * reg##01_re;\
65
a00_re -= c##00_01_im * reg##01_im;\
66
a00_im += c##00_01_re * reg##01_im;\
67
a00_im += c##00_01_im * reg##01_re;\
68
a00_re += c##00_02_re * reg##02_re;\
69
a00_re -= c##00_02_im * reg##02_im;\
70
a00_im += c##00_02_re * reg##02_im;\
71
a00_im += c##00_02_im * reg##02_re;\
72
a00_re += c##00_10_re * reg##10_re;\
73
a00_re -= c##00_10_im * reg##10_im;\
74
a00_im += c##00_10_re * reg##10_im;\
75
a00_im += c##00_10_im * reg##10_re;\
76
a00_re += c##00_11_re * reg##11_re;\
77
a00_re -= c##00_11_im * reg##11_im;\
78
a00_im += c##00_11_re * reg##11_im;\
79
a00_im += c##00_11_im * reg##11_re;\
80
a00_re += c##00_12_re * reg##12_re;\
81
a00_re -= c##00_12_im * reg##12_im;\
82
a00_im += c##00_12_re * reg##12_im;\
83
a00_im += c##00_12_im * reg##12_re;\
84
\
85
a01_re += c##01_00_re * reg##00_re;\
86
a01_re -= c##01_00_im * reg##00_im;\
87
a01_im += c##01_00_re * reg##00_im;\
88
a01_im += c##01_00_im * reg##00_re;\
89
a01_re += c##01_01_re * reg##01_re;\
90
a01_im += c##01_01_re * reg##01_im;\
91
a01_re += c##01_02_re * reg##02_re;\
92
a01_re -= c##01_02_im * reg##02_im;\
93
a01_im += c##01_02_re * reg##02_im;\
94
a01_im += c##01_02_im * reg##02_re;\
95
a01_re += c##01_10_re * reg##10_re;\
96
a01_re -= c##01_10_im * reg##10_im;\
97
a01_im += c##01_10_re * reg##10_im;\
98
a01_im += c##01_10_im * reg##10_re;\
99
a01_re += c##01_11_re * reg##11_re;\
100
a01_re -= c##01_11_im * reg##11_im;\
101
a01_im += c##01_11_re * reg##11_im;\
102
a01_im += c##01_11_im * reg##11_re;\
103
a01_re += c##01_12_re * reg##12_re;\
104
a01_re -= c##01_12_im * reg##12_im;\
105
a01_im += c##01_12_re * reg##12_im;\
106
a01_im += c##01_12_im * reg##12_re;\
107
\
108
a02_re += c##02_00_re * reg##00_re;\
109
a02_re -= c##02_00_im * reg##00_im;\
110
a02_im += c##02_00_re * reg##00_im;\
111
a02_im += c##02_00_im * reg##00_re;\
112
a02_re += c##02_01_re * reg##01_re;\
113
a02_re -= c##02_01_im * reg##01_im;\
114
a02_im += c##02_01_re * reg##01_im;\
115
a02_im += c##02_01_im * reg##01_re;\
116
a02_re += c##02_02_re * reg##02_re;\
117
a02_im += c##02_02_re * reg##02_im;\
118
a02_re += c##02_10_re * reg##10_re;\
119
a02_re -= c##02_10_im * reg##10_im;\
120
a02_im += c##02_10_re * reg##10_im;\
121
a02_im += c##02_10_im * reg##10_re;\
122
a02_re += c##02_11_re * reg##11_re;\
123
a02_re -= c##02_11_im * reg##11_im;\
124
a02_im += c##02_11_re * reg##11_im;\
125
a02_im += c##02_11_im * reg##11_re;\
126
a02_re += c##02_12_re * reg##12_re;\
127
a02_re -= c##02_12_im * reg##12_im;\
128
a02_im += c##02_12_re * reg##12_im;\
129
a02_im += c##02_12_im * reg##12_re;\
130
\
131
a10_re += c##10_00_re * reg##00_re;\
132
a10_re -= c##10_00_im * reg##00_im;\
133
a10_im += c##10_00_re * reg##00_im;\
134
a10_im += c##10_00_im * reg##00_re;\
135
a10_re += c##10_01_re * reg##01_re;\
136
a10_re -= c##10_01_im * reg##01_im;\
137
a10_im += c##10_01_re * reg##01_im;\
138
a10_im += c##10_01_im * reg##01_re;\
139
a10_re += c##10_02_re * reg##02_re;\
140
a10_re -= c##10_02_im * reg##02_im;\
141
a10_im += c##10_02_re * reg##02_im;\
142
a10_im += c##10_02_im * reg##02_re;\
143
a10_re += c##10_10_re * reg##10_re;\
144
a10_im += c##10_10_re * reg##10_im;\
145
a10_re += c##10_11_re * reg##11_re;\
146
a10_re -= c##10_11_im * reg##11_im;\
147
a10_im += c##10_11_re * reg##11_im;\
148
a10_im += c##10_11_im * reg##11_re;\
149
a10_re += c##10_12_re * reg##12_re;\
150
a10_re -= c##10_12_im * reg##12_im;\
151
a10_im += c##10_12_re * reg##12_im;\
152
a10_im += c##10_12_im * reg##12_re;\
153
\
154
a11_re += c##11_00_re * reg##00_re;\
155
a11_re -= c##11_00_im * reg##00_im;\
156
a11_im += c##11_00_re * reg##00_im;\
157
a11_im += c##11_00_im * reg##00_re;\
158
a11_re += c##11_01_re * reg##01_re;\
159
a11_re -= c##11_01_im * reg##01_im;\
160
a11_im += c##11_01_re * reg##01_im;\
161
a11_im += c##11_01_im * reg##01_re;\
162
a11_re += c##11_02_re * reg##02_re;\
163
a11_re -= c##11_02_im * reg##02_im;\
164
a11_im += c##11_02_re * reg##02_im;\
165
a11_im += c##11_02_im * reg##02_re;\
166
a11_re += c##11_10_re * reg##10_re;\
167
a11_re -= c##11_10_im * reg##10_im;\
168
a11_im += c##11_10_re * reg##10_im;\
169
a11_im += c##11_10_im * reg##10_re;\
170
a11_re += c##11_11_re * reg##11_re;\
171
a11_im += c##11_11_re * reg##11_im;\
172
a11_re += c##11_12_re * reg##12_re;\
173
a11_re -= c##11_12_im * reg##12_im;\
174
a11_im += c##11_12_re * reg##12_im;\
175
a11_im += c##11_12_im * reg##12_re;\
176
\
177
a12_re += c##12_00_re * reg##00_re;\
178
a12_re -= c##12_00_im * reg##00_im;\
179
a12_im += c##12_00_re * reg##00_im;\
180
a12_im += c##12_00_im * reg##00_re;\
181
a12_re += c##12_01_re * reg##01_re;\
182
a12_re -= c##12_01_im * reg##01_im;\
183
a12_im += c##12_01_re * reg##01_im;\
184
a12_im += c##12_01_im * reg##01_re;\
185
a12_re += c##12_02_re * reg##02_re;\
186
a12_re -= c##12_02_im * reg##02_im;\
187
a12_im += c##12_02_re * reg##02_im;\
188
a12_im += c##12_02_im * reg##02_re;\
189
a12_re += c##12_10_re * reg##10_re;\
190
a12_re -= c##12_10_im * reg##10_im;\
191
a12_im += c##12_10_re * reg##10_im;\
192
a12_im += c##12_10_im * reg##10_re;\
193
a12_re += c##12_11_re * reg##11_re;\
194
a12_re -= c##12_11_im * reg##11_im;\
195
a12_im += c##12_11_re * reg##11_im;\
196
a12_im += c##12_11_im * reg##11_re;\
197
a12_re += c##12_12_re * reg##12_re;\
198
a12_im += c##12_12_re * reg##12_im;\
199
\
200
/*apply i*(2*kappa*mu=a)*gamma5*/
\
201
a00_re = a00_re - .5*a* reg##00_im; a00_im = a00_im + .5*a* reg##00_re;\
202
a01_re = a01_re - .5*a* reg##01_im; a01_im = a01_im + .5*a* reg##01_re;\
203
a02_re = a02_re - .5*a* reg##02_im; a02_im = a02_im + .5*a* reg##02_re;\
204
a10_re = a10_re - .5*a* reg##10_im; a10_im = a10_im + .5*a* reg##10_re;\
205
a11_re = a11_re - .5*a* reg##11_im; a11_im = a11_im + .5*a* reg##11_re;\
206
a12_re = a12_re - .5*a* reg##12_im; a12_im = a12_im + .5*a* reg##12_re;\
207
reg##00_re = a00_re; reg##00_im = a00_im;\
208
reg##01_re = a01_re; reg##01_im = a01_im;\
209
reg##02_re = a02_re; reg##02_im = a02_im;\
210
reg##10_re = a10_re; reg##10_im = a10_im;\
211
reg##11_re = a11_re; reg##11_im = a11_im;\
212
reg##12_re = a12_re; reg##12_im = a12_im;\
213
\
214
}\
215
\
216
/* apply second chiral block*/
\
217
{\
218
ASSN_CLOVER(TMCLOVERTEX, 1)\
219
spinorFloat a20_re = 0; spinorFloat a20_im = 0;\
220
spinorFloat a21_re = 0; spinorFloat a21_im = 0;\
221
spinorFloat a22_re = 0; spinorFloat a22_im = 0;\
222
spinorFloat a30_re = 0; spinorFloat a30_im = 0;\
223
spinorFloat a31_re = 0; spinorFloat a31_im = 0;\
224
spinorFloat a32_re = 0; spinorFloat a32_im = 0;\
225
\
226
a20_re += c##20_20_re * reg##20_re;\
227
a20_im += c##20_20_re * reg##20_im;\
228
a20_re += c##20_21_re * reg##21_re;\
229
a20_re -= c##20_21_im * reg##21_im;\
230
a20_im += c##20_21_re * reg##21_im;\
231
a20_im += c##20_21_im * reg##21_re;\
232
a20_re += c##20_22_re * reg##22_re;\
233
a20_re -= c##20_22_im * reg##22_im;\
234
a20_im += c##20_22_re * reg##22_im;\
235
a20_im += c##20_22_im * reg##22_re;\
236
a20_re += c##20_30_re * reg##30_re;\
237
a20_re -= c##20_30_im * reg##30_im;\
238
a20_im += c##20_30_re * reg##30_im;\
239
a20_im += c##20_30_im * reg##30_re;\
240
a20_re += c##20_31_re * reg##31_re;\
241
a20_re -= c##20_31_im * reg##31_im;\
242
a20_im += c##20_31_re * reg##31_im;\
243
a20_im += c##20_31_im * reg##31_re;\
244
a20_re += c##20_32_re * reg##32_re;\
245
a20_re -= c##20_32_im * reg##32_im;\
246
a20_im += c##20_32_re * reg##32_im;\
247
a20_im += c##20_32_im * reg##32_re;\
248
\
249
a21_re += c##21_20_re * reg##20_re;\
250
a21_re -= c##21_20_im * reg##20_im;\
251
a21_im += c##21_20_re * reg##20_im;\
252
a21_im += c##21_20_im * reg##20_re;\
253
a21_re += c##21_21_re * reg##21_re;\
254
a21_im += c##21_21_re * reg##21_im;\
255
a21_re += c##21_22_re * reg##22_re;\
256
a21_re -= c##21_22_im * reg##22_im;\
257
a21_im += c##21_22_re * reg##22_im;\
258
a21_im += c##21_22_im * reg##22_re;\
259
a21_re += c##21_30_re * reg##30_re;\
260
a21_re -= c##21_30_im * reg##30_im;\
261
a21_im += c##21_30_re * reg##30_im;\
262
a21_im += c##21_30_im * reg##30_re;\
263
a21_re += c##21_31_re * reg##31_re;\
264
a21_re -= c##21_31_im * reg##31_im;\
265
a21_im += c##21_31_re * reg##31_im;\
266
a21_im += c##21_31_im * reg##31_re;\
267
a21_re += c##21_32_re * reg##32_re;\
268
a21_re -= c##21_32_im * reg##32_im;\
269
a21_im += c##21_32_re * reg##32_im;\
270
a21_im += c##21_32_im * reg##32_re;\
271
\
272
a22_re += c##22_20_re * reg##20_re;\
273
a22_re -= c##22_20_im * reg##20_im;\
274
a22_im += c##22_20_re * reg##20_im;\
275
a22_im += c##22_20_im * reg##20_re;\
276
a22_re += c##22_21_re * reg##21_re;\
277
a22_re -= c##22_21_im * reg##21_im;\
278
a22_im += c##22_21_re * reg##21_im;\
279
a22_im += c##22_21_im * reg##21_re;\
280
a22_re += c##22_22_re * reg##22_re;\
281
a22_im += c##22_22_re * reg##22_im;\
282
a22_re += c##22_30_re * reg##30_re;\
283
a22_re -= c##22_30_im * reg##30_im;\
284
a22_im += c##22_30_re * reg##30_im;\
285
a22_im += c##22_30_im * reg##30_re;\
286
a22_re += c##22_31_re * reg##31_re;\
287
a22_re -= c##22_31_im * reg##31_im;\
288
a22_im += c##22_31_re * reg##31_im;\
289
a22_im += c##22_31_im * reg##31_re;\
290
a22_re += c##22_32_re * reg##32_re;\
291
a22_re -= c##22_32_im * reg##32_im;\
292
a22_im += c##22_32_re * reg##32_im;\
293
a22_im += c##22_32_im * reg##32_re;\
294
\
295
a30_re += c##30_20_re * reg##20_re;\
296
a30_re -= c##30_20_im * reg##20_im;\
297
a30_im += c##30_20_re * reg##20_im;\
298
a30_im += c##30_20_im * reg##20_re;\
299
a30_re += c##30_21_re * reg##21_re;\
300
a30_re -= c##30_21_im * reg##21_im;\
301
a30_im += c##30_21_re * reg##21_im;\
302
a30_im += c##30_21_im * reg##21_re;\
303
a30_re += c##30_22_re * reg##22_re;\
304
a30_re -= c##30_22_im * reg##22_im;\
305
a30_im += c##30_22_re * reg##22_im;\
306
a30_im += c##30_22_im * reg##22_re;\
307
a30_re += c##30_30_re * reg##30_re;\
308
a30_im += c##30_30_re * reg##30_im;\
309
a30_re += c##30_31_re * reg##31_re;\
310
a30_re -= c##30_31_im * reg##31_im;\
311
a30_im += c##30_31_re * reg##31_im;\
312
a30_im += c##30_31_im * reg##31_re;\
313
a30_re += c##30_32_re * reg##32_re;\
314
a30_re -= c##30_32_im * reg##32_im;\
315
a30_im += c##30_32_re * reg##32_im;\
316
a30_im += c##30_32_im * reg##32_re;\
317
\
318
a31_re += c##31_20_re * reg##20_re;\
319
a31_re -= c##31_20_im * reg##20_im;\
320
a31_im += c##31_20_re * reg##20_im;\
321
a31_im += c##31_20_im * reg##20_re;\
322
a31_re += c##31_21_re * reg##21_re;\
323
a31_re -= c##31_21_im * reg##21_im;\
324
a31_im += c##31_21_re * reg##21_im;\
325
a31_im += c##31_21_im * reg##21_re;\
326
a31_re += c##31_22_re * reg##22_re;\
327
a31_re -= c##31_22_im * reg##22_im;\
328
a31_im += c##31_22_re * reg##22_im;\
329
a31_im += c##31_22_im * reg##22_re;\
330
a31_re += c##31_30_re * reg##30_re;\
331
a31_re -= c##31_30_im * reg##30_im;\
332
a31_im += c##31_30_re * reg##30_im;\
333
a31_im += c##31_30_im * reg##30_re;\
334
a31_re += c##31_31_re * reg##31_re;\
335
a31_im += c##31_31_re * reg##31_im;\
336
a31_re += c##31_32_re * reg##32_re;\
337
a31_re -= c##31_32_im * reg##32_im;\
338
a31_im += c##31_32_re * reg##32_im;\
339
a31_im += c##31_32_im * reg##32_re;\
340
\
341
a32_re += c##32_20_re * reg##20_re;\
342
a32_re -= c##32_20_im * reg##20_im;\
343
a32_im += c##32_20_re * reg##20_im;\
344
a32_im += c##32_20_im * reg##20_re;\
345
a32_re += c##32_21_re * reg##21_re;\
346
a32_re -= c##32_21_im * reg##21_im;\
347
a32_im += c##32_21_re * reg##21_im;\
348
a32_im += c##32_21_im * reg##21_re;\
349
a32_re += c##32_22_re * reg##22_re;\
350
a32_re -= c##32_22_im * reg##22_im;\
351
a32_im += c##32_22_re * reg##22_im;\
352
a32_im += c##32_22_im * reg##22_re;\
353
a32_re += c##32_30_re * reg##30_re;\
354
a32_re -= c##32_30_im * reg##30_im;\
355
a32_im += c##32_30_re * reg##30_im;\
356
a32_im += c##32_30_im * reg##30_re;\
357
a32_re += c##32_31_re * reg##31_re;\
358
a32_re -= c##32_31_im * reg##31_im;\
359
a32_im += c##32_31_re * reg##31_im;\
360
a32_im += c##32_31_im * reg##31_re;\
361
a32_re += c##32_32_re * reg##32_re;\
362
a32_im += c##32_32_re * reg##32_im;\
363
\
364
/*apply i*(2*kappa*mu=a)*gamma5*/
\
365
a20_re = a20_re + .5*a* reg##20_im; a20_im = a20_im - .5*a* reg##20_re;\
366
a21_re = a21_re + .5*a* reg##21_im; a21_im = a21_im - .5*a* reg##21_re;\
367
a22_re = a22_re + .5*a* reg##22_im; a22_im = a22_im - .5*a* reg##22_re;\
368
a30_re = a30_re + .5*a* reg##30_im; a30_im = a30_im - .5*a* reg##30_re;\
369
a31_re = a31_re + .5*a* reg##31_im; a31_im = a31_im - .5*a* reg##31_re;\
370
a32_re = a32_re + .5*a* reg##32_im; a32_im = a32_im - .5*a* reg##32_re;\
371
reg##20_re = a20_re; reg##20_im = a20_im;\
372
reg##21_re = a21_re; reg##21_im = a21_im;\
373
reg##22_re = a22_re; reg##22_im = a22_im;\
374
reg##30_re = a30_re; reg##30_im = a30_im;\
375
reg##31_re = a31_re; reg##31_im = a31_im;\
376
reg##32_re = a32_re; reg##32_im = a32_im;\
377
\
378
}\
379
\
380
/* change back from chiral basis*/
\
381
/* (note: required factor of 1/2 is included in clover term normalization)*/
\
382
{\
383
spinorFloat a00_re = reg##10_re + reg##30_re;\
384
spinorFloat a00_im = reg##10_im + reg##30_im;\
385
spinorFloat a10_re = -reg##00_re - reg##20_re;\
386
spinorFloat a10_im = -reg##00_im - reg##20_im;\
387
spinorFloat a20_re = reg##10_re - reg##30_re;\
388
spinorFloat a20_im = reg##10_im - reg##30_im;\
389
spinorFloat a30_re = -reg##00_re + reg##20_re;\
390
spinorFloat a30_im = -reg##00_im + reg##20_im;\
391
\
392
reg##00_re = a00_re; reg##00_im = a00_im;\
393
reg##10_re = a10_re; reg##10_im = a10_im;\
394
reg##20_re = a20_re; reg##20_im = a20_im;\
395
reg##30_re = a30_re; reg##30_im = a30_im;\
396
}\
397
\
398
{\
399
spinorFloat a01_re = reg##11_re + reg##31_re;\
400
spinorFloat a01_im = reg##11_im + reg##31_im;\
401
spinorFloat a11_re = -reg##01_re - reg##21_re;\
402
spinorFloat a11_im = -reg##01_im - reg##21_im;\
403
spinorFloat a21_re = reg##11_re - reg##31_re;\
404
spinorFloat a21_im = reg##11_im - reg##31_im;\
405
spinorFloat a31_re = -reg##01_re + reg##21_re;\
406
spinorFloat a31_im = -reg##01_im + reg##21_im;\
407
\
408
reg##01_re = a01_re; reg##01_im = a01_im;\
409
reg##11_re = a11_re; reg##11_im = a11_im;\
410
reg##21_re = a21_re; reg##21_im = a21_im;\
411
reg##31_re = a31_re; reg##31_im = a31_im;\
412
}\
413
\
414
{\
415
spinorFloat a02_re = reg##12_re + reg##32_re;\
416
spinorFloat a02_im = reg##12_im + reg##32_im;\
417
spinorFloat a12_re = -reg##02_re - reg##22_re;\
418
spinorFloat a12_im = -reg##02_im - reg##22_im;\
419
spinorFloat a22_re = reg##12_re - reg##32_re;\
420
spinorFloat a22_im = reg##12_im - reg##32_im;\
421
spinorFloat a32_re = -reg##02_re + reg##22_re;\
422
spinorFloat a32_im = -reg##02_im + reg##22_im;\
423
\
424
reg##02_re = a02_re; reg##02_im = a02_im;\
425
reg##12_re = a12_re; reg##12_im = a12_im;\
426
reg##22_re = a22_re; reg##22_im = a22_im;\
427
reg##32_re = a32_re; reg##32_im = a32_im;\
428
}\
429
\
430
431
432
#define APPLY_CLOVER_TWIST_INV(c, cinv, a, reg)\
433
\
434
/* change to chiral basis*/
\
435
{\
436
spinorFloat a00_re = -reg##10_re - reg##30_re;\
437
spinorFloat a00_im = -reg##10_im - reg##30_im;\
438
spinorFloat a10_re = reg##00_re + reg##20_re;\
439
spinorFloat a10_im = reg##00_im + reg##20_im;\
440
spinorFloat a20_re = -reg##10_re + reg##30_re;\
441
spinorFloat a20_im = -reg##10_im + reg##30_im;\
442
spinorFloat a30_re = reg##00_re - reg##20_re;\
443
spinorFloat a30_im = reg##00_im - reg##20_im;\
444
\
445
reg##00_re = a00_re; reg##00_im = a00_im;\
446
reg##10_re = a10_re; reg##10_im = a10_im;\
447
reg##20_re = a20_re; reg##20_im = a20_im;\
448
reg##30_re = a30_re; reg##30_im = a30_im;\
449
}\
450
\
451
{\
452
spinorFloat a01_re = -reg##11_re - reg##31_re;\
453
spinorFloat a01_im = -reg##11_im - reg##31_im;\
454
spinorFloat a11_re = reg##01_re + reg##21_re;\
455
spinorFloat a11_im = reg##01_im + reg##21_im;\
456
spinorFloat a21_re = -reg##11_re + reg##31_re;\
457
spinorFloat a21_im = -reg##11_im + reg##31_im;\
458
spinorFloat a31_re = reg##01_re - reg##21_re;\
459
spinorFloat a31_im = reg##01_im - reg##21_im;\
460
\
461
reg##01_re = a01_re; reg##01_im = a01_im;\
462
reg##11_re = a11_re; reg##11_im = a11_im;\
463
reg##21_re = a21_re; reg##21_im = a21_im;\
464
reg##31_re = a31_re; reg##31_im = a31_im;\
465
}\
466
\
467
{\
468
spinorFloat a02_re = -reg##12_re - reg##32_re;\
469
spinorFloat a02_im = -reg##12_im - reg##32_im;\
470
spinorFloat a12_re = reg##02_re + reg##22_re;\
471
spinorFloat a12_im = reg##02_im + reg##22_im;\
472
spinorFloat a22_re = -reg##12_re + reg##32_re;\
473
spinorFloat a22_im = -reg##12_im + reg##32_im;\
474
spinorFloat a32_re = reg##02_re - reg##22_re;\
475
spinorFloat a32_im = reg##02_im - reg##22_im;\
476
\
477
reg##02_re = a02_re; reg##02_im = a02_im;\
478
reg##12_re = a12_re; reg##12_im = a12_im;\
479
reg##22_re = a22_re; reg##22_im = a22_im;\
480
reg##32_re = a32_re; reg##32_im = a32_im;\
481
}\
482
\
483
/* apply first chiral block*/
\
484
{\
485
ASSN_CLOVER(TMCLOVERTEX, 0)\
486
spinorFloat a00_re = 0; spinorFloat a00_im = 0;\
487
spinorFloat a01_re = 0; spinorFloat a01_im = 0;\
488
spinorFloat a02_re = 0; spinorFloat a02_im = 0;\
489
spinorFloat a10_re = 0; spinorFloat a10_im = 0;\
490
spinorFloat a11_re = 0; spinorFloat a11_im = 0;\
491
spinorFloat a12_re = 0; spinorFloat a12_im = 0;\
492
\
493
a00_re += c##00_00_re * reg##00_re;\
494
a00_im += c##00_00_re * reg##00_im;\
495
a00_re += c##00_01_re * reg##01_re;\
496
a00_re -= c##00_01_im * reg##01_im;\
497
a00_im += c##00_01_re * reg##01_im;\
498
a00_im += c##00_01_im * reg##01_re;\
499
a00_re += c##00_02_re * reg##02_re;\
500
a00_re -= c##00_02_im * reg##02_im;\
501
a00_im += c##00_02_re * reg##02_im;\
502
a00_im += c##00_02_im * reg##02_re;\
503
a00_re += c##00_10_re * reg##10_re;\
504
a00_re -= c##00_10_im * reg##10_im;\
505
a00_im += c##00_10_re * reg##10_im;\
506
a00_im += c##00_10_im * reg##10_re;\
507
a00_re += c##00_11_re * reg##11_re;\
508
a00_re -= c##00_11_im * reg##11_im;\
509
a00_im += c##00_11_re * reg##11_im;\
510
a00_im += c##00_11_im * reg##11_re;\
511
a00_re += c##00_12_re * reg##12_re;\
512
a00_re -= c##00_12_im * reg##12_im;\
513
a00_im += c##00_12_re * reg##12_im;\
514
a00_im += c##00_12_im * reg##12_re;\
515
\
516
a01_re += c##01_00_re * reg##00_re;\
517
a01_re -= c##01_00_im * reg##00_im;\
518
a01_im += c##01_00_re * reg##00_im;\
519
a01_im += c##01_00_im * reg##00_re;\
520
a01_re += c##01_01_re * reg##01_re;\
521
a01_im += c##01_01_re * reg##01_im;\
522
a01_re += c##01_02_re * reg##02_re;\
523
a01_re -= c##01_02_im * reg##02_im;\
524
a01_im += c##01_02_re * reg##02_im;\
525
a01_im += c##01_02_im * reg##02_re;\
526
a01_re += c##01_10_re * reg##10_re;\
527
a01_re -= c##01_10_im * reg##10_im;\
528
a01_im += c##01_10_re * reg##10_im;\
529
a01_im += c##01_10_im * reg##10_re;\
530
a01_re += c##01_11_re * reg##11_re;\
531
a01_re -= c##01_11_im * reg##11_im;\
532
a01_im += c##01_11_re * reg##11_im;\
533
a01_im += c##01_11_im * reg##11_re;\
534
a01_re += c##01_12_re * reg##12_re;\
535
a01_re -= c##01_12_im * reg##12_im;\
536
a01_im += c##01_12_re * reg##12_im;\
537
a01_im += c##01_12_im * reg##12_re;\
538
\
539
a02_re += c##02_00_re * reg##00_re;\
540
a02_re -= c##02_00_im * reg##00_im;\
541
a02_im += c##02_00_re * reg##00_im;\
542
a02_im += c##02_00_im * reg##00_re;\
543
a02_re += c##02_01_re * reg##01_re;\
544
a02_re -= c##02_01_im * reg##01_im;\
545
a02_im += c##02_01_re * reg##01_im;\
546
a02_im += c##02_01_im * reg##01_re;\
547
a02_re += c##02_02_re * reg##02_re;\
548
a02_im += c##02_02_re * reg##02_im;\
549
a02_re += c##02_10_re * reg##10_re;\
550
a02_re -= c##02_10_im * reg##10_im;\
551
a02_im += c##02_10_re * reg##10_im;\
552
a02_im += c##02_10_im * reg##10_re;\
553
a02_re += c##02_11_re * reg##11_re;\
554
a02_re -= c##02_11_im * reg##11_im;\
555
a02_im += c##02_11_re * reg##11_im;\
556
a02_im += c##02_11_im * reg##11_re;\
557
a02_re += c##02_12_re * reg##12_re;\
558
a02_re -= c##02_12_im * reg##12_im;\
559
a02_im += c##02_12_re * reg##12_im;\
560
a02_im += c##02_12_im * reg##12_re;\
561
\
562
a10_re += c##10_00_re * reg##00_re;\
563
a10_re -= c##10_00_im * reg##00_im;\
564
a10_im += c##10_00_re * reg##00_im;\
565
a10_im += c##10_00_im * reg##00_re;\
566
a10_re += c##10_01_re * reg##01_re;\
567
a10_re -= c##10_01_im * reg##01_im;\
568
a10_im += c##10_01_re * reg##01_im;\
569
a10_im += c##10_01_im * reg##01_re;\
570
a10_re += c##10_02_re * reg##02_re;\
571
a10_re -= c##10_02_im * reg##02_im;\
572
a10_im += c##10_02_re * reg##02_im;\
573
a10_im += c##10_02_im * reg##02_re;\
574
a10_re += c##10_10_re * reg##10_re;\
575
a10_im += c##10_10_re * reg##10_im;\
576
a10_re += c##10_11_re * reg##11_re;\
577
a10_re -= c##10_11_im * reg##11_im;\
578
a10_im += c##10_11_re * reg##11_im;\
579
a10_im += c##10_11_im * reg##11_re;\
580
a10_re += c##10_12_re * reg##12_re;\
581
a10_re -= c##10_12_im * reg##12_im;\
582
a10_im += c##10_12_re * reg##12_im;\
583
a10_im += c##10_12_im * reg##12_re;\
584
\
585
a11_re += c##11_00_re * reg##00_re;\
586
a11_re -= c##11_00_im * reg##00_im;\
587
a11_im += c##11_00_re * reg##00_im;\
588
a11_im += c##11_00_im * reg##00_re;\
589
a11_re += c##11_01_re * reg##01_re;\
590
a11_re -= c##11_01_im * reg##01_im;\
591
a11_im += c##11_01_re * reg##01_im;\
592
a11_im += c##11_01_im * reg##01_re;\
593
a11_re += c##11_02_re * reg##02_re;\
594
a11_re -= c##11_02_im * reg##02_im;\
595
a11_im += c##11_02_re * reg##02_im;\
596
a11_im += c##11_02_im * reg##02_re;\
597
a11_re += c##11_10_re * reg##10_re;\
598
a11_re -= c##11_10_im * reg##10_im;\
599
a11_im += c##11_10_re * reg##10_im;\
600
a11_im += c##11_10_im * reg##10_re;\
601
a11_re += c##11_11_re * reg##11_re;\
602
a11_im += c##11_11_re * reg##11_im;\
603
a11_re += c##11_12_re * reg##12_re;\
604
a11_re -= c##11_12_im * reg##12_im;\
605
a11_im += c##11_12_re * reg##12_im;\
606
a11_im += c##11_12_im * reg##12_re;\
607
\
608
a12_re += c##12_00_re * reg##00_re;\
609
a12_re -= c##12_00_im * reg##00_im;\
610
a12_im += c##12_00_re * reg##00_im;\
611
a12_im += c##12_00_im * reg##00_re;\
612
a12_re += c##12_01_re * reg##01_re;\
613
a12_re -= c##12_01_im * reg##01_im;\
614
a12_im += c##12_01_re * reg##01_im;\
615
a12_im += c##12_01_im * reg##01_re;\
616
a12_re += c##12_02_re * reg##02_re;\
617
a12_re -= c##12_02_im * reg##02_im;\
618
a12_im += c##12_02_re * reg##02_im;\
619
a12_im += c##12_02_im * reg##02_re;\
620
a12_re += c##12_10_re * reg##10_re;\
621
a12_re -= c##12_10_im * reg##10_im;\
622
a12_im += c##12_10_re * reg##10_im;\
623
a12_im += c##12_10_im * reg##10_re;\
624
a12_re += c##12_11_re * reg##11_re;\
625
a12_re -= c##12_11_im * reg##11_im;\
626
a12_im += c##12_11_re * reg##11_im;\
627
a12_im += c##12_11_im * reg##11_re;\
628
a12_re += c##12_12_re * reg##12_re;\
629
a12_im += c##12_12_re * reg##12_im;\
630
\
631
/*apply i*(2*kappa*mu=a)*gamma5*/
\
632
a00_re = a00_re - .5*a* reg##00_im; a00_im = a00_im + .5*a* reg##00_re;\
633
a01_re = a01_re - .5*a* reg##01_im; a01_im = a01_im + .5*a* reg##01_re;\
634
a02_re = a02_re - .5*a* reg##02_im; a02_im = a02_im + .5*a* reg##02_re;\
635
a10_re = a10_re - .5*a* reg##10_im; a10_im = a10_im + .5*a* reg##10_re;\
636
a11_re = a11_re - .5*a* reg##11_im; a11_im = a11_im + .5*a* reg##11_re;\
637
a12_re = a12_re - .5*a* reg##12_im; a12_im = a12_im + .5*a* reg##12_re;\
638
reg##00_re = a00_re; reg##00_im = a00_im;\
639
reg##01_re = a01_re; reg##01_im = a01_im;\
640
reg##02_re = a02_re; reg##02_im = a02_im;\
641
reg##10_re = a10_re; reg##10_im = a10_im;\
642
reg##11_re = a11_re; reg##11_im = a11_im;\
643
reg##12_re = a12_re; reg##12_im = a12_im;\
644
}\
645
/*Apply inverse clover*/
\
646
{\
647
ASSN_CLOVER(TM_INV_CLOVERTEX, 0)\
648
spinorFloat a00_re = 0; spinorFloat a00_im = 0;\
649
spinorFloat a01_re = 0; spinorFloat a01_im = 0;\
650
spinorFloat a02_re = 0; spinorFloat a02_im = 0;\
651
spinorFloat a10_re = 0; spinorFloat a10_im = 0;\
652
spinorFloat a11_re = 0; spinorFloat a11_im = 0;\
653
spinorFloat a12_re = 0; spinorFloat a12_im = 0;\
654
\
655
a00_re += cinv##00_00_re * reg##00_re;\
656
a00_im += cinv##00_00_re * reg##00_im;\
657
a00_re += cinv##00_01_re * reg##01_re;\
658
a00_re -= cinv##00_01_im * reg##01_im;\
659
a00_im += cinv##00_01_re * reg##01_im;\
660
a00_im += cinv##00_01_im * reg##01_re;\
661
a00_re += cinv##00_02_re * reg##02_re;\
662
a00_re -= cinv##00_02_im * reg##02_im;\
663
a00_im += cinv##00_02_re * reg##02_im;\
664
a00_im += cinv##00_02_im * reg##02_re;\
665
a00_re += cinv##00_10_re * reg##10_re;\
666
a00_re -= cinv##00_10_im * reg##10_im;\
667
a00_im += cinv##00_10_re * reg##10_im;\
668
a00_im += cinv##00_10_im * reg##10_re;\
669
a00_re += cinv##00_11_re * reg##11_re;\
670
a00_re -= cinv##00_11_im * reg##11_im;\
671
a00_im += cinv##00_11_re * reg##11_im;\
672
a00_im += cinv##00_11_im * reg##11_re;\
673
a00_re += cinv##00_12_re * reg##12_re;\
674
a00_re -= cinv##00_12_im * reg##12_im;\
675
a00_im += cinv##00_12_re * reg##12_im;\
676
a00_im += cinv##00_12_im * reg##12_re;\
677
\
678
a01_re += cinv##01_00_re * reg##00_re;\
679
a01_re -= cinv##01_00_im * reg##00_im;\
680
a01_im += cinv##01_00_re * reg##00_im;\
681
a01_im += cinv##01_00_im * reg##00_re;\
682
a01_re += cinv##01_01_re * reg##01_re;\
683
a01_im += cinv##01_01_re * reg##01_im;\
684
a01_re += cinv##01_02_re * reg##02_re;\
685
a01_re -= cinv##01_02_im * reg##02_im;\
686
a01_im += cinv##01_02_re * reg##02_im;\
687
a01_im += cinv##01_02_im * reg##02_re;\
688
a01_re += cinv##01_10_re * reg##10_re;\
689
a01_re -= cinv##01_10_im * reg##10_im;\
690
a01_im += cinv##01_10_re * reg##10_im;\
691
a01_im += cinv##01_10_im * reg##10_re;\
692
a01_re += cinv##01_11_re * reg##11_re;\
693
a01_re -= cinv##01_11_im * reg##11_im;\
694
a01_im += cinv##01_11_re * reg##11_im;\
695
a01_im += cinv##01_11_im * reg##11_re;\
696
a01_re += cinv##01_12_re * reg##12_re;\
697
a01_re -= cinv##01_12_im * reg##12_im;\
698
a01_im += cinv##01_12_re * reg##12_im;\
699
a01_im += cinv##01_12_im * reg##12_re;\
700
\
701
a02_re += cinv##02_00_re * reg##00_re;\
702
a02_re -= cinv##02_00_im * reg##00_im;\
703
a02_im += cinv##02_00_re * reg##00_im;\
704
a02_im += cinv##02_00_im * reg##00_re;\
705
a02_re += cinv##02_01_re * reg##01_re;\
706
a02_re -= cinv##02_01_im * reg##01_im;\
707
a02_im += cinv##02_01_re * reg##01_im;\
708
a02_im += cinv##02_01_im * reg##01_re;\
709
a02_re += cinv##02_02_re * reg##02_re;\
710
a02_im += cinv##02_02_re * reg##02_im;\
711
a02_re += cinv##02_10_re * reg##10_re;\
712
a02_re -= cinv##02_10_im * reg##10_im;\
713
a02_im += cinv##02_10_re * reg##10_im;\
714
a02_im += cinv##02_10_im * reg##10_re;\
715
a02_re += cinv##02_11_re * reg##11_re;\
716
a02_re -= cinv##02_11_im * reg##11_im;\
717
a02_im += cinv##02_11_re * reg##11_im;\
718
a02_im += cinv##02_11_im * reg##11_re;\
719
a02_re += cinv##02_12_re * reg##12_re;\
720
a02_re -= cinv##02_12_im * reg##12_im;\
721
a02_im += cinv##02_12_re * reg##12_im;\
722
a02_im += cinv##02_12_im * reg##12_re;\
723
\
724
a10_re += cinv##10_00_re * reg##00_re;\
725
a10_re -= cinv##10_00_im * reg##00_im;\
726
a10_im += cinv##10_00_re * reg##00_im;\
727
a10_im += cinv##10_00_im * reg##00_re;\
728
a10_re += cinv##10_01_re * reg##01_re;\
729
a10_re -= cinv##10_01_im * reg##01_im;\
730
a10_im += cinv##10_01_re * reg##01_im;\
731
a10_im += cinv##10_01_im * reg##01_re;\
732
a10_re += cinv##10_02_re * reg##02_re;\
733
a10_re -= cinv##10_02_im * reg##02_im;\
734
a10_im += cinv##10_02_re * reg##02_im;\
735
a10_im += cinv##10_02_im * reg##02_re;\
736
a10_re += cinv##10_10_re * reg##10_re;\
737
a10_im += cinv##10_10_re * reg##10_im;\
738
a10_re += cinv##10_11_re * reg##11_re;\
739
a10_re -= cinv##10_11_im * reg##11_im;\
740
a10_im += cinv##10_11_re * reg##11_im;\
741
a10_im += cinv##10_11_im * reg##11_re;\
742
a10_re += cinv##10_12_re * reg##12_re;\
743
a10_re -= cinv##10_12_im * reg##12_im;\
744
a10_im += cinv##10_12_re * reg##12_im;\
745
a10_im += cinv##10_12_im * reg##12_re;\
746
\
747
a11_re += cinv##11_00_re * reg##00_re;\
748
a11_re -= cinv##11_00_im * reg##00_im;\
749
a11_im += cinv##11_00_re * reg##00_im;\
750
a11_im += cinv##11_00_im * reg##00_re;\
751
a11_re += cinv##11_01_re * reg##01_re;\
752
a11_re -= cinv##11_01_im * reg##01_im;\
753
a11_im += cinv##11_01_re * reg##01_im;\
754
a11_im += cinv##11_01_im * reg##01_re;\
755
a11_re += cinv##11_02_re * reg##02_re;\
756
a11_re -= cinv##11_02_im * reg##02_im;\
757
a11_im += cinv##11_02_re * reg##02_im;\
758
a11_im += cinv##11_02_im * reg##02_re;\
759
a11_re += cinv##11_10_re * reg##10_re;\
760
a11_re -= cinv##11_10_im * reg##10_im;\
761
a11_im += cinv##11_10_re * reg##10_im;\
762
a11_im += cinv##11_10_im * reg##10_re;\
763
a11_re += cinv##11_11_re * reg##11_re;\
764
a11_im += cinv##11_11_re * reg##11_im;\
765
a11_re += cinv##11_12_re * reg##12_re;\
766
a11_re -= cinv##11_12_im * reg##12_im;\
767
a11_im += cinv##11_12_re * reg##12_im;\
768
a11_im += cinv##11_12_im * reg##12_re;\
769
\
770
a12_re += cinv##12_00_re * reg##00_re;\
771
a12_re -= cinv##12_00_im * reg##00_im;\
772
a12_im += cinv##12_00_re * reg##00_im;\
773
a12_im += cinv##12_00_im * reg##00_re;\
774
a12_re += cinv##12_01_re * reg##01_re;\
775
a12_re -= cinv##12_01_im * reg##01_im;\
776
a12_im += cinv##12_01_re * reg##01_im;\
777
a12_im += cinv##12_01_im * reg##01_re;\
778
a12_re += cinv##12_02_re * reg##02_re;\
779
a12_re -= cinv##12_02_im * reg##02_im;\
780
a12_im += cinv##12_02_re * reg##02_im;\
781
a12_im += cinv##12_02_im * reg##02_re;\
782
a12_re += cinv##12_10_re * reg##10_re;\
783
a12_re -= cinv##12_10_im * reg##10_im;\
784
a12_im += cinv##12_10_re * reg##10_im;\
785
a12_im += cinv##12_10_im * reg##10_re;\
786
a12_re += cinv##12_11_re * reg##11_re;\
787
a12_re -= cinv##12_11_im * reg##11_im;\
788
a12_im += cinv##12_11_re * reg##11_im;\
789
a12_im += cinv##12_11_im * reg##11_re;\
790
a12_re += cinv##12_12_re * reg##12_re;\
791
a12_im += cinv##12_12_re * reg##12_im;\
792
\
793
/*store the result*/
\
794
reg##00_re = a00_re; reg##00_im = a00_im;\
795
reg##01_re = a01_re; reg##01_im = a01_im;\
796
reg##02_re = a02_re; reg##02_im = a02_im;\
797
reg##10_re = a10_re; reg##10_im = a10_im;\
798
reg##11_re = a11_re; reg##11_im = a11_im;\
799
reg##12_re = a12_re; reg##12_im = a12_im;\
800
\
801
}\
802
\
803
/* apply second chiral block*/
\
804
{\
805
ASSN_CLOVER(TMCLOVERTEX, 1)\
806
spinorFloat a20_re = 0; spinorFloat a20_im = 0;\
807
spinorFloat a21_re = 0; spinorFloat a21_im = 0;\
808
spinorFloat a22_re = 0; spinorFloat a22_im = 0;\
809
spinorFloat a30_re = 0; spinorFloat a30_im = 0;\
810
spinorFloat a31_re = 0; spinorFloat a31_im = 0;\
811
spinorFloat a32_re = 0; spinorFloat a32_im = 0;\
812
\
813
a20_re += c##20_20_re * reg##20_re;\
814
a20_im += c##20_20_re * reg##20_im;\
815
a20_re += c##20_21_re * reg##21_re;\
816
a20_re -= c##20_21_im * reg##21_im;\
817
a20_im += c##20_21_re * reg##21_im;\
818
a20_im += c##20_21_im * reg##21_re;\
819
a20_re += c##20_22_re * reg##22_re;\
820
a20_re -= c##20_22_im * reg##22_im;\
821
a20_im += c##20_22_re * reg##22_im;\
822
a20_im += c##20_22_im * reg##22_re;\
823
a20_re += c##20_30_re * reg##30_re;\
824
a20_re -= c##20_30_im * reg##30_im;\
825
a20_im += c##20_30_re * reg##30_im;\
826
a20_im += c##20_30_im * reg##30_re;\
827
a20_re += c##20_31_re * reg##31_re;\
828
a20_re -= c##20_31_im * reg##31_im;\
829
a20_im += c##20_31_re * reg##31_im;\
830
a20_im += c##20_31_im * reg##31_re;\
831
a20_re += c##20_32_re * reg##32_re;\
832
a20_re -= c##20_32_im * reg##32_im;\
833
a20_im += c##20_32_re * reg##32_im;\
834
a20_im += c##20_32_im * reg##32_re;\
835
\
836
a21_re += c##21_20_re * reg##20_re;\
837
a21_re -= c##21_20_im * reg##20_im;\
838
a21_im += c##21_20_re * reg##20_im;\
839
a21_im += c##21_20_im * reg##20_re;\
840
a21_re += c##21_21_re * reg##21_re;\
841
a21_im += c##21_21_re * reg##21_im;\
842
a21_re += c##21_22_re * reg##22_re;\
843
a21_re -= c##21_22_im * reg##22_im;\
844
a21_im += c##21_22_re * reg##22_im;\
845
a21_im += c##21_22_im * reg##22_re;\
846
a21_re += c##21_30_re * reg##30_re;\
847
a21_re -= c##21_30_im * reg##30_im;\
848
a21_im += c##21_30_re * reg##30_im;\
849
a21_im += c##21_30_im * reg##30_re;\
850
a21_re += c##21_31_re * reg##31_re;\
851
a21_re -= c##21_31_im * reg##31_im;\
852
a21_im += c##21_31_re * reg##31_im;\
853
a21_im += c##21_31_im * reg##31_re;\
854
a21_re += c##21_32_re * reg##32_re;\
855
a21_re -= c##21_32_im * reg##32_im;\
856
a21_im += c##21_32_re * reg##32_im;\
857
a21_im += c##21_32_im * reg##32_re;\
858
\
859
a22_re += c##22_20_re * reg##20_re;\
860
a22_re -= c##22_20_im * reg##20_im;\
861
a22_im += c##22_20_re * reg##20_im;\
862
a22_im += c##22_20_im * reg##20_re;\
863
a22_re += c##22_21_re * reg##21_re;\
864
a22_re -= c##22_21_im * reg##21_im;\
865
a22_im += c##22_21_re * reg##21_im;\
866
a22_im += c##22_21_im * reg##21_re;\
867
a22_re += c##22_22_re * reg##22_re;\
868
a22_im += c##22_22_re * reg##22_im;\
869
a22_re += c##22_30_re * reg##30_re;\
870
a22_re -= c##22_30_im * reg##30_im;\
871
a22_im += c##22_30_re * reg##30_im;\
872
a22_im += c##22_30_im * reg##30_re;\
873
a22_re += c##22_31_re * reg##31_re;\
874
a22_re -= c##22_31_im * reg##31_im;\
875
a22_im += c##22_31_re * reg##31_im;\
876
a22_im += c##22_31_im * reg##31_re;\
877
a22_re += c##22_32_re * reg##32_re;\
878
a22_re -= c##22_32_im * reg##32_im;\
879
a22_im += c##22_32_re * reg##32_im;\
880
a22_im += c##22_32_im * reg##32_re;\
881
\
882
a30_re += c##30_20_re * reg##20_re;\
883
a30_re -= c##30_20_im * reg##20_im;\
884
a30_im += c##30_20_re * reg##20_im;\
885
a30_im += c##30_20_im * reg##20_re;\
886
a30_re += c##30_21_re * reg##21_re;\
887
a30_re -= c##30_21_im * reg##21_im;\
888
a30_im += c##30_21_re * reg##21_im;\
889
a30_im += c##30_21_im * reg##21_re;\
890
a30_re += c##30_22_re * reg##22_re;\
891
a30_re -= c##30_22_im * reg##22_im;\
892
a30_im += c##30_22_re * reg##22_im;\
893
a30_im += c##30_22_im * reg##22_re;\
894
a30_re += c##30_30_re * reg##30_re;\
895
a30_im += c##30_30_re * reg##30_im;\
896
a30_re += c##30_31_re * reg##31_re;\
897
a30_re -= c##30_31_im * reg##31_im;\
898
a30_im += c##30_31_re * reg##31_im;\
899
a30_im += c##30_31_im * reg##31_re;\
900
a30_re += c##30_32_re * reg##32_re;\
901
a30_re -= c##30_32_im * reg##32_im;\
902
a30_im += c##30_32_re * reg##32_im;\
903
a30_im += c##30_32_im * reg##32_re;\
904
\
905
a31_re += c##31_20_re * reg##20_re;\
906
a31_re -= c##31_20_im * reg##20_im;\
907
a31_im += c##31_20_re * reg##20_im;\
908
a31_im += c##31_20_im * reg##20_re;\
909
a31_re += c##31_21_re * reg##21_re;\
910
a31_re -= c##31_21_im * reg##21_im;\
911
a31_im += c##31_21_re * reg##21_im;\
912
a31_im += c##31_21_im * reg##21_re;\
913
a31_re += c##31_22_re * reg##22_re;\
914
a31_re -= c##31_22_im * reg##22_im;\
915
a31_im += c##31_22_re * reg##22_im;\
916
a31_im += c##31_22_im * reg##22_re;\
917
a31_re += c##31_30_re * reg##30_re;\
918
a31_re -= c##31_30_im * reg##30_im;\
919
a31_im += c##31_30_re * reg##30_im;\
920
a31_im += c##31_30_im * reg##30_re;\
921
a31_re += c##31_31_re * reg##31_re;\
922
a31_im += c##31_31_re * reg##31_im;\
923
a31_re += c##31_32_re * reg##32_re;\
924
a31_re -= c##31_32_im * reg##32_im;\
925
a31_im += c##31_32_re * reg##32_im;\
926
a31_im += c##31_32_im * reg##32_re;\
927
\
928
a32_re += c##32_20_re * reg##20_re;\
929
a32_re -= c##32_20_im * reg##20_im;\
930
a32_im += c##32_20_re * reg##20_im;\
931
a32_im += c##32_20_im * reg##20_re;\
932
a32_re += c##32_21_re * reg##21_re;\
933
a32_re -= c##32_21_im * reg##21_im;\
934
a32_im += c##32_21_re * reg##21_im;\
935
a32_im += c##32_21_im * reg##21_re;\
936
a32_re += c##32_22_re * reg##22_re;\
937
a32_re -= c##32_22_im * reg##22_im;\
938
a32_im += c##32_22_re * reg##22_im;\
939
a32_im += c##32_22_im * reg##22_re;\
940
a32_re += c##32_30_re * reg##30_re;\
941
a32_re -= c##32_30_im * reg##30_im;\
942
a32_im += c##32_30_re * reg##30_im;\
943
a32_im += c##32_30_im * reg##30_re;\
944
a32_re += c##32_31_re * reg##31_re;\
945
a32_re -= c##32_31_im * reg##31_im;\
946
a32_im += c##32_31_re * reg##31_im;\
947
a32_im += c##32_31_im * reg##31_re;\
948
a32_re += c##32_32_re * reg##32_re;\
949
a32_im += c##32_32_re * reg##32_im;\
950
\
951
/*apply i*(2*kappa*mu=a)*gamma5*/
\
952
a20_re = a20_re + .5*a* reg##20_im; a20_im = a20_im - .5*a* reg##20_re;\
953
a21_re = a21_re + .5*a* reg##21_im; a21_im = a21_im - .5*a* reg##21_re;\
954
a22_re = a22_re + .5*a* reg##22_im; a22_im = a22_im - .5*a* reg##22_re;\
955
a30_re = a30_re + .5*a* reg##30_im; a30_im = a30_im - .5*a* reg##30_re;\
956
a31_re = a31_re + .5*a* reg##31_im; a31_im = a31_im - .5*a* reg##31_re;\
957
a32_re = a32_re + .5*a* reg##32_im; a32_im = a32_im - .5*a* reg##32_re;\
958
reg##20_re = a20_re; reg##20_im = a20_im;\
959
reg##21_re = a21_re; reg##21_im = a21_im;\
960
reg##22_re = a22_re; reg##22_im = a22_im;\
961
reg##30_re = a30_re; reg##30_im = a30_im;\
962
reg##31_re = a31_re; reg##31_im = a31_im;\
963
reg##32_re = a32_re; reg##32_im = a32_im;\
964
}\
965
/*Apply inverse clover*/
\
966
{\
967
ASSN_CLOVER(TM_INV_CLOVERTEX, 1)\
968
spinorFloat a20_re = 0; spinorFloat a20_im = 0;\
969
spinorFloat a21_re = 0; spinorFloat a21_im = 0;\
970
spinorFloat a22_re = 0; spinorFloat a22_im = 0;\
971
spinorFloat a30_re = 0; spinorFloat a30_im = 0;\
972
spinorFloat a31_re = 0; spinorFloat a31_im = 0;\
973
spinorFloat a32_re = 0; spinorFloat a32_im = 0;\
974
\
975
a20_re += cinv##20_20_re * reg##20_re;\
976
a20_im += cinv##20_20_re * reg##20_im;\
977
a20_re += cinv##20_21_re * reg##21_re;\
978
a20_re -= cinv##20_21_im * reg##21_im;\
979
a20_im += cinv##20_21_re * reg##21_im;\
980
a20_im += cinv##20_21_im * reg##21_re;\
981
a20_re += cinv##20_22_re * reg##22_re;\
982
a20_re -= cinv##20_22_im * reg##22_im;\
983
a20_im += cinv##20_22_re * reg##22_im;\
984
a20_im += cinv##20_22_im * reg##22_re;\
985
a20_re += cinv##20_30_re * reg##30_re;\
986
a20_re -= cinv##20_30_im * reg##30_im;\
987
a20_im += cinv##20_30_re * reg##30_im;\
988
a20_im += cinv##20_30_im * reg##30_re;\
989
a20_re += cinv##20_31_re * reg##31_re;\
990
a20_re -= cinv##20_31_im * reg##31_im;\
991
a20_im += cinv##20_31_re * reg##31_im;\
992
a20_im += cinv##20_31_im * reg##31_re;\
993
a20_re += cinv##20_32_re * reg##32_re;\
994
a20_re -= cinv##20_32_im * reg##32_im;\
995
a20_im += cinv##20_32_re * reg##32_im;\
996
a20_im += cinv##20_32_im * reg##32_re;\
997
\
998
a21_re += cinv##21_20_re * reg##20_re;\
999
a21_re -= cinv##21_20_im * reg##20_im;\
1000
a21_im += cinv##21_20_re * reg##20_im;\
1001
a21_im += cinv##21_20_im * reg##20_re;\
1002
a21_re += cinv##21_21_re * reg##21_re;\
1003
a21_im += cinv##21_21_re * reg##21_im;\
1004
a21_re += cinv##21_22_re * reg##22_re;\
1005
a21_re -= cinv##21_22_im * reg##22_im;\
1006
a21_im += cinv##21_22_re * reg##22_im;\
1007
a21_im += cinv##21_22_im * reg##22_re;\
1008
a21_re += cinv##21_30_re * reg##30_re;\
1009
a21_re -= cinv##21_30_im * reg##30_im;\
1010
a21_im += cinv##21_30_re * reg##30_im;\
1011
a21_im += cinv##21_30_im * reg##30_re;\
1012
a21_re += cinv##21_31_re * reg##31_re;\
1013
a21_re -= cinv##21_31_im * reg##31_im;\
1014
a21_im += cinv##21_31_re * reg##31_im;\
1015
a21_im += cinv##21_31_im * reg##31_re;\
1016
a21_re += cinv##21_32_re * reg##32_re;\
1017
a21_re -= cinv##21_32_im * reg##32_im;\
1018
a21_im += cinv##21_32_re * reg##32_im;\
1019
a21_im += cinv##21_32_im * reg##32_re;\
1020
\
1021
a22_re += cinv##22_20_re * reg##20_re;\
1022
a22_re -= cinv##22_20_im * reg##20_im;\
1023
a22_im += cinv##22_20_re * reg##20_im;\
1024
a22_im += cinv##22_20_im * reg##20_re;\
1025
a22_re += cinv##22_21_re * reg##21_re;\
1026
a22_re -= cinv##22_21_im * reg##21_im;\
1027
a22_im += cinv##22_21_re * reg##21_im;\
1028
a22_im += cinv##22_21_im * reg##21_re;\
1029
a22_re += cinv##22_22_re * reg##22_re;\
1030
a22_im += cinv##22_22_re * reg##22_im;\
1031
a22_re += cinv##22_30_re * reg##30_re;\
1032
a22_re -= cinv##22_30_im * reg##30_im;\
1033
a22_im += cinv##22_30_re * reg##30_im;\
1034
a22_im += cinv##22_30_im * reg##30_re;\
1035
a22_re += cinv##22_31_re * reg##31_re;\
1036
a22_re -= cinv##22_31_im * reg##31_im;\
1037
a22_im += cinv##22_31_re * reg##31_im;\
1038
a22_im += cinv##22_31_im * reg##31_re;\
1039
a22_re += cinv##22_32_re * reg##32_re;\
1040
a22_re -= cinv##22_32_im * reg##32_im;\
1041
a22_im += cinv##22_32_re * reg##32_im;\
1042
a22_im += cinv##22_32_im * reg##32_re;\
1043
\
1044
a30_re += cinv##30_20_re * reg##20_re;\
1045
a30_re -= cinv##30_20_im * reg##20_im;\
1046
a30_im += cinv##30_20_re * reg##20_im;\
1047
a30_im += cinv##30_20_im * reg##20_re;\
1048
a30_re += cinv##30_21_re * reg##21_re;\
1049
a30_re -= cinv##30_21_im * reg##21_im;\
1050
a30_im += cinv##30_21_re * reg##21_im;\
1051
a30_im += cinv##30_21_im * reg##21_re;\
1052
a30_re += cinv##30_22_re * reg##22_re;\
1053
a30_re -= cinv##30_22_im * reg##22_im;\
1054
a30_im += cinv##30_22_re * reg##22_im;\
1055
a30_im += cinv##30_22_im * reg##22_re;\
1056
a30_re += cinv##30_30_re * reg##30_re;\
1057
a30_im += cinv##30_30_re * reg##30_im;\
1058
a30_re += cinv##30_31_re * reg##31_re;\
1059
a30_re -= cinv##30_31_im * reg##31_im;\
1060
a30_im += cinv##30_31_re * reg##31_im;\
1061
a30_im += cinv##30_31_im * reg##31_re;\
1062
a30_re += cinv##30_32_re * reg##32_re;\
1063
a30_re -= cinv##30_32_im * reg##32_im;\
1064
a30_im += cinv##30_32_re * reg##32_im;\
1065
a30_im += cinv##30_32_im * reg##32_re;\
1066
\
1067
a31_re += cinv##31_20_re * reg##20_re;\
1068
a31_re -= cinv##31_20_im * reg##20_im;\
1069
a31_im += cinv##31_20_re * reg##20_im;\
1070
a31_im += cinv##31_20_im * reg##20_re;\
1071
a31_re += cinv##31_21_re * reg##21_re;\
1072
a31_re -= cinv##31_21_im * reg##21_im;\
1073
a31_im += cinv##31_21_re * reg##21_im;\
1074
a31_im += cinv##31_21_im * reg##21_re;\
1075
a31_re += cinv##31_22_re * reg##22_re;\
1076
a31_re -= cinv##31_22_im * reg##22_im;\
1077
a31_im += cinv##31_22_re * reg##22_im;\
1078
a31_im += cinv##31_22_im * reg##22_re;\
1079
a31_re += cinv##31_30_re * reg##30_re;\
1080
a31_re -= cinv##31_30_im * reg##30_im;\
1081
a31_im += cinv##31_30_re * reg##30_im;\
1082
a31_im += cinv##31_30_im * reg##30_re;\
1083
a31_re += cinv##31_31_re * reg##31_re;\
1084
a31_im += cinv##31_31_re * reg##31_im;\
1085
a31_re += cinv##31_32_re * reg##32_re;\
1086
a31_re -= cinv##31_32_im * reg##32_im;\
1087
a31_im += cinv##31_32_re * reg##32_im;\
1088
a31_im += cinv##31_32_im * reg##32_re;\
1089
\
1090
a32_re += cinv##32_20_re * reg##20_re;\
1091
a32_re -= cinv##32_20_im * reg##20_im;\
1092
a32_im += cinv##32_20_re * reg##20_im;\
1093
a32_im += cinv##32_20_im * reg##20_re;\
1094
a32_re += cinv##32_21_re * reg##21_re;\
1095
a32_re -= cinv##32_21_im * reg##21_im;\
1096
a32_im += cinv##32_21_re * reg##21_im;\
1097
a32_im += cinv##32_21_im * reg##21_re;\
1098
a32_re += cinv##32_22_re * reg##22_re;\
1099
a32_re -= cinv##32_22_im * reg##22_im;\
1100
a32_im += cinv##32_22_re * reg##22_im;\
1101
a32_im += cinv##32_22_im * reg##22_re;\
1102
a32_re += cinv##32_30_re * reg##30_re;\
1103
a32_re -= cinv##32_30_im * reg##30_im;\
1104
a32_im += cinv##32_30_re * reg##30_im;\
1105
a32_im += cinv##32_30_im * reg##30_re;\
1106
a32_re += cinv##32_31_re * reg##31_re;\
1107
a32_re -= cinv##32_31_im * reg##31_im;\
1108
a32_im += cinv##32_31_re * reg##31_im;\
1109
a32_im += cinv##32_31_im * reg##31_re;\
1110
a32_re += cinv##32_32_re * reg##32_re;\
1111
a32_im += cinv##32_32_re * reg##32_im;\
1112
\
1113
/*store the result*/
\
1114
reg##20_re = a20_re; reg##20_im = a20_im;\
1115
reg##21_re = a21_re; reg##21_im = a21_im;\
1116
reg##22_re = a22_re; reg##22_im = a22_im;\
1117
reg##30_re = a30_re; reg##30_im = a30_im;\
1118
reg##31_re = a31_re; reg##31_im = a31_im;\
1119
reg##32_re = a32_re; reg##32_im = a32_im;\
1120
\
1121
}\
1122
\
1123
/* change back from chiral basis*/
\
1124
/* (note: required factor of 1/2 is included in clover term normalization)*/
\
1125
{\
1126
spinorFloat a00_re = reg##10_re + reg##30_re;\
1127
spinorFloat a00_im = reg##10_im + reg##30_im;\
1128
spinorFloat a10_re = -reg##00_re - reg##20_re;\
1129
spinorFloat a10_im = -reg##00_im - reg##20_im;\
1130
spinorFloat a20_re = reg##10_re - reg##30_re;\
1131
spinorFloat a20_im = reg##10_im - reg##30_im;\
1132
spinorFloat a30_re = -reg##00_re + reg##20_re;\
1133
spinorFloat a30_im = -reg##00_im + reg##20_im;\
1134
\
1135
reg##00_re = a00_re*2.; reg##00_im = a00_im*2.;\
1136
reg##10_re = a10_re*2.; reg##10_im = a10_im*2.;\
1137
reg##20_re = a20_re*2.; reg##20_im = a20_im*2.;\
1138
reg##30_re = a30_re*2.; reg##30_im = a30_im*2.;\
1139
}\
1140
\
1141
{\
1142
spinorFloat a01_re = reg##11_re + reg##31_re;\
1143
spinorFloat a01_im = reg##11_im + reg##31_im;\
1144
spinorFloat a11_re = -reg##01_re - reg##21_re;\
1145
spinorFloat a11_im = -reg##01_im - reg##21_im;\
1146
spinorFloat a21_re = reg##11_re - reg##31_re;\
1147
spinorFloat a21_im = reg##11_im - reg##31_im;\
1148
spinorFloat a31_re = -reg##01_re + reg##21_re;\
1149
spinorFloat a31_im = -reg##01_im + reg##21_im;\
1150
\
1151
reg##01_re = a01_re*2.; reg##01_im = a01_im*2.;\
1152
reg##11_re = a11_re*2.; reg##11_im = a11_im*2.;\
1153
reg##21_re = a21_re*2.; reg##21_im = a21_im*2.;\
1154
reg##31_re = a31_re*2.; reg##31_im = a31_im*2.;\
1155
}\
1156
\
1157
{\
1158
spinorFloat a02_re = reg##12_re + reg##32_re;\
1159
spinorFloat a02_im = reg##12_im + reg##32_im;\
1160
spinorFloat a12_re = -reg##02_re - reg##22_re;\
1161
spinorFloat a12_im = -reg##02_im - reg##22_im;\
1162
spinorFloat a22_re = reg##12_re - reg##32_re;\
1163
spinorFloat a22_im = reg##12_im - reg##32_im;\
1164
spinorFloat a32_re = -reg##02_re + reg##22_re;\
1165
spinorFloat a32_im = -reg##02_im + reg##22_im;\
1166
\
1167
reg##02_re = a02_re*2.; reg##02_im = a02_im*2.;\
1168
reg##12_re = a12_re*2.; reg##12_im = a12_im*2.;\
1169
reg##22_re = a22_re*2.; reg##22_im = a22_im*2.;\
1170
reg##32_re = a32_re*2.; reg##32_im = a32_im*2.;\
1171
}\
1172
\
1173
Generated on Wed Feb 4 2015 17:00:09 for QUDA by
1.8.6