// condition |is_central(roots,t)| means $t=\exp(2pi\pi)$ with $<p,roots>$ int bool is_central(const WeightList& alpha, const TorusElement& t) { const RatWeight& rw = t.as_Qmod2Z(); // using $\exp(i\pi.)$ is faster, but arithmetic::Numer_t d = 2*rw.denominator(); // it requires even pairings for (weyl::Generator s=0; s<alpha.size(); ++s) if (rw.numerator().dot(alpha[s])%d != 0) // see if division is exact return false; return true; }
bool is_central(const WeightList& alpha, const TorusElement& t) { RatWeight rw = t.as_Qmod2Z(); arithmetic::Numer_t d = 2*rw.denominator(); for (weyl::Generator s=0; s<alpha.size(); ++s) if (alpha[s].dot(rw.numerator())%d != 0) // see if division is exact return false; return true; }