@@ -10,7 +10,6 @@ from sage.rings.integer_ring import ZZ
10
10
from sage.matrix.matrix_integer_sparse cimport Matrix_integer_sparse
11
11
from sage.matrix.matrix_integer_dense cimport Matrix_integer_dense
12
12
from sage.rings.integer cimport Integer
13
- from libcpp.vector cimport vector
14
13
15
14
cdef class Matrix:
16
15
"""
@@ -212,30 +211,27 @@ cdef class Matrix:
212
211
<class 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
213
212
"""
214
213
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
217
215
218
216
cdef Matrix_integer_dense Td
219
217
cdef Matrix_integer_sparse Ts
220
218
221
219
# Ugly code...
222
220
if sparse:
223
221
Ts = MatrixSpace(ZZ, n, sparse = sparse).zero_matrix().__copy__()
224
- k = 0
225
222
for i from 0 <= i < n:
226
223
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)
230
227
return Ts
231
228
else :
232
229
Td = MatrixSpace(ZZ, n, sparse = sparse).zero_matrix().__copy__()
233
- k = 0
234
230
for i from 0 <= i < n:
235
231
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)
239
235
return Td
240
236
241
237
0 commit comments