FLINT3.7.0-dev

nmod_mat_mul_fp50

Synopsis#include <flint/nmod_mat.h>
int nmod_mat_mul_fp50(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)source

Sets C = AB for a modulus n < 2^{50} in double precision, and returns

  1. Returns 0 if n \ge 2^{50}, on 32-bit machines, and for the portable C code compiled by MSVC. C may be aliased with A or B. Uses several threads when available.

Each product is reduced as it is formed with the floating-point modular multiplication of fft_small (one rounding and two fused multiply-adds), and the results, of absolute value below \frac98 n, are summed in double precision. The sums are reduced every \lfloor \frac89 (2^{53}/n - 1) \rfloor steps, which is every 6 steps for n close to 2^{50} and never within a block of 256 steps for n < 2^{53}/289 \approx 2^{44.8}.

Cite this page

The FLINT team, “nmod_mat_mul_fp50 (nmod_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nmod_mat/nmod_mat_mul_fp50.html (generated 2026-10-20).