FLINT3.7.0-dev

nmod_mat_strong_echelon_form

Synopsis#include <flint/nmod_mat.h>
void nmod_mat_strong_echelon_form(nmod_mat_t A)source

Puts A in strong echelon form, using the algorithm of [FieHof2014]. A 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 i is the pivot of row i, a divisor of n, or zero, the entries above each pivot are reduced modulo it, and every row of the module spanned by A whose first i entries vanish is a combination of the rows below row i. 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 (\mathbb{Z}_m)^s", Linear and Multilinear Algebra 19 (1986), 67-77
  • [StoMul1998] Storjohann, Arne and Mulders, Thom : Fast algorithms for linear algebra modulo :math:N : Algorithms—{ESA} '98 (Venice), Lecture Notes in Comput. Sci. 1461 139–150
Cite this page

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-10-20).