sage: J = ComplexHermitianEJA(3)
sage: J.is_trivial()
False
- sage: A = J.zero().subalgebra_generated_by()
- sage: A.is_trivial()
- True
"""
return self.dimension() == 0
return self.linear_combination(zip(self.gens(), coeffs))
- def random_element(self):
- # Temporary workaround for https://trac.sagemath.org/ticket/28327
- if self.is_trivial():
- return self.zero()
- else:
- s = super(FiniteDimensionalEuclideanJordanAlgebra, self)
- return s.random_element()
-
def random_elements(self, count):
"""
Return ``count`` random elements as a tuple.
TESTS:
Ensure that every EJA that we know how to construct has a
- positive integer rank::
+ positive integer rank, unless the algebra is trivial in
+ which case its rank will be zero::
sage: set_random_seed()
- sage: r = random_eja().rank()
- sage: r in ZZ and r > 0
+ sage: J = random_eja()
+ sage: r = J.rank()
+ sage: r in ZZ
+ True
+ sage: r > 0 or (r == 0 and J.is_trivial())
True
"""
return x.to_vector().inner_product(y.to_vector())
-def random_eja():
+def random_eja(field=QQ):
"""
Return a "random" finite-dimensional Euclidean Jordan Algebra.
"""
classname = choice(KnownRankEJA.__subclasses__())
- return classname.random_instance()
+ return classname.random_instance(field=field)