nmod_mat_strong_echelon_form
#include <flint/nmod_mat.h>void nmod_mat_strong_echelon_form(nmod_mat_t A)sourcePuts in strong echelon form, using the algorithm of [FieHof2014]. must have at least as many rows as columns; add zero rows otherwise.
The strong echelon form is an upper triangular form in which the diagonal entry of row is the pivot of row , a divisor of , or zero, the entries above each pivot are reduced modulo it, and every row of the module spanned by whose first entries vanish is a combination of the rows below row . It is the Howell form [How1986; StoMul1998] with zero rows inserted so that pivots lie on the diagonal. [FieHof2014] defines a lower left variant; FLINT computes the upper right form.
References#
- [FieHof2014] Fieker C. and Hofmann T.: "Computing in quotients of rings of integers" LMS Journal of Computation and Mathematics, 17(A), 349-365
- [How1986] J. A. Howell, "Spans in the module ", Linear and Multilinear Algebra 19 (1986), 67-77
- [StoMul1998] Storjohann, Arne and Mulders, Thom : Fast algorithms for linear algebra modulo :math: : Algorithms—{ESA} '98 (Venice), Lecture Notes in Comput. Sci. 1461 139–150
The FLINT team, “nmod_mat_strong_echelon_form (nmod_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nmod_mat/nmod_mat_strong_echelon_form.html (generated 2026-11-02).
@misc{flint-doc-nmod-mat-nmod-mat-strong-echelon-form,
author = {{The FLINT team}},
title = {{nmod\_mat\_strong\_echelon\_form (nmod\_mat.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/nmod_mat/nmod_mat_strong_echelon_form.html},
note = {Generated 2026-11-02}
}