diff --git a/src/sage/matrix/matrix_integer_dense.pyx b/src/sage/matrix/matrix_integer_dense.pyx index d582393e565..a1ad92fa58b 100644 --- a/src/sage/matrix/matrix_integer_dense.pyx +++ b/src/sage/matrix/matrix_integer_dense.pyx @@ -1416,7 +1416,7 @@ cdef class Matrix_integer_dense(Matrix_dense): sig_on() linbox_fmpz_mat_charpoly(g._poly, self._matrix) sig_off() - if g.lc() == 1: + if g.lc() == 1 and g.degree() == self._nrows: break elif algorithm == 'generic': g = Matrix_dense.charpoly(self, var) diff --git a/src/sage/matrix/matrix_integer_sparse.pyx b/src/sage/matrix/matrix_integer_sparse.pyx index 9c68b951907..dc961d53f44 100644 --- a/src/sage/matrix/matrix_integer_sparse.pyx +++ b/src/sage/matrix/matrix_integer_sparse.pyx @@ -912,7 +912,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): fmpz_poly_set_coeff_mpz(g._poly, i, tmp) _fmpz_poly_set_length(g._poly, p.size()) - if g.lc() == 1: + if g.lc() == 1 and g.degree() == self._nrows: break del M