void-packages/srcpkgs/sagemath/patches/35612-linbox_1.7.0.patch
Gonzalo Tornaría faa5bf4b2a sagemath: update to 10.0.
Also:
 - support networkx 3.1 (sagemath#35584)
 - support linbox 1.7.0 (sagemath#35612)
 - support maxima 5.46.0 (sagemath#35619)
 - support sympy 1.12 (sagemath#35635)
2023-05-31 13:18:40 +02:00

65 lines
2.8 KiB
Diff

diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd
index 7794c9edc39..1753277b1f1 100644
--- a/src/sage/libs/linbox/conversion.pxd
+++ b/src/sage/libs/linbox/conversion.pxd
@@ -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
diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd
index 9112d151f8b..bfeda4b6042 100644
--- a/src/sage/libs/linbox/linbox.pxd
+++ b/src/sage/libs/linbox/linbox.pxd
@@ -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)
@@ -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)
@@ -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&)
diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi
index abf29badce6..68b869ce314 100644
--- a/src/sage/matrix/matrix_modn_dense_template.pxi
+++ b/src/sage/matrix/matrix_modn_dense_template.pxi
@@ -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)