From: Michael Orlitzky Date: Mon, 9 Nov 2020 12:44:59 +0000 (-0500) Subject: eja: use fuzzy equality test with inexact base rings. X-Git-Url: http://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=ef91dedb7fecddd4c0a5472e501188739b3d3d88;p=sage.d.git eja: use fuzzy equality test with inexact base rings. --- diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 3846b83..7f7b1f9 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -296,14 +296,26 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule): this algebra was constructed with ``check=False`` and passed an invalid multiplication table. """ + + # Used to check whether or not something is zero in an inexact + # ring. This number is sufficient to allow the construction of + # QuaternionHermitianEJA(2, RDF) with check=True. + epsilon = 1e-16 + for i in range(self.dimension()): for j in range(self.dimension()): for k in range(self.dimension()): x = self.monomial(i) y = self.monomial(j) z = self.monomial(k) - if (x*y).inner_product(z) != x.inner_product(y*z): - return False + diff = (x*y).inner_product(z) - x.inner_product(y*z) + + if self.base_ring().is_exact(): + if diff != 0: + return False + else: + if diff.abs() > epsilon: + return False return True