flint_mpn_mullow_complex, flint_mpn_sqrlow_complex
#include <flint/mpn_extras.h>void flint_mpn_mullow_complex(nn_ptr zr, nn_ptr zi, mp_size_t n, nn_srcptr ar, mp_size_t arn, int ar_sgn, nn_srcptr ai, mp_size_t ain, int ai_sgn, nn_srcptr br, mp_size_t brn, int br_sgn, nn_srcptr bi, mp_size_t bin, int bi_sgn)sourcevoid flint_mpn_sqrlow_complex(nn_ptr zr, nn_ptr zi, mp_size_t n, nn_srcptr ar, mp_size_t arn, int ar_sgn, nn_srcptr ai, mp_size_t ain, int ai_sgn)sourceLow products: zr and zi receive exactly n \ge 1 limbs, the real and imaginary parts of the product (respectively the square) modulo B^n as two's complement residues. No sign is returned: a negative part x is represented by B^n + x when |x| < B^n. The inputs are as for flint_mpn_mul_complex, and only their low n limbs are read. n may exceed the length of the product, the residues then being the sign-extended exact parts.
These are what a Kronecker unpacking of signed fields below limb n needs. The algorithms are those of the full products with low products in place of full ones: four or three real low products from flint_mpn_mulmid with window start 0, combined modulo B^n, or above the cutoffs _fft_small_mpn_mulmid_complex with the window [0, n) on the inputs truncated to n limbs, which reconstructs only the CRT coefficients below limb n. The transforms keep the length of the product of the truncated inputs, since a cyclic wrap would land in the low limbs; the saving is in the reconstruction.
The FLINT team, “flint_mpn_mullow_complex, flint_mpn_sqrlow_complex (mpn_extras.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/mpn_extras/flint_mpn_mullow_complex.html (generated 2026-10-20).
@misc{flint-doc-mpn-extras-flint-mpn-mullow-complex,
author = {{The FLINT team}},
title = {{flint\_mpn\_mullow\_complex, flint\_mpn\_sqrlow\_complex (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_mullow_complex.html},
note = {Generated 2026-10-20}
}