32 assert(w.
nex() == v.
nex());
35 const int Nvol = v.
nvol();
36 const int Nex = v.
nex();
37 const int Nd = v.
nd();
38 const int Nc = v.
nc();
41 valarray<int> idc_r(Nd);
42 valarray<int> idc_i(Nd);
43 valarray<double> gv_r(Nd);
44 valarray<double> gv_i(Nd);
46 for (
int s = 0; s < Nd; ++s) {
51 idc_i[s] = 1 - idc_r[s];
54 for (
int ex = 0; ex < Nex; ++ex) {
55 for (
int site = 0; site < Nvol; ++site) {
56 for (
int s = 0; s < Nd; ++s) {
57 for (
int c = 0; c < Nc; ++c) {
59 ww[0] = w.
cmp_r(c,
id[s], site, ex);
60 ww[1] = w.
cmp_i(c,
id[s], site, ex);
63 gv_r[s] * ww[idc_r[s]],
64 gv_i[s] * ww[idc_i[s]]);
75 assert(w.
nex() == v.
nex());
78 const int Nvol = v.
nvol();
79 const int Nex = v.
nex();
80 const int Nd = v.
nd();
81 const int Nc = v.
nc();
84 valarray<int> idc_r(Nd);
85 valarray<int> idc_i(Nd);
86 valarray<double> gv_r(Nd);
87 valarray<double> gv_i(Nd);
89 for (
int s = 0; s < Nd; ++s) {
94 idc_i[s] = 1 - idc_r[s];
97 for (
int ex = 0; ex < Nex; ++ex) {
98 for (
int site = 0; site < Nvol; ++site) {
99 for (
int s = 0; s < Nd; ++s) {
100 for (
int c = 0; c < Nc; ++c) {
102 ww[0] = w.
cmp_r(c,
id[s], site, ex);
103 ww[1] = w.
cmp_i(c,
id[s], site, ex);
106 gv_r[s] * ww[idc_r[s]],
107 gv_i[s] * ww[idc_i[s]]);
121 assert(w.
nex() == v.
nex());
122 assert(pm == 1 || pm == -1);
129 }
else if (pm == -1) {
145 assert(w.
nex() == v.
nex());
146 assert(pm == 1 || pm == -1);
152 }
else if (pm == -1) {
167 assert(ex < y.
nex());
168 assert(ex1 < U.
nex());
169 assert(ex2 < x.
nex());
173 const int Nvol = x.
nvol();
174 const int Nd = x.
nd();
175 const int Nc = x.
nc();
177 for (
int site = 0; site < Nvol; ++site) {
178 for (
int s = 0; s < Nd; ++s) {
179 y.
set_vec(s, site, ex, U.
mat(site, ex1) * x.
vec(s, site, ex2));
190 assert(ex < y.
nex());
191 assert(ex1 < U.
nex());
192 assert(ex2 < x.
nex());
196 const int Nvol = y.
nvol();
197 const int Nd = y.
nd();
198 const int Nc = y.
nc();
200 for (
int site = 0; site < Nvol; ++site) {
201 for (
int s = 0; s < Nd; ++s) {
214 assert(ex < y.
nex());
215 assert(ex1 < U.
nex());
216 assert(ex2 < x.
nex());
220 const int Nvol = y.
nvol();
221 const int Nd = y.
nd();
222 const int Nc = y.
nc();
226 for (
int site = 0; site < Nvol; ++site) {
227 for (
int s = 0; s < Nd; ++s) {
228 y.
add_vec(s, site, ex, U.
mat(site, ex1) * x.
vec(s, site, ex2) * a);
240 assert(ex < y.
nex());
241 assert(ex1 < U.
nex());
242 assert(ex2 < x.
nex());
246 const int Nvol = y.
nvol();
247 const int Nd = y.
nd();
248 const int Nc = y.
nc();
250 for (
int site = 0; site < Nvol; ++site) {
251 for (
int s = 0; s < Nd; ++s) {
void mult_Field_Gd(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
double cmp_i(const int cc, const int s, const int site, const int e=0) const
void set_vec(const int s, const int site, const int e, const Vec_SU_N &F)
void general(const char *format,...)
void check()
check several assumptions for performance implementation.
void multadd_Field_Gn(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2, const double a)
Wilson-type fermion field.
void mult_GMproj2(Field_F &y, const int pm, const GammaMatrix &gm, const Field_F &x)
projection with gamma matrix: (1 gamma)
double value_r(int row) const
void mult_iGM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication (i is multiplied)
void multadd_Field_Gd(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2, const double a)
void set_ri(const int cc, const int s, const int site, const int e, const double re, const double im)
void mult_Field_Gn(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
void mult_GM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication
int index_c(int row) const
Vec_SU_N vec(const int s, const int site, const int e=0) const
Mat_SU_N mat_dag(const int site, const int mn=0) const
double value_i(int row) const
void add_vec(const int s, const int site, const int e, const Vec_SU_N &F)
void mult_GMproj(Field_F &y, const int pm, const GammaMatrix &gm, const Field_F &x)
projection with gamma matrix: (1 gamma)/2
Mat_SU_N mat(const int site, const int mn=0) const
double cmp_r(const int cc, const int s, const int site, const int e=0) const