flint_mpn_dot_strided_tab, flint_mpn_dot_tab, flint_mpn_dot_rev_tab
#include <flint/mpn_extras.h>const flint_mpn_dot_strided_func_t flint_mpn_dot_strided_tabconst flint_mpn_dot_func_t flint_mpn_dot_tabconst flint_mpn_dot_func_t flint_mpn_dot_rev_tabTables of dot product kernels. The kernel at index [sgn][n1][n2][s - (n1 + n2 - 1)] sets (\mathit{res}, s) to \sum_{k=0}^{\mathit{len}-1} a_k b_k \bmod B^s, where the a_k have n_1 limbs and the b_k have n_2 limbs, unsigned for sgn = 0 and two's complement for sgn = 1, for 1 \le n_2 \le n_1 and s \in \{n_1 + n_2 - 1, n_1 + n_2, n_1 + n_2 + 1\}. Entries are NULL where no kernel exists (in particular for n_1 < n_2).
The table dimensions are [2][FLINT_MPN_DOT_TAB_N + 1][FLINT_MPN_DOT_TAB_N + 1][3] for the strided kernels and [2][FLINT_MPN_DOT_DEDICATED_TAB_N + 1][FLINT_MPN_DOT_DEDICATED_TAB_N + 1][3] for the others, with FLINT_MPN_DOT_TAB_N = 4 and FLINT_MPN_DOT_DEDICATED_TAB_N = 2. In flint_mpn_dot_tab the entries are contiguous, a_k = a[k n_1], b_k = b[k n_2]; in flint_mpn_dot_rev_tab the second array is read backwards, b_k being the entry \mathit{len} - 1 - k; in the strided kernels the entries are astride and bstride limbs apart (the strides may be negative). The kernels (static functions such as _flint_mpn_dot_2x2_5) are generated by dev/gen_mpn_dot_rev.py.
The FLINT team, “flint_mpn_dot_strided_tab, flint_mpn_dot_tab, flint_mpn_dot_rev_tab (mpn_extras.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/mpn_extras/flint_mpn_dot_strided_tab.html (generated 2026-10-20).
@misc{flint-doc-mpn-extras-flint-mpn-dot-strided-tab,
author = {{The FLINT team}},
title = {{flint\_mpn\_dot\_strided\_tab, flint\_mpn\_dot\_tab, flint\_mpn\_dot\_rev\_tab (mpn\_extras.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/mpn_extras/flint_mpn_dot_strided_tab.html},
note = {Generated 2026-10-20}
}