deortho_vector_basis = tuple( V(b.list()) for b in basis )
from mjo.eja.eja_utils import gram_schmidt
- basis = gram_schmidt(basis, inner_product)
+ basis = tuple(gram_schmidt(basis, inner_product))
# Save the (possibly orthonormalized) matrix basis for
# later...
a = ( a_i.change_ring(self.base_ring())
for a_i in self._rational_algebra._charpoly_coefficients() )
- # Now convert the coordinate variables back to the
+ if self._deortho_matrix is None:
+ # This can happen if our base ring was, say, AA and we
+ # chose not to (or didn't need to) orthonormalize. It's
+ # still faster to do the computations over QQ even if
+ # the numbers in the boxes stay the same.
+ return tuple(a)
+
+ # Otherwise, convert the coordinate variables back to the
# deorthonormalized ones.
R = self.coordinate_polynomial_ring()
from sage.modules.free_module_element import vector