#include #include using namespace Grid; template std::ostream& operator<<(std::ostream& o, Sp g) { return o << "Sp(" << ngroup << ") Fundamental"; } template std::ostream& operator<<(std::ostream& o, Sp_TwoIndex g) { return o << "Sp(" << ngroup << ") TwoIndex " << (S == Symmetric ? "Symmetric" : "AntiSymmetric"); } template void run_check_on(bool print_generators = false) { std::cout << GridLogMessage << "*********************************************" << std::endl; std::cout << GridLogMessage << "* Generators for " << Group() << std::endl; std::cout << GridLogMessage << "*********************************************" << std::endl; if (print_generators) { Group::printGenerators(); } Group::testGenerators(); } template void run_checks() { run_check_on>(); run_check_on>(); run_check_on>(); } template <> void run_checks<2>() { // Print generators because they are small enough to be actually helpful. run_check_on>(true); run_check_on>(true); // The AntiSymmetric representation is 0 dimensional. This makes problems in // device code. } template <> void run_checks<4>() { // Print generators because they are small enough to be actually helpful. run_check_on>(true); run_check_on>(true); run_check_on>(true); } int main(int argc, char** argv) { Grid_init(&argc, &argv); run_checks<2>(); run_checks<4>(); run_checks<6>(); run_checks<8>(); Grid_finalize(); }