id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,merged,author,reviewer,upstream,work_issues,branch,commit,dependencies,stopgaps
23706,allow several implementations of matrices in MatrixSpace,vdelecroix,,"The aim of this ticket is to revamp the `MatrixSpace` constructor in order to be able to choose the implementation.
For example, with the attached branch one can have access to 2 implementations of integer matrices
{{{
sage: MatrixSpace(ZZ, 3, implementation='flint')
Full MatrixSpace of 3 by 3 dense matrices over Integer Ring
sage: MatrixSpace(ZZ, 3, implementation='generic')
Full MatrixSpace of 3 by 3 dense matrices over Integer Ring (using Matrix_generic_dense)
}}}
One important change is the move of the method `_get_matrix_class` of `MatrixSpace` as an independent function.
A problem arose with `CartanMatrix` (in `sage/combinat/root_system/cartan_matrix.py`). The class `CartanMatrix` inherits from `Matrix_integer_sparse` but does not properly redefines the parent. As a consequence of the changes here, many matrix operations are not valid anymore for inherited types (mostly submatrices operations such as `__getitem__` with slices or `stack`). A fix is provided by defining `CartanMatrix.matrix_space`.
follow up: #23714 (implementation of gap matrices)",enhancement,closed,major,sage-8.2,linear algebra,fixed,days88,jipilab SimonKing,,Vincent Delecroix,"Jean-Philippe Labbé, Travis Scrimshaw",N/A,,018226b9ecafdc082a4eb8289269af85b2908d3b,018226b9ecafdc082a4eb8289269af85b2908d3b,#24096,