1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-13 04:37:05 +01:00

gammas: adjoint implemented as a symbolic operation

This commit is contained in:
2017-01-24 18:07:43 -08:00
parent 0432e30256
commit 05cb6d318a
5 changed files with 190 additions and 233 deletions

View File

@ -160,7 +160,7 @@ void checkMat(const Gamma::Algebra a, GridSerialRNG &rng)
void checkProd(const Gamma::Algebra a, const Gamma::Algebra b)
{
SpinMatrix gm, testg = testAlgebra[a]*testAlgebra[b];
Gamma ga(a), gb(b), g = ga*gb;
Gamma g = Gamma(a)*Gamma(b);
bool pass = true;
std::cout << GridLogMessage << "Checking " << Gamma::name[a] << " * "
@ -171,6 +171,19 @@ void checkProd(const Gamma::Algebra a, const Gamma::Algebra b)
std::cout << "(= " << Gamma::name[g.g] << ")" << std::endl;
}
void checkAdj(const Gamma::Algebra a)
{
SpinMatrix gm, testg = adj(testAlgebra[a]);
Gamma g(adj(Gamma(a)));
bool pass = true;
std::cout << GridLogMessage << "Checking adj(" << Gamma::name[a] << "): ";
gm = 1.0;
gm = g*gm;
test(gm, testg);
std::cout << "(= " << Gamma::name[g.g] << ")" << std::endl;
}
void checkProject(GridSerialRNG &rng)
{
SpinVector rv, recon, full;
@ -227,8 +240,15 @@ int main(int argc, char *argv[])
checkProd(i, j);
}
std::cout << GridLogMessage << std::endl;
std::cout << GridLogMessage << "======== Adjoints check" << std::endl;
for (int i = 0; i < Gamma::nGamma; ++i)
{
checkAdj(i);
}
std::cout << GridLogMessage << std::endl;
std::cout << GridLogMessage << "======== Spin projectors check" << std::endl;
checkProject(sRNG);
std::cout << GridLogMessage << std::endl;
Grid_finalize();