nmod_mat_solve_tril_right_classical, nmod_mat_solve_triu_right_classical
#include <flint/nmod_mat.h>void nmod_mat_solve_tril_right_classical(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit)sourcevoid nmod_mat_solve_triu_right_classical(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit)sourceSubstitution, for an triangular matrix, with three methods. If has at least rows ( for , or with 32-bit words), as nmod_mat_solve_tril_classical (nmod_mat_solve_triu_classical) with delayed reductions on the transposed system, being transposed by blocks of 256 rows. Otherwise, if ( for these larger moduli) or has at most 4 rows, each row of is computed from the last entry to the first for (from the first to the last for ): once is known, times the row of the triangular matrix is added to the unreduced sums of the remaining entries, each reduced once. Otherwise (a large triangular matrix and a few rows), each entry is computed with one dot product and one reduction, the columns of the triangular matrix being copied to rows 64 at a time so that the dot products read contiguous memory. The inverses of the diagonal entries are computed once.
The FLINT team, “nmod_mat_solve_tril_right_classical, nmod_mat_solve_triu_right_classical (nmod_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nmod_mat/nmod_mat_solve_tril_right_classical.html (generated 2026-11-02).
@misc{flint-doc-nmod-mat-nmod-mat-solve-tril-right-classical,
author = {{The FLINT team}},
title = {{nmod\_mat\_solve\_tril\_right\_classical, nmod\_mat\_solve\_triu\_right\_classical (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_solve_tril_right_classical.html},
note = {Generated 2026-11-02}
}