diff --git a/build/pkgs/cmr/checksums.ini b/build/pkgs/cmr/checksums.ini index a18c1299e8e..6c4f1df1afb 100644 --- a/build/pkgs/cmr/checksums.ini +++ b/build/pkgs/cmr/checksums.ini @@ -1,5 +1,5 @@ tarball=cmr-0+VERSION.tar.gz -sha1=6e55e008de787217fa5b021c693100b98365b311 -md5=51844915d4bcd1200a18a46e8ce764f2 -cksum=3720610576 +sha1=e38b305f32db415f75d6d76b30f9f40e5c116d8f +md5=99db21d9919fd357a16b4a2efa2da0ed +cksum=80832571 upstream_url=https://github.com/discopt/cmr/archive/VERSION.tar.gz diff --git a/build/pkgs/cmr/package-version.txt b/build/pkgs/cmr/package-version.txt index 1e987aadd6f..86300fa4b75 100644 --- a/build/pkgs/cmr/package-version.txt +++ b/build/pkgs/cmr/package-version.txt @@ -1 +1 @@ -8b0dda14be73d9afc5eeda1461191b2b062072db +33415103202d46b1bd1f4832f83494fbe583bc1b diff --git a/src/sage/libs/cmr/cmr.pxd b/src/sage/libs/cmr/cmr.pxd index 27e60938802..e5cb9ca1f9b 100644 --- a/src/sage/libs/cmr/cmr.pxd +++ b/src/sage/libs/cmr/cmr.pxd @@ -237,11 +237,9 @@ cdef extern from "cmr/matroid.h": int8_t CMRmatroiddecCographicness(CMR_MATROID_DEC* dec) int8_t CMRmatroiddecRegularity(CMR_MATROID_DEC* dec) size_t CMRmatroiddecNumRows(CMR_MATROID_DEC* dec) - CMR_ELEMENT* CMRmatroiddecRowsRootElement(CMR_MATROID_DEC* dec) - size_t* CMRmatroiddecRowsParent(CMR_MATROID_DEC* dec) + CMR_ELEMENT* CMRmatroiddecRowsParent(CMR_MATROID_DEC* dec) size_t CMRmatroiddecNumColumns(CMR_MATROID_DEC* dec) - CMR_ELEMENT* CMRmatroiddecColumnsRootElement(CMR_MATROID_DEC* dec) - size_t* CMRmatroiddecColumnsParent(CMR_MATROID_DEC* dec) + CMR_ELEMENT* CMRmatroiddecColumnsParent(CMR_MATROID_DEC* dec) CMR_GRAPH* CMRmatroiddecGraph(CMR_MATROID_DEC* dec) CMR_GRAPH_EDGE* CMRmatroiddecGraphForest(CMR_MATROID_DEC* dec) size_t CMRmatroiddecGraphSizeForest(CMR_MATROID_DEC* dec) @@ -257,7 +255,7 @@ cdef extern from "cmr/matroid.h": size_t CMRmatroiddecNumPivots(CMR_MATROID_DEC* dec) size_t* CMRmatroiddecPivotRows(CMR_MATROID_DEC* dec) size_t* CMRmatroiddecPivotColumns(CMR_MATROID_DEC* dec) - # CMR_ERROR CMRmatroiddecPrint(CMR* cmr, CMR_MATROID_DEC* dec, FILE* stream, size_t indent, bool printChildren, bool printParentRowsColumns, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots) + # CMR_ERROR CMRmatroiddecPrint(CMR* cmr, CMR_MATROID_DEC* dec, FILE* stream, size_t indent, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots) CMR_ERROR CMRmatroiddecFree(CMR* cmr, CMR_MATROID_DEC** pdec) CMR_ERROR CMRmatroiddecFreeNode(CMR* cmr, CMR_MATROID_DEC** pdec) diff --git a/src/sage/matrix/args.pxd b/src/sage/matrix/args.pxd index 519f55e8455..fdf6d923e4d 100644 --- a/src/sage/matrix/args.pxd +++ b/src/sage/matrix/args.pxd @@ -55,6 +55,7 @@ cdef class MatrixArgs: cdef bint is_finalized cpdef Matrix matrix(self, bint convert=?) noexcept + cpdef Matrix element(self, bint immutable=?, bint convert=?) noexcept cpdef list list(self, bint convert=?) noexcept cpdef dict dict(self, bint convert=?) noexcept diff --git a/src/sage/matrix/args.pyx b/src/sage/matrix/args.pyx index 1ccc69ced80..a7065295b1b 100644 --- a/src/sage/matrix/args.pyx +++ b/src/sage/matrix/args.pyx @@ -721,7 +721,7 @@ cdef class MatrixArgs: self.typ = MA_ENTRIES_MATRIX return M - cpdef element(self, bint convert=True, bint immutable=False) noexcept: + cpdef Matrix element(self, bint immutable=False, bint convert=True) noexcept: r""" Return the element. """ diff --git a/src/sage/matrix/matrix_cmr_sparse.pyx b/src/sage/matrix/matrix_cmr_sparse.pyx index 4f707226d2f..7009ce21f4d 100644 --- a/src/sage/matrix/matrix_cmr_sparse.pyx +++ b/src/sage/matrix/matrix_cmr_sparse.pyx @@ -573,7 +573,11 @@ cdef class Matrix_cmr_chr_sparse(Matrix_cmr_sparse): first_marker = CMRrowToElement(row) second_marker = CMRcolumnToElement(column) - cdef int8_t characteristic = 0 + cdef int8_t characteristic = first_mat.parent().characteristic() + + if second_mat.parent().characteristic() != characteristic: + raise ValueError("The characteristic of two matrices are different") + CMR_CALL(CMRtwoSum(cmr, first._mat, second._mat, first_marker, second_marker, characteristic, &sum_mat)) sum = Matrix_cmr_chr_sparse._from_cmr(sum_mat, immutable=False) if row_subdivision or column_subdivision: @@ -642,7 +646,11 @@ cdef class Matrix_cmr_chr_sparse(Matrix_cmr_sparse): second_marker1 = CMRcolumnToElement(column1) second_marker2 = CMRcolumnToElement(column2) - cdef int8_t characteristic = 0 + cdef int8_t characteristic = first_mat.parent().characteristic() + + if second_mat.parent().characteristic() != characteristic: + raise ValueError("The characteristic of two matrices are different") + CMR_CALL(CMRthreeSum(cmr, first._mat, second._mat, first_marker1, second_marker1, first_marker2, second_marker2, characteristic, &sum_mat)) sum = Matrix_cmr_chr_sparse._from_cmr(sum_mat) return sum diff --git a/src/sage/matrix/seymour_decomposition.pyx b/src/sage/matrix/seymour_decomposition.pyx index 283eebaf0db..18be6b34608 100644 --- a/src/sage/matrix/seymour_decomposition.pyx +++ b/src/sage/matrix/seymour_decomposition.pyx @@ -120,8 +120,8 @@ cdef class DecompositionNode(SageObject): sage: C[1].parent_rows_and_columns() ((3, 4, 5), (2, 3)) """ - cdef size_t *parent_rows = CMRmatroiddecRowsParent(self._dec) - cdef size_t *parent_columns = CMRmatroiddecColumnsParent(self._dec) + cdef CMR_ELEMENT *parent_rows = CMRmatroiddecRowsParent(self._dec) + cdef CMR_ELEMENT *parent_columns = CMRmatroiddecColumnsParent(self._dec) if parent_rows == NULL or parent_rows[0] == SIZE_MAX: parent_rows_tuple = None else: