@@ -10,7 +10,6 @@ from sage.rings.integer_ring import ZZ
1010from sage.matrix.matrix_integer_sparse cimport Matrix_integer_sparse
1111from sage.matrix.matrix_integer_dense cimport Matrix_integer_dense
1212from sage.rings.integer cimport Integer
13- from libcpp.vector cimport vector
1413
1514cdef class Matrix:
1615 """
@@ -212,30 +211,27 @@ cdef class Matrix:
212211 <class 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
213212 """
214213 cdef long n = self .nrows()
215- cdef long i, j, k
216- cdef vector[scalar] v = < vector[scalar]> self .M.get_entries() # coercion needed to deal with const
214+ cdef long i, j
217215
218216 cdef Matrix_integer_dense Td
219217 cdef Matrix_integer_sparse Ts
220218
221219 # Ugly code...
222220 if sparse:
223221 Ts = MatrixSpace(ZZ, n, sparse = sparse).zero_matrix().__copy__()
224- k = 0
225222 for i from 0 <= i < n:
226223 for j from 0 <= j < n:
227- if v[k]:
228- Ts.set_unsafe(i, j, Integer(v[k]))
229- k += 1
224+ Mij = Integer( self .M.sub(i + 1 ,j + 1 ));
225+ if Mij:
226+ Ts.set_unsafe(i, j, Mij)
230227 return Ts
231228 else :
232229 Td = MatrixSpace(ZZ, n, sparse = sparse).zero_matrix().__copy__()
233- k = 0
234230 for i from 0 <= i < n:
235231 for j from 0 <= j < n:
236- if v[k]:
237- Td.set_unsafe(i, j, Integer(v[k]))
238- k += 1
232+ Mij = Integer( self .M.sub(i + 1 ,j + 1 ));
233+ if Mij:
234+ Td.set_unsafe(i, j, Mij)
239235 return Td
240236
241237
0 commit comments