def _projective_general_unitary_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod((Integer(q ** i - 1) * Integer(q ** i + 1) for i in xrange(1, n // 2 + 1))) * prod((Integer(q ** (2 * i + 1) + 1)) for i in xrange(1, (n + 1) // 2)))
def _projective_general_unitary_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) // 2)}) * prod((Integer(q ** i - 1) * Integer(q ** i + 1) for i in range(1, n // 2 + 1))) * prod((Integer(q ** (2 * i + 1) + 1)) for i in range(1, (n + 1) // 2)))
def _projective_special_unitary_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod( (Integer(q**i - 1) * Integer(q**i + 1) for i in xrange(2, n // 2 + 1))) * prod( (Integer(q**(2 * i + 1) + 1)) for i in xrange(1, (n + 1) // 2)) * Integer(q - 1) * Integer( (q + 1) // gcd(n, q + 1)))
def order(n, field): q = field.order n //= 2 o = (Integer({field.char: field.pow * n * (n - 1)}) * Integer(q**n - e) * prod((Integer(q**i - 1) * Integer(q**i + 1) for i in xrange(1, n)))) if field.char != 2: o.div_by_prime(2) return o
def order(n, field): q = field.order n //= 2 o = (Integer({field.char: field.pow * n * (n - 1)}) * Integer(q ** n - e) * prod((Integer(q ** i - 1) * Integer(q ** i + 1) for i in xrange(1, n)))) if field.char != 2: o.div_by_prime(2) return o
def order(n, field): q = field.order n //= 2 part = prod( (Integer(q**k - 1) * Integer(q**k + 1) for k in xrange(1, n))) if not e: return (part * Integer({field.char: field.pow * n * n}) * Integer(q**n - 1) * Integer(q**n + 1)) if field.char == 2: part *= 2 return (part * Integer({field.char: field.pow * n * (n - 1)}) * Integer(q**n - e))
def order(n, field): q = field.order n //= 2 part = prod((Integer(q ** k - 1) * Integer(q ** k + 1) for k in xrange(1, n))) if not e: return (part * Integer({field.char: field.pow * n * n}) * Integer(q ** n - 1) * Integer(q ** n + 1)) if field.char == 2: part *= 2 return (part * Integer({field.char: field.pow * n * (n - 1)}) * Integer(q ** n - e))
def order(self): if self._order is None: # n!/2 self._order = numeric.prod(xrange(3, self._degree + 1)) return self._order
def _symplectic_order(n, field): n //= 2 q = field.order return (Integer({field.char: field.pow * n * n}) * prod( (Integer(q**i - 1) * Integer(q**i + 1) for i in xrange(1, n + 1))))
def _order_product(field, pow, pluses, minuses): q = field.order return (Integer({field.char: field.pow * pow}) * prod( (Integer(q**i + 1) for i in pluses)) * prod( (Integer(q**i - 1) for i in minuses)))
def _projective_general_linear_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod((Integer(q ** i - 1) for i in xrange(2, n + 1))))
def _projective_special_linear_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod( (Integer(q**i - 1) for i in xrange(3, n + 1))) * Integer(q + 1) * Integer( (q - 1) // gcd(n, q - 1)))
def _projective_general_linear_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod( (Integer(q**i - 1) for i in xrange(2, n + 1))))
def _symplectic_order(n, field): n //= 2 q = field.order return (Integer({field.char: field.pow * n * n}) * prod((Integer(q ** i - 1) * Integer(q ** i + 1) for i in xrange(1, n + 1))))
def _order_product(field, pow, pluses, minuses): q = field.order return (Integer({field.char: field.pow * pow}) * prod((Integer(q ** i + 1) for i in pluses)) * prod((Integer(q ** i - 1) for i in minuses)))
def _projective_special_linear_order(n, field): q = field.order return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod((Integer(q ** i - 1) for i in xrange(3, n + 1))) * Integer(q + 1) * Integer((q - 1) // gcd(n, q - 1)))