FLINT3.7.0-dev

vec1d_mulmod, vec4d_mulmod, vec8d_mulmod, vec1d_nmulmod, vec4d_nmulmod, vec8d_nmulmod

Synopsis#include <flint/machine_vectors.h>
vec1d vec1d_mulmod(vec1d a, vec1d b, vec1d n, vec1d ninv)
vec4d vec4d_mulmod(vec4d a, vec4d b, vec4d n, vec4d ninv)
vec8d vec8d_mulmod(vec8d a, vec8d b, vec8d n, vec8d ninv)
vec1d vec1d_nmulmod(vec1d a, vec1d b, vec1d n, vec1d ninv)
vec4d vec4d_nmulmod(vec4d a, vec4d b, vec4d n, vec4d ninv)
vec8d vec8d_nmulmod(vec8d a, vec8d b, vec8d n, vec8d ninv)

Returns an integer r \equiv ab (mulmod) or r \equiv -ab (nmulmod) modulo n, for integers a, b with |ab| < 2^{103} and 1 \le n < 2^{50}, given ninv = 1.0 / n. The result satisfies |r| \le n/2 + \eta|ab| with \eta = (1 + 2^{-53})^3 - 1 < 3.0001 \cdot 2^{-53}. In particular, if n < 2^{49} or fft_small_mulmod_satisfies_bounds(n) holds, then |ab| < 2n^2 gives |r| < n and |ab| < 4n^2 gives |r| < 3n/2. Larger products still give a correct representative, only a larger one. AVX2 and NEON.

Guides#

Cite this page

The FLINT team, “vec1d_mulmod, vec4d_mulmod, vec8d_mulmod, vec1d_nmulmod, vec4d_nmulmod, vec8d_nmulmod (machine_vectors.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/machine_vectors/vec1d_mulmod.html (generated 2026-10-20).