FLINT3.7.0-dev

flint_mpn_poly_mulmid_tab, flint_mpn_poly_sqrmid_tab, flint_mpn_poly_mulmid_short_tab, flint_mpn_poly_sqrmid_short_tab, flint_mpn_poly_mulmid_signmag_tab, flint_mpn_poly_sqrmid_signmag_tab

Synopsis#include <flint/mpn_extras.h>
const flint_mpn_poly_mulmid_func_t flint_mpn_poly_mulmid_tab
const flint_mpn_poly_sqrmid_func_t flint_mpn_poly_sqrmid_tab
const flint_mpn_poly_mulmid_func_t flint_mpn_poly_mulmid_short_tab
const flint_mpn_poly_sqrmid_func_t flint_mpn_poly_sqrmid_short_tab
const flint_mpn_poly_mulmid_func_t flint_mpn_poly_mulmid_signmag_tab
const flint_mpn_poly_sqrmid_func_t flint_mpn_poly_sqrmid_signmag_tab

Instances of _flint_mpn_poly_mulmid_classical (and of squaring) for fixed coefficient sizes, indexed like the dot product tables (the sign-magnitude tables have no sign index). The coefficient loop and the dot product code are fused, so that no function call is made per term or per coefficient; in the squaring kernels the doubling of the cross terms and the addition of the square term are done in registers.

The plain tables (dimensions [2][4][4][3]) cover n_1 \le 3. The short tables (dimensions [2][5][5][3]) cover n_1 = 4 with s \le 8. The sign-magnitude tables ([5][5][3]) take coefficients with a sign limb. The kernels are static and generated by dev/gen_mpn_dot_rev.py.

Cite this page

The FLINT team, “flint_mpn_poly_mulmid_tab, flint_mpn_poly_sqrmid_tab, flint_mpn_poly_mulmid_short_tab, flint_mpn_poly_sqrmid_short_tab, flint_mpn_poly_mulmid_signmag_tab, flint_mpn_poly_sqrmid_signmag_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_poly_mulmid_tab.html (generated 2026-10-20).