fmpz_mat_rref_upper_certify_lu_mod_p
#include <flint/fmpz_mat.h>int fmpz_mat_rref_upper_certify_lu_mod_p(fmpz_mat_t E, fmpz_t den, const fmpz_mat_t A, slong rank, const slong * P, const slong * pivs)sourceGiven the echelon structure of the matrix modulo a prime, as computed by nmod_mat_lu_with_pivots (the rank modulo , the row permutation P and the array pivs of the pivot columns followed by the other columns), tries to compute and certify the first rows of the reduced row echelon form of over . Returns 1 on success, with (, den) holding these rows, and 0 if the prime was unlucky.
must be an zero matrix not aliased with . The function solves exactly, where and are the pivot rows of restricted to the pivot and the other columns, checks that is in reduced row echelon form, and checks that the other rows of are annihilated by the nullspace basis that defines. Both checks are exact, so a result of 1 is a proof. With probability close to 1 for a random prime, the rank modulo equals the rank of and the function succeeds; otherwise it returns 0 and and den are unspecified.
The FLINT team, “fmpz_mat_rref_upper_certify_lu_mod_p (fmpz_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/fmpz_mat/fmpz_mat_rref_upper_certify_lu_mod_p.html (generated 2026-11-02).
@misc{flint-doc-fmpz-mat-fmpz-mat-rref-upper-certify-lu-mod-p,
author = {{The FLINT team}},
title = {{fmpz\_mat\_rref\_upper\_certify\_lu\_mod\_p (fmpz\_mat.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/fmpz_mat/fmpz_mat_rref_upper_certify_lu_mod_p.html},
note = {Generated 2026-11-02}
}