From 7736b0b5ef9743bcadb48601cafb9003fb068a42 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 8 Dec 2020 10:36:09 -0500 Subject: [PATCH] eja: fix a baaaaaad typo in the BilinearFormEJA. --- mjo/eja/eja_algebra.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 081abd3..34f8801 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -315,7 +315,7 @@ class FiniteDimensionalEJA(CombinatorialFreeModule): This method should of course always return ``True``, unless this algebra was constructed with ``check_axioms=False`` and - passed an invalid multiplication table. + passed an invalid Jordan or inner-product. """ # Used to check whether or not something is zero in an inexact @@ -2307,10 +2307,21 @@ class BilinearFormEJA(ConcreteEJA): ....: for j in range(n-1) ] sage: actual == expected True + """ def __init__(self, B, **kwargs): - if not B.is_positive_definite(): - raise ValueError("bilinear form is not positive-definite") + # The matrix "B" is supplied by the user in most cases, + # so it makes sense to check whether or not its positive- + # definite unless we are specifically asked not to... + if ("check_axioms" not in kwargs) or kwargs["check_axioms"]: + if not B.is_positive_definite(): + raise ValueError("bilinear form is not positive-definite") + + # However, all of the other data for this EJA is computed + # by us in manner that guarantees the axioms are + # satisfied. So, again, unless we are specifically asked to + # verify things, we'll skip the rest of the checks. + if "check_axioms" not in kwargs: kwargs["check_axioms"] = False def inner_product(x,y): return (y.T*B*x)[0,0] @@ -2321,13 +2332,9 @@ class BilinearFormEJA(ConcreteEJA): xbar = x[1:,0] y0 = y[0,0] ybar = y[1:,0] - z0 = (y.T*x)[0,0] + z0 = inner_product(y,x) zbar = y0*xbar + x0*ybar - return P([0] + zbar.list()) - - # We know this is a valid EJA, but will double-check - # if the user passes check_axioms=True. - if "check_axioms" not in kwargs: kwargs["check_axioms"] = False + return P([z0] + zbar.list()) n = B.nrows() column_basis = tuple( b.column() for b in FreeModule(ZZ, n).basis() ) -- 2.44.2