sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.43k stars 479 forks source link

Enhanced linbox interface #22872

Open videlec opened 7 years ago

videlec commented 7 years ago

In sage/libs/linbox/linbox.pxd we currently have two classes that gives an interface for dense integer matrix (Linbox_integer_dense) and sparse matrix over Z/nZ (Linbox_modn_sparse). These interfaces are then used in different matrix implementations in sage/matrix/.

This task ticket stands for improvement of the LinBox interface

Concrete ticket list

CC: @ClementPernet @JohnCremona @sagetrac-dlucas

Component: interfaces

Keywords: linbox

Issue created by migration from https://trac.sagemath.org/ticket/22872

ClementPernet commented 7 years ago

Description changed:

--- 
+++ 
@@ -3,6 +3,7 @@
 This task ticket stands for improvement of the linbox interface

 - moving the implementation directly in `sage/matrix` without the intermediate Cython classes
+- avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it).
 - more documentation and testing
 - support for other matrix types (e.g. sparse integer matrix)
 - expose more algorithms (e.g. solving)
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -7,3 +7,7 @@
 - more documentation and testing
 - support for other matrix types (e.g. sparse integer matrix)
 - expose more algorithms (e.g. solving)
+
+Concrete ticket list
+
+- #22924: cleaning for dense integer matrices
videlec commented 7 years ago
comment:3

I just noticed that there was a previous attempt to clean the interface in #21327 by C. Bouillaguet.

videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -1,13 +1,13 @@
 In `sage/libs/linbox/linbox.pxd` we currently have two classes that gives an interface for dense integer matrix (`Linbox_integer_dense`) and sparse matrix over Z/nZ (`Linbox_modn_sparse`). These interfaces are then used in different matrix implementations in `sage/matrix/`.

-This task ticket stands for improvement of the linbox interface
+This task ticket stands for improvement of the LinBox interface

 - moving the implementation directly in `sage/matrix` without the intermediate Cython classes
-- avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it).
+- avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it)
 - more documentation and testing
 - support for other matrix types (e.g. sparse integer matrix)
 - expose more algorithms (e.g. solving)

 Concrete ticket list

-- #22924: cleaning for dense integer matrices
+- #22924: implement a direct flint/LinBox interface and use it in `matrix_integer_dense.pyx`
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -11,3 +11,4 @@
 Concrete ticket list

 - #22924: implement a direct flint/LinBox interface and use it in `matrix_integer_dense.pyx`
+- #22966: warning while compiling `element_givaro.pyx`
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -12,3 +12,4 @@

 - #22924: implement a direct flint/LinBox interface and use it in `matrix_integer_dense.pyx`
 - #22966: warning while compiling `element_givaro.pyx`
+- #22970: use `fmpq_mat_t` for rational dense matrices
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -13,3 +13,4 @@
 - #22924: implement a direct flint/LinBox interface and use it in `matrix_integer_dense.pyx`
 - #22966: warning while compiling `element_givaro.pyx`
 - #22970: use `fmpq_mat_t` for rational dense matrices
+- #22971: more linbox in rational dense matrices
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -14,3 +14,4 @@
 - #22966: warning while compiling `element_givaro.pyx`
 - #22970: use `fmpq_mat_t` for rational dense matrices
 - #22971: more linbox in rational dense matrices
+- #23158: patch from LinBox
videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -14,4 +14,4 @@
 - #22966: warning while compiling `element_givaro.pyx`
 - #22970: use `fmpq_mat_t` for rational dense matrices
 - #22971: more linbox in rational dense matrices
-- #23158: patch from LinBox
+- #23158: LinBox patch for integer sparse linear solving
videlec commented 7 years ago

Description changed:

videlec commented 7 years ago

Description changed:

--- 
+++ 
@@ -15,3 +15,4 @@
 - #22970: use `fmpq_mat_t` for rational dense matrices
 - #22971: more linbox in rational dense matrices
 - #23158: LinBox patch for integer sparse linear solving
+- #23214: integer sparse linear systems
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -16,3 +16,4 @@
 - #22971: more linbox in rational dense matrices
 - #23158: LinBox patch for integer sparse linear solving
 - #23214: integer sparse linear systems
+- #24544: clean declarations + matrix modn
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -2,10 +2,9 @@

 This task ticket stands for improvement of the LinBox interface

