S = PolynomialRing(S, R.variable_names())
t = S(t)
- return sum( a[k]*(t**k) for k in xrange(len(a)) )
+ return sum( a[k]*(t**k) for k in range(len(a)) )
def inner_product(self, x, y):
"""
M = list(self._multiplication_table) # copy
- for i in xrange(len(M)):
+ for i in range(len(M)):
# M had better be "square"
M[i] = [self.monomial(i)] + M[i]
M = [["*"] + list(self.gens())] + M
True
"""
- return tuple( self.random_element() for idx in xrange(count) )
+ return tuple( self.random_element() for idx in range(count) )
def rank(self):
"""
def __init__(self, n, field=QQ, **kwargs):
V = VectorSpace(field, n)
- mult_table = [ [ V.gen(i)*(i == j) for j in xrange(n) ]
- for i in xrange(n) ]
+ mult_table = [ [ V.gen(i)*(i == j) for j in range(n) ]
+ for i in range(n) ]
fdeja = super(RealCartesianProductEJA, self)
return fdeja.__init__(field, mult_table, rank=n, **kwargs)
V = VectorSpace(field, dimension**2)
W = V.span_of_basis( _mat2vec(s) for s in basis )
n = len(basis)
- mult_table = [[W.zero() for j in xrange(n)] for i in xrange(n)]
- for i in xrange(n):
- for j in xrange(n):
+ mult_table = [[W.zero() for j in range(n)] for i in range(n)]
+ for i in range(n):
+ for j in range(n):
mat_entry = (basis[i]*basis[j] + basis[j]*basis[i])/2
mult_table[i][j] = W.coordinate_vector(_mat2vec(mat_entry))
# The basis of symmetric matrices, as matrices, in their R^(n-by-n)
# coordinates.
S = []
- for i in xrange(n):
- for j in xrange(i+1):
+ for i in range(n):
+ for j in range(i+1):
Eij = matrix(field, n, lambda k,l: k==i and l==j)
if i == j:
Sij = Eij
# Go top-left to bottom-right (reading order), converting every
# 2-by-2 block we see to a single complex element.
elements = []
- for k in xrange(n/2):
- for j in xrange(n/2):
+ for k in range(n/2):
+ for j in range(n/2):
submat = M[2*k:2*k+2,2*j:2*j+2]
if submat[0,0] != submat[1,1]:
raise ValueError('bad on-diagonal submatrix')
# * The diagonal will (as a result) be real.
#
S = []
- for i in xrange(n):
- for j in xrange(i+1):
+ for i in range(n):
+ for j in range(i+1):
Eij = matrix(F, n, lambda k,l: k==i and l==j)
if i == j:
Sij = cls.real_embed(Eij)
# 4-by-4 block we see to a 2-by-2 complex block, to a 1-by-1
# quaternion block.
elements = []
- for l in xrange(n/4):
- for m in xrange(n/4):
+ for l in range(n/4):
+ for m in range(n/4):
submat = ComplexMatrixEuclideanJordanAlgebra.real_unembed(
M[4*l:4*l+4,4*m:4*m+4] )
if submat[0,0] != submat[1,1].conjugate():
# * The diagonal will (as a result) be real.
#
S = []
- for i in xrange(n):
- for j in xrange(i+1):
+ for i in range(n):
+ for j in range(i+1):
Eij = matrix(Q, n, lambda k,l: k==i and l==j)
if i == j:
Sij = cls.real_embed(Eij)
"""
def __init__(self, n, field=QQ, **kwargs):
V = VectorSpace(field, n)
- mult_table = [[V.zero() for j in xrange(n)] for i in xrange(n)]
- for i in xrange(n):
- for j in xrange(n):
+ mult_table = [[V.zero() for j in range(n)] for i in range(n)]
+ for i in range(n):
+ for j in range(n):
x = V.gen(i)
y = V.gen(j)
x0 = x[0]