From e65a63e5cc7fda873d9ed34ded4d8c72d3a666f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sun, 27 Aug 2017 09:14:25 +0200 Subject: [PATCH] py3: future division in matrix2 --- src/sage/matrix/matrix2.pyx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx index f2f09095486..0e3787a103d 100644 --- a/src/sage/matrix/matrix2.pyx +++ b/src/sage/matrix/matrix2.pyx @@ -39,7 +39,7 @@ bug, see :trac:`17527`):: # the License, or (at your option) any later version. # http://www.gnu.org/licenses/ #***************************************************************************** -from __future__ import print_function, absolute_import +from __future__ import print_function, absolute_import, division from cpython cimport * from cysignals.signals cimport sig_check @@ -1348,22 +1348,23 @@ cdef class Matrix(Matrix1): B = self.new_matrix() for i in range(m): for j in range(n): - B.set_unsafe(i,j, one-self.get_unsafe(i,j)) + B.set_unsafe(i, j, one-self.get_unsafe(i, j)) b = B.rook_vector(algorithm=algorithm, use_complement=False) complement = not complement elif algorithm == "Ryser": - b = [self.permanental_minor(k,algorithm="Ryser") for k in range(mn+1)] + b = [self.permanental_minor(k,algorithm="Ryser") + for k in range(mn + 1)] elif algorithm == "ButeraPernici": p = permanental_minor_polynomial(self) - b = [p[k] for k in range(mn+1)] + b = [p[k] for k in range(mn + 1)] elif algorithm == "Godsil": from sage.graphs.bipartite_graph import BipartiteGraph p = BipartiteGraph(self).matching_polynomial() d = p.degree() - b = [p[i]*(-1)**((d - i)/2) for i in range(d, d-2*mn-1, -2)] + b = [p[i] * (-1)**((d - i)//2) for i in range(d, d-2*mn-1, -2)] else: raise ValueError('algorithm must be one of "Ryser", "ButeraPernici" or "Godsil".') @@ -1371,7 +1372,7 @@ cdef class Matrix(Matrix1): # now compute the permanental minor of the complement matrix if needed if complement: a = [one] - c1 = 1 + c1 = QQ.one() for k in range(1, mn + 1): c1 = c1*(m-k+1)*(n-k+1)/k c = c1 @@ -15013,17 +15014,17 @@ def _binomial(Py_ssize_t n, Py_ssize_t k): """ cdef Py_ssize_t i - if k > (n/2): - k = n-k + if 2 * k > n: + k = n - k if k == 0: return 1 result = n - n, k = n-1, k-1 + n, k = n - 1, k - 1 i = 2 while k > 0: - result = (result*n)/i - i, n, k = i+1, n-1, k-1 + result = (result * n) // i + i, n, k = i + 1, n - 1, k - 1 return result def _jordan_form_vector_in_difference(V, W):