// 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;
}
示例#2
0
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;
}