X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_utils.py;h=cf75e325697dcefb3bf682b855f8d83e3e4f89e2;hb=e529e0e2775cf50207c7d01d5907214d03cdff5c;hp=d486b4c604723b2a3e8544c2cf2644edb733d713;hpb=49f266e16de87af712beb680570ff39e2ae87de4;p=sage.d.git diff --git a/mjo/eja/eja_utils.py b/mjo/eja/eja_utils.py index d486b4c..cf75e32 100644 --- a/mjo/eja/eja_utils.py +++ b/mjo/eja/eja_utils.py @@ -26,11 +26,11 @@ def gram_schmidt(v): sage: u = gram_schmidt(v) sage: all( u_i.inner_product(u_i).sqrt() == 1 for u_i in u ) True - sage: u[0].inner_product(u[1]) == 0 + sage: bool(u[0].inner_product(u[1]) == 0) True - sage: u[0].inner_product(u[2]) == 0 + sage: bool(u[0].inner_product(u[2]) == 0) True - sage: u[1].inner_product(u[2]) == 0 + sage: bool(u[1].inner_product(u[2]) == 0) True TESTS: @@ -67,29 +67,10 @@ def gram_schmidt(v): # And now drop all zero vectors again if they were "orthogonalized out." v = [ v_i for v_i in v if not v_i.is_zero() ] - # Now pretend to normalize, building a new ring R that contains - # all of the necessary square roots. - norms_squared = [0]*len(v) - - for i in xrange(len(v)): - norms_squared[i] = v[i].inner_product(v[i]) - ns = [norms_squared[i].numerator(), norms_squared[i].denominator()] - - # Do the numerator and denominator separately so that we - # adjoin e.g. sqrt(2) and sqrt(3) instead of sqrt(2/3). - for j in xrange(len(ns)): - PR = PolynomialRing(R, 'z') - z = PR.gen() - p = z**2 - ns[j] - if p.is_irreducible(): - R = NumberField(p, - 'sqrt' + str(ns[j]), - embedding=RLF(ns[j]).sqrt()) - - # When we're done, we have to change every element's ring to the - # extension that we wound up with, and then normalize it (which - # should work, since "R" contains its norm now). + # Just normalize. If the algebra is missing the roots, we can't add + # them here because then our subalgebra would have a bigger field + # than the superalgebra. for i in xrange(len(v)): - v[i] = v[i].change_ring(R) / R(norms_squared[i]).sqrt() + v[i] = v[i] / v[i].norm() return v