X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;ds=sidebyside;f=mjo%2Feja%2Feja_algebra.py;h=ec692e4f93b8f015f8813eb2653e70a053b66dff;hb=452398e489e1e45cd06ce010878eeb07c3e72dd5;hp=8ca501d6ba944a539901d384a78a5c8a0f45a7ca;hpb=3f8818f3eca0b2ea388130ff805875012cf902cb;p=sage.d.git diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 8ca501d..ec692e4 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -2111,6 +2111,20 @@ class BilinearFormEJA(RationalBasisEuclideanJordanAlgebra): sage: J0.multiplication_table() == J0.multiplication_table() True + An error is raised if the matrix `B` does not correspond to a + positive-definite bilinear form:: + + sage: B = matrix.random(QQ,2,3) + sage: J = BilinearFormEJA(B) + Traceback (most recent call last): + ... + ValueError: bilinear form is not positive-definite + sage: B = matrix.zero(QQ,3) + sage: J = BilinearFormEJA(B) + Traceback (most recent call last): + ... + ValueError: bilinear form is not positive-definite + TESTS: We can create a zero-dimensional algebra:: @@ -2151,7 +2165,7 @@ class BilinearFormEJA(RationalBasisEuclideanJordanAlgebra): n = B.nrows() if not B.is_positive_definite(): - raise TypeError("matrix B is not positive-definite") + raise ValueError("bilinear form is not positive-definite") V = VectorSpace(field, n) mult_table = [[V.zero() for j in range(n)] for i in range(n)] @@ -2187,9 +2201,8 @@ class BilinearFormEJA(RationalBasisEuclideanJordanAlgebra): Return a random instance of this algebra. """ n = ZZ.random_element(cls._max_random_instance_size() + 1) - if n == 0: - # Special case needed since we use (n-1) below. - B = matrix.identity(field, 0) + if n.is_zero(): + B = matrix.identity(field, n) return cls(B, field, **kwargs) B11 = matrix.identity(field,1) @@ -2292,6 +2305,16 @@ class JordanSpinEJA(BilinearFormEJA): B = matrix.identity(field, n) super(JordanSpinEJA, self).__init__(B, field, **kwargs) + @classmethod + def random_instance(cls, field=AA, **kwargs): + """ + Return a random instance of this type of algebra. + + Needed here to override the implementation for ``BilinearFormEJA``. + """ + n = ZZ.random_element(cls._max_random_instance_size() + 1) + return cls(n, field, **kwargs) + class TrivialEJA(FiniteDimensionalEuclideanJordanAlgebra): """