_nfixed_mat_mul_bound, _nfixed_mat_mul_bound_classical, _nfixed_mat_mul_bound_waksman, _nfixed_mat_mul_bound_strassen, _nfixed_complex_mat_mul_bound
#include <flint/nfloat.h>void _nfixed_mat_mul_bound(double * bound, double * error, slong m, slong n, slong p, double A, double B, slong nlimbs)sourcevoid _nfixed_mat_mul_bound_classical(double * bound, double * error, slong m, slong n, slong p, double A, double B, slong nlimbs)sourcevoid _nfixed_mat_mul_bound_waksman(double * bound, double * error, slong m, slong n, slong p, double A, double B, slong nlimbs)sourcevoid _nfixed_mat_mul_bound_strassen(double * bound, double * error, slong m, slong n, slong p, double A, double B, slong cutoff, slong nlimbs)sourcevoid _nfixed_complex_mat_mul_bound(double * bound, double * error, slong m, slong n, slong p, double A, double B, double C, double D, slong nlimbs)sourceFor an m \times n \times p product at precision nlimbs with entries of A and B bounded by A and B, set bound to a bound for all intermediate values of the corresponding algorithm, which must be less than 1 for the computation to be valid, and error to a bound for the output error in ulps. _nfixed_mat_mul_bound follows the algorithm choice of _nfixed_mat_mul. The bounds are nondecreasing in A and B. For complex matrices, the entries are bounded by A + Bi and C + Di.
A truncated product of two n-word numbers has an error of at most 2n - 1 ulps, so the classical algorithm has error at most n(2\,\mathit{nlimbs} - 1) ulps for an inner dimension n and intermediate values bounded by nAB. Waksman's and Strassen's algorithms form sums and differences of entries before multiplying, which increases both the bound on intermediate values (for example by 6\lfloor n/2 \rfloor (A + B)^2 for Waksman) and the error; the fixed-point multiplication scales its inputs down until the bound is below 1.
The FLINT team, “_nfixed_mat_mul_bound, _nfixed_mat_mul_bound_classical, _nfixed_mat_mul_bound_waksman, _nfixed_mat_mul_bound_strassen, _nfixed_complex_mat_mul_bound (nfloat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nfloat/_nfixed_mat_mul_bound.html (generated 2026-10-20).
@misc{flint-doc-nfloat-nfixed-mat-mul-bound,
author = {{The FLINT team}},
title = {{\_nfixed\_mat\_mul\_bound, \_nfixed\_mat\_mul\_bound\_classical, \_nfixed\_mat\_mul\_bound\_waksman, \_nfixed\_mat\_mul\_bound\_strassen, \_nfixed\_complex\_mat\_mul\_bound (nfloat.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/nfloat/_nfixed_mat_mul_bound.html},
note = {Generated 2026-10-20}
}