FLINT_MPN_POLY_MUL_UNSIGNED, FLINT_MPN_POLY_MUL_SIGNED, FLINT_MPN_POLY_MUL_SIGNMAG, FLINT_MPN_POLY_MUL_BIAS
#include <flint/mpn_extras.h>FLINT_MPN_POLY_MUL_UNSIGNEDsourceFLINT_MPN_POLY_MUL_SIGNEDsourceFLINT_MPN_POLY_MUL_SIGNMAGsourceFLINT_MPN_POLY_MUL_BIASsourceThe representations of packed coefficients accepted by _flint_mpn_poly_mulmid (values 0 to 3): nonnegative integers (zero-extended); two's complement integers; sign-magnitude, a sign limb followed by the magnitude (classical algorithm only); and biased, x + 2^b where b is the bit bound of the operand, which the multiplication treats as unsigned, leaving it to the caller to correct the outputs using sliding window sums of the inputs. The bias correction costs O(\mathit{slimbs}) per output coefficient but nothing per term, so it wins for long dot products and with Karatsuba.
The FLINT team, “FLINT_MPN_POLY_MUL_UNSIGNED, FLINT_MPN_POLY_MUL_SIGNED, FLINT_MPN_POLY_MUL_SIGNMAG, FLINT_MPN_POLY_MUL_BIAS (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_MUL_UNSIGNED.html (generated 2026-10-20).
@misc{flint-doc-mpn-extras-FLINT-MPN-POLY-MUL-UNSIGNED,
author = {{The FLINT team}},
title = {{FLINT\_MPN\_POLY\_MUL\_UNSIGNED, FLINT\_MPN\_POLY\_MUL\_SIGNED, FLINT\_MPN\_POLY\_MUL\_SIGNMAG, FLINT\_MPN\_POLY\_MUL\_BIAS (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_POLY_MUL_UNSIGNED.html},
note = {Generated 2026-10-20}
}