Opened 3 years ago

Last modified 14 months ago

#22872 new task

Enhanced linbox interface

Reported by: vdelecroix Owned by:
Priority: major Milestone: sage-8.4
Component: interfaces Keywords: linbox
Cc: cpernet, cremona, dlucas Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by vdelecroix)

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

  • 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 that Sage uses for matrix over GF(2))
  • 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)
  • open-mp is explicitely disabled in spkg-install with a reference to #17635 comment 67
  • fplll is explicitely disabled in spkg-install with a reference to #21221

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
  • #22970: use fmpq_mat_t for rational dense matrices
  • #22971: more linbox in rational dense matrices
  • #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!

Change History (23)

comment:1 Changed 3 years ago by cpernet

  • Description modified (diff)

comment:2 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:3 Changed 3 years ago by vdelecroix

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

comment:4 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:5 Changed 3 years ago by dlucas

  • Cc dlucas added

comment:6 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:7 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:8 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:9 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:10 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:11 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:12 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:13 Changed 2 years ago by vdelecroix

  • Description modified (diff)

comment:14 Changed 2 years ago by vdelecroix

  • Description modified (diff)

comment:15 Changed 20 months ago by tscrim

  • Description modified (diff)
  • Milestone changed from sage-8.0 to sage-8.2

comment:16 Changed 20 months ago by vdelecroix

  • Description modified (diff)

comment:17 Changed 20 months ago by vdelecroix

  • Description modified (diff)

comment:18 Changed 20 months ago by vdelecroix

  • Description modified (diff)

comment:19 Changed 20 months ago by vdelecroix

  • Description modified (diff)

comment:20 Changed 18 months ago by chapoton

  • Keywords linbox added
  • Milestone changed from sage-8.2 to sage-8.3

comment:21 Changed 17 months ago by vdelecroix

  • Milestone changed from sage-8.3 to sage-8.4

update milestone 8.3 -> 8.4

comment:22 Changed 16 months ago by vdelecroix

  • Description modified (diff)

comment:23 Changed 14 months ago by vdelecroix

  • Description modified (diff)
Note: See TracTickets for help on using tickets.