]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: fix a baaaaaad typo in the BilinearFormEJA.
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 8 Dec 2020 15:36:09 +0000 (10:36 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 8 Dec 2020 15:36:09 +0000 (10:36 -0500)
mjo/eja/eja_algebra.py

index 081abd303c32d35c9376ad99ecf2732a14ea3e9b..34f88010cd31eb8d5cba9446d6dd6ffd2f5a2eaf 100644 (file)
@@ -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() )