From 1d9dfc6c139733099cd7fdff1c5587cd0cc3ac63 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Thu, 4 Jul 2019 19:37:52 -0400 Subject: [PATCH] eja: add the random_eja() function. --- mjo/eja/euclidean_jordan_algebra.py | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index c47f400..5eb90fd 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -658,3 +658,34 @@ def eja_sn(dimension, field=QQ): Qs.append(Q) return FiniteDimensionalEuclideanJordanAlgebra(field,Qs,rank=dimension) + + +def random_eja(): + """ + Return a "random" finite-dimensional Euclidean Jordan Algebra. + + ALGORITHM: + + For now, we choose a random natural number ``n`` (greater than zero) + and then give you back one of the following: + + * The cartesian product of the rational numbers ``n`` times; this is + ``QQ^n`` with the Hadamard product. + + * The Jordan spin algebra on ``QQ^n``. + + * The ``n``-by-``n`` rational symmetric matrices with the symmetric + product. + + Later this might be extended to return Cartesian products of the + EJAs above. + + TESTS:: + + sage: random_eja() + Euclidean Jordan algebra of degree... + + """ + n = ZZ.random_element(1,10).abs() + constructor = choice([eja_rn, eja_ln, eja_sn]) + return constructor(dimension=n, field=QQ) -- 2.44.2