]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: revert random_element() to old fast behavior.
authorMichael Orlitzky <michael@orlitzky.com>
Mon, 31 Jan 2022 22:22:44 +0000 (17:22 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Mon, 31 Jan 2022 22:22:44 +0000 (17:22 -0500)
mjo/eja/eja_algebra.py

index afd0f55c103c885315e99bc90afe647262aadfbd..9f8a2585d456b7d82f1c59f1ca067eebf23d0d60 100644 (file)
@@ -1447,26 +1447,13 @@ class FiniteDimensionalEJA(CombinatorialFreeModule):
         # For a general base ring... maybe we can trust this to do the
         # right thing? Unlikely, but.
         V = self.vector_space()
-        v = V.random_element()
-
-        if self.base_ring() is AA:
-            # The "random element" method of the algebraic reals is
-            # stupid at the moment, and only returns integers between
-            # -2 and 2, inclusive:
-            #
-            #   https://trac.sagemath.org/ticket/30875
-            #
-            # Instead, we implement our own "random vector" method,
-            # and then coerce that into the algebra. We use the vector
-            # space degree here instead of the dimension because a
-            # subalgebra could (for example) be spanned by only two
-            # vectors, each with five coordinates.  We need to
-            # generate all five coordinates.
-            if thorough:
-                v *= QQbar.random_element().real()
-            else:
-                v *= QQ.random_element()
+        if self.base_ring() is AA and not thorough:
+            # Now that AA generates actually random random elements
+            # (post Trac 30875), we only need to de-thorough the
+            # randomness when asked to.
+            V = V.change_ring(QQ)
 
+        v = V.random_element()
         return self.from_vector(V.coordinate_vector(v))
 
     def random_elements(self, count, thorough=False):