-- moving the implementation directly in `sage/matrix` without the intermediate Cython classes
-- avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it)
+- moving the implementation directly in `sage/matrix` without the intermediate Cython classes. In particular, avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it) (done in #22924 and #24544)
 - more documentation and testing
-- support for other matrix types (e.g. sparse integer matrix)
+- support for other matrix types (e.g. sparse integer matrix, interface with [m4ri](https://bitbucket.org/malb/m4ri) that Sage uses for matrix over GF(2))
 - expose more algorithms (e.g. solving)

 Concrete ticket list
tscrim commented 6 years ago

Description changed:

--- 
+++ 
@@ -16,3 +16,5 @@
 - #23158: LinBox patch for integer sparse linear solving
 - #23214: integer sparse linear systems
 - #24544: clean declarations + matrix modn
+- #13915: expose more from LinBox for sparse matrices
+  * #25257: rank for sparse integer matrix from LinBox
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -17,4 +17,4 @@
 - #23214: integer sparse linear systems
 - #24544: clean declarations + matrix modn
 - #13915: expose more from LinBox for sparse matrices
-  * #25257: rank for sparse integer matrix from LinBox
+- #25257: rank for sparse integer matrix from LinBox
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -14,7 +14,7 @@
 - #22970: use `fmpq_mat_t` for rational dense matrices
 - #22971: more linbox in rational dense matrices
 - #23158: LinBox patch for integer sparse linear solving
-- #23214: integer sparse linear systems
+- #23214: solve/det/Rank for sparse integral matrices
 - #24544: clean declarations + matrix modn
 - #13915: expose more from LinBox for sparse matrices
 - #25257: rank for sparse integer matrix from LinBox
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -4,7 +4,7 @@

 - moving the implementation directly in `sage/matrix` without the intermediate Cython classes. In particular, avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it) (done in #22924 and #24544)
 - more documentation and testing
-- support for other matrix types (e.g. sparse integer matrix, interface with [m4ri](https://bitbucket.org/malb/m4ri) that Sage uses for matrix over GF(2))
+- support for other matrix types (e.g. sparse integer matrix (done in #23214), interface with [m4ri](https://bitbucket.org/malb/m4ri) that Sage uses for matrix over GF(2))
 - expose more algorithms (e.g. solving)

 Concrete ticket list
@@ -14,7 +14,5 @@
 - #22970: use `fmpq_mat_t` for rational dense matrices
 - #22971: more linbox in rational dense matrices
 - #23158: LinBox patch for integer sparse linear solving
-- #23214: solve/det/Rank for sparse integral matrices
 - #24544: clean declarations + matrix modn
-- #13915: expose more from LinBox for sparse matrices
-- #25257: rank for sparse integer matrix from LinBox
+- #23214: solve/det/rank/charpoly/minpoly for sparse integral matrices (see also #13915, #25257)
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -5,7 +5,11 @@
 - moving the implementation directly in `sage/matrix` without the intermediate Cython classes. In particular, avoid calling the linbox-sage interface (on LinBox side) but directly invoque LinBox C++ code (as Cython now allows it) (done in #22924 and #24544)
 - more documentation and testing
 - support for other matrix types (e.g. sparse integer matrix (done in #23214), interface with [m4ri](https://bitbucket.org/malb/m4ri) that Sage uses for matrix over GF(2))
-- expose more algorithms (e.g. solving)
+- expose more algorithms
+  - solving `A X = B` with `B` a matrix without repeated call
+    to LinBox column by column
+  - parallel features from LinBox
+  - more options for computing determinant (LinBox knows how to do this in more than one way)

 Concrete ticket list
fchapoton commented 6 years ago

Changed keywords from none to linbox

videlec commented 6 years ago
comment:21

update milestone 8.3 -> 8.4

videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -20,3 +20,4 @@
 - #23158: LinBox patch for integer sparse linear solving
 - #24544: clean declarations + matrix modn
 - #23214: solve/det/rank/charpoly/minpoly for sparse integral matrices (see also #13915, #25257)
+- #26178: `unsigned int` and `int64_t` behave very differently!
videlec commented 6 years ago

Description changed:

--- 
+++ 
@@ -10,6 +10,8 @@
     to LinBox column by column
   - parallel features from LinBox
   - more options for computing determinant (LinBox knows how to do this in more than one way)
+  - open-mp is explicitely disabled in `spkg-install` with a reference to [#17635 comment 67](https://github.com/sagemath/sage/issues/17635#comment:67)
+  - fplll is explicitely disabled in `spkg-install` with a reference to #21221

 Concrete ticket list