FLINT3.7.0-dev

vec1d_reduce_to_pm1n, vec4d_reduce_to_pm1n, vec8d_reduce_to_pm1n, vec1d_reduce_to_pm1no, vec4d_reduce_to_pm1no, vec8d_reduce_to_pm1no

Synopsis#include <flint/machine_vectors.h>
vec1d vec1d_reduce_to_pm1n(vec1d a, vec1d n, vec1d ninv)source
vec4d vec4d_reduce_to_pm1n(vec4d a, vec4d n, vec4d ninv)
vec8d vec8d_reduce_to_pm1n(vec8d a, vec8d n, vec8d ninv)
vec1d vec1d_reduce_to_pm1no(vec1d a, vec1d n, vec1d ninv)source
vec4d vec4d_reduce_to_pm1no(vec4d a, vec4d n, vec4d ninv)
vec8d vec8d_reduce_to_pm1no(vec8d a, vec8d n, vec8d ninv)

Returns an integer r = a - qn \equiv a \pmod n, with q an approximation of a/n rounded to an integer, for an integer |a| < 2^{53} and an integer n \ge 4. The two functions are identical. The result satisfies |r| < n/2 + 2, hence |r| < n. On AVX2 the quotient is computed with round_mul, which with the magic constant needs |a| / n \le 2^{51}; this is why n \ge 4 is required. AVX2 and NEON.

Cite this page

The FLINT team, “vec1d_reduce_to_pm1n, vec4d_reduce_to_pm1n, vec8d_reduce_to_pm1n, vec1d_reduce_to_pm1no, vec4d_reduce_to_pm1no, vec8d_reduce_to_pm1no (machine_vectors.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/machine_vectors/vec1d_reduce_to_pm1n.html (generated 2026-10-20).