Setup : Sage 9.5.rc1 running in Debian testing on core i7 + 16 GB RAM.
def test(Size=2, Ring=QQ):
from time import time as stime
with seed(0):
M = matrix(Ring, Size, Size, lambda u, v:Ring.random_element())
t0 = stime()
SL = M.eigenspaces_left(algebraic_multiplicity=True)
t1 = stime()
VL = M.eigenvectors_left()
t2 = stime()
return t1-t0, SL, t2-t1, VL
test() runs as expected, as well as test(Size=5) and test(Ring=AA), with
very reasonable runtimes (under a second, IIRC). But test(Size=3, Ring=AA)
“never returns” (meaning that it hadn’t returned when I interrupted it
after tens of minutes). Further exploration showec that neither
M.eigenspaces_left(algebraic_multiplicity=True) nor M.eigenvectors_left()
return.
Is that an expected behaviour ?
FWIW, stack trace at interruption :
sage: AA3=test(Size=3, Ring=AA)
AA3=test(Size=3, Ring=AA) C-c
C-c---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in minpoly(self)
4492 try:
-> 4493 return self._minimal_polynomial
4494 except AttributeError:
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/structure/element.pyx
in sage.structure.element.Element.__getattr__
(build/cythonized/sage/structure/element.c:4754)()
493 """
--> 494 return self.getattr_from_category(name)
495
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/structure/element.pyx
in sage.structure.element.Element.getattr_from_category
(build/cythonized/sage/structure/element.c:4866)()
506 cls = P._abstract_element_class
--> 507 return getattr_from_other_class(self, cls, name)
508
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/cpython/getattr.pyx
in sage.cpython.getattr.getattr_from_other_class
(build/cythonized/sage/cpython/getattr.c:2633)()
360 dummy_error_message.name = name
--> 361 raise AttributeError(dummy_error_message)
362 attribute = <object>attr
AttributeError: 'sage.rings.real_mpfi.RealIntervalFieldElement' object has no
attribute '_evaluate_polynomial'
During handling of the above exception, another exception occurred:
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-344-ff7c46010ad2> in <module>
----> 1 AA3=test(Size=Integer(3), Ring=AA)
<string> in test(Size, Ring)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.eigenspaces_left
(build/cythonized/sage/matrix/matrix2.c:43588)()
6270 self = self.change_ring(F)
6271 A = self - alpha
-> 6272 W = A.kernel()
6273 V.append((alpha,
W.ambient_module().span_of_basis(W.basis()), e))
6274 else:
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.left_kernel
(build/cythonized/sage/matrix/matrix2.c:32440)()
4947
4948 tm = verbose("computing left kernel for %sx%s matrix" %
(self.nrows(), self.ncols()),level=1)
-> 4949 K = self.transpose().right_kernel(*args, **kwds)
4950 self.cache('left_kernel', K)
4951 verbose("done computing left kernel for %sx%s matrix" %
(self.nrows(), self.ncols()),level=1,t=tm)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.right_kernel
(build/cythonized/sage/matrix/matrix2.c:31909)()
4785
4786 # Go get the kernel matrix, this is where it all happens
-> 4787 M = self.right_kernel_matrix(*args, **kwds)
4788
4789 ambient = R**self.ncols()
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.right_kernel_matrix
(build/cythonized/sage/matrix/matrix2.c:30829)()
4394
4395 if M is None and R in _Fields:
-> 4396 format, M = self._right_kernel_matrix_over_field()
4397
4398 if M is None and R.is_integral_domain():
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix._right_kernel_matrix_over_field
(build/cythonized/sage/matrix/matrix2.c:27969)()
3686 from sage.matrix.matrix_space import MatrixSpace
3687 tm = verbose("computing right kernel matrix over an arbitrary
field for %sx%s matrix" % (self.nrows(), self.ncols()),level=1)
-> 3688 E = self.echelon_form(*args, **kwds)
3689 pivots = E.pivots()
3690 pivots_set = set(pivots)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.echelon_form
(build/cythonized/sage/matrix/matrix2.c:52440)()
7686 E = self.__copy__()
7687 if algorithm == 'default':
-> 7688 v = E.echelonize(cutoff=cutoff, **kwds)
7689 else:
7690 v = E.echelonize(algorithm = algorithm, cutoff=cutoff,
**kwds)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix.echelonize
(build/cythonized/sage/matrix/matrix2.c:51817)()
7583 if self.base_ring() in _Fields:
7584 if algorithm in ['classical', 'partial_pivoting',
'scaled_partial_pivoting', 'scaled_partial_pivoting_valuation']:
-> 7585 self._echelon_in_place(algorithm)
7586 elif algorithm == 'strassen':
7587 self._echelon_strassen(cutoff)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/matrix/matrix2.pyx
in sage.matrix.matrix2.Matrix._echelon_in_place
(build/cythonized/sage/matrix/matrix2.c:53308)()
7848 sig_check()
7849 for r in range(start_row, nr):
-> 7850 if A.get_unsafe(r, c):
7851 pivots.append(c)
7852 a_inverse = ~A.get_unsafe(r, c)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in __bool__(self)
4043 right = sd._right if op is operator.sub else -sd._right
4044
-> 4045 lp = left.minpoly()
4046 rp = right.minpoly()
4047 if lp != rp:
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in minpoly(self)
4493 return self._minimal_polynomial
4494 except AttributeError:
-> 4495 self.exactify()
4496 self._minimal_polynomial = self._descr.minpoly()
4497 return self._minimal_polynomial
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
4363 if isinstance(od, (ANRational, ANExtensionElement)):
4364 return
-> 4365 self._set_descr(self._descr.exactify())
4366
4367 def _set_descr(self, new_descr):
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
8430 right = self._right
8431 left.exactify()
-> 8432 right.exactify()
8433 gen = left._exact_field().union(right._exact_field())
8434 left_value = gen(left._exact_value())
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
4363 if isinstance(od, (ANRational, ANExtensionElement)):
4364 return
-> 4365 self._set_descr(self._descr.exactify())
4366
4367 def _set_descr(self, new_descr):
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
8430 right = self._right
8431 left.exactify()
-> 8432 right.exactify()
8433 gen = left._exact_field().union(right._exact_field())
8434 left_value = gen(left._exact_value())
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
4363 if isinstance(od, (ANRational, ANExtensionElement)):
4364 return
-> 4365 self._set_descr(self._descr.exactify())
4366
4367 def _set_descr(self, new_descr):
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
8430 right = self._right
8431 left.exactify()
-> 8432 right.exactify()
8433 gen = left._exact_field().union(right._exact_field())
8434 left_value = gen(left._exact_value())
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
4363 if isinstance(od, (ANRational, ANExtensionElement)):
4364 return
-> 4365 self._set_descr(self._descr.exactify())
4366
4367 def _set_descr(self, new_descr):
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
8176
8177 if op == '~':
-> 8178 arg.exactify()
8179 return arg._descr.invert(None)
8180
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
4363 if isinstance(od, (ANRational, ANExtensionElement)):
4364 return
-> 4365 self._set_descr(self._descr.exactify())
4366
4367 def _set_descr(self, new_descr):
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in exactify(self)
8431 left.exactify()
8432 right.exactify()
-> 8433 gen = left._exact_field().union(right._exact_field())
8434 left_value = gen(left._exact_value())
8435 right_value = gen(right._exact_value())
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in union(self, other)
3230 op = QQx(op)
3231 # pari_nf = self._field.pari_nf()
-> 3232 pari_nf = self.pari_field()
3233 factors = list(pari_nf.nffactor(op).lift())[0]
3234 x, y = QQxy.gens()
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in pari_field(self)
3134 if self._pari_field is None:
3135 pari_pol = self._field.pari_polynomial("y")
-> 3136 self._pari_field = pari_pol.nfinit(1)
3137 return self._pari_field
3138
cypari2/auto_gen.pxi in cypari2.gen.Gen_base.nfinit()
KeyboardInterrupt:
Any hint appreciated…
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-support/15ee9b9a-5ffa-4aa4-b8b9-019d81c447b7n%40googlegroups.com.