public Rational getGcd() {
   assert (!mSummands.isEmpty());
   Iterator<Rational> it = mSummands.values().iterator();
   Rational gcd = it.next().abs();
   while (it.hasNext()) {
     gcd = gcd.gcd(it.next().abs());
   }
   return gcd;
 }