_mpn_mod_vec_dot, _mpn_mod_vec_dot_rev, _mpn_mod_vec_dot_strided
#include <flint/mpn_mod.h>int _mpn_mod_vec_dot(nn_ptr res, nn_srcptr initial, int subtract, nn_srcptr vec1, nn_srcptr vec2, slong len, gr_ctx_t ctx)sourceint _mpn_mod_vec_dot_rev(nn_ptr res, nn_srcptr initial, int subtract, nn_srcptr vec1, nn_srcptr vec2, slong len, gr_ctx_t ctx)sourceint _mpn_mod_vec_dot_strided(nn_ptr res, nn_srcptr initial, int subtract, nn_srcptr vec1, slong stride1, nn_srcptr vec2, slong stride2, slong len, gr_ctx_t ctx)sourceSet res to , or if subtract is nonzero, where is initial (zero if initial is NULL), = vec1[i] and = vec2[i], vec2[len - 1 - i] or the entries of the strided vectors (strides counted in elements, possibly negative).
The sum of the full -limb products is accumulated exactly in limbs and reduced once at the end (delayed reduction). For the accumulation uses the generated fixed-size kernels of mpn_extras (flint_mpn_dot_tab and its strided and reversed variants); for larger , flint_mpn_mul_n and mpn_add_n with one carry limb. Lengths 1 and 2 use mpn_mod_mul and mpn_mod_fmma.
The FLINT team, “_mpn_mod_vec_dot, _mpn_mod_vec_dot_rev, _mpn_mod_vec_dot_strided (mpn_mod.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/mpn_mod/_mpn_mod_vec_dot.html (generated 2026-11-02).
@misc{flint-doc-mpn-mod-mpn-mod-vec-dot,
author = {{The FLINT team}},
title = {{\_mpn\_mod\_vec\_dot, \_mpn\_mod\_vec\_dot\_rev, \_mpn\_mod\_vec\_dot\_strided (mpn\_mod.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/mpn_mod/_mpn_mod_vec_dot.html},
note = {Generated 2026-11-02}
}