Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/sage/libs/linbox/conversion.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,8 @@ cdef inline Vector_integer_dense new_sage_vector_integer_dense(P, DenseVector_in
- v -- linbox vector
"""
cdef Vector_integer_dense res = P()
cdef cppvector[Integer] * vec = &v.refRep()
cdef size_t i
for i in range(<size_t> res._degree):
mpz_set(res._entries[i], vec[0][i].get_mpz_const())
mpz_set(res._entries[i], v.getEntry(i).get_mpz_const())

return res
3 changes: 0 additions & 3 deletions src/sage/libs/linbox/linbox.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_double Field
ctypedef double Element
DenseMatrix_Modular_double(Field F, size_t m, size_t n)
DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)

Expand All @@ -42,7 +41,6 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_float Field
ctypedef float Element
DenseMatrix_Modular_float(Field F, size_t m, size_t n)
DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)

Expand Down Expand Up @@ -101,7 +99,6 @@ cdef extern from "linbox/vector/vector.h":
DenseVector_integer (Field &F)
DenseVector_integer (Field &F, long& m)
DenseVector_integer (Field &F, cppvector[Integer]&)
cppvector[Element]& refRep()
size_t size()
void resize(size_t)
void resize(size_t n, const Element&)
Expand Down
9 changes: 7 additions & 2 deletions src/sage/matrix/matrix_modn_dense_template.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -221,9 +221,14 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_
return 0,[]

cdef ModField *F = new ModField(<long>modulus)
cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols)
cdef Py_ssize_t r = reducedRowEchelonize(A[0])
cdef DenseMatrix *A = new DenseMatrix(F[0], nrows, ncols)

cdef Py_ssize_t i,j
for i in range(nrows):
for j in range(ncols):
A.setEntry(i, j, entries[i*ncols+j])

cdef Py_ssize_t r = reducedRowEchelonize(A[0])
for i in range(nrows):
for j in range(ncols):
entries[i*ncols+j] = <celement>A.getEntry(i,j)
Expand Down