_acb_poly_mulmid_fmpzi
#include <flint/acb_poly.h>int _acb_poly_mulmid_fmpzi(acb_ptr z, acb_srcptr x, slong xlen, acb_srcptr y, slong ylen, slong nlo, slong nhi, slong prec)sourceIf the inputs are well-scaled, sets {z, nhi - nlo} to the coefficients of x^{\mathit{nlo}}, \ldots, x^{\mathit{nhi}-1} of the product of {x, xlen} and {y, ylen} (the square if the pointers and lengths are equal) and returns 1; otherwise returns 0 and leaves z undefined. The window may extend beyond the product, and z may alias an input.
After the substitution x \to 2^{-c} x, with c chosen from the first and last nonzero midpoints as in _arb_poly_mulmid_block (using the larger of the real and imaginary parts), the real and imaginary midpoints of each operand are written exactly as Gaussian integers times one common power of two. The input is well-scaled if this takes at most 3\,\mathit{prec} + 512 bits for each operand, the height that _arb_poly_mulmid_block allows for one block. The midpoints of the result are then computed by one _fmpzi_poly_mulmid and rounded to prec bits. The radii are bounded separately for the real and imaginary parts: for (a_r + a_i i)(b_r + b_i i) with radii \rho_{a_r}, \ldots, the real part gets |a_r| \rho_{b_r} + \rho_{a_r}(|b_r| + \rho_{b_r}) + |a_i| \rho_{b_i} + \rho_{a_i}(|b_i| + \rho_{b_i}) and the imaginary part |a_r| \rho_{b_i} + \rho_{a_r}(|b_i| + \rho_{b_i}) + |a_i| \rho_{b_r} + \rho_{a_i}(|b_r| + \rho_{b_r}), summed over the convolution with up to eight products of nonnegative polynomials (four for a square) by _arb_poly_addmulmid_mag.
The FLINT team, “_acb_poly_mulmid_fmpzi (acb_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_poly/_acb_poly_mulmid_fmpzi.html (generated 2026-10-20).
@misc{flint-doc-acb-poly-acb-poly-mulmid-fmpzi,
author = {{The FLINT team}},
title = {{\_acb\_poly\_mulmid\_fmpzi (acb\_poly.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/acb_poly/_acb_poly_mulmid_fmpzi.html},
note = {Generated 2026-10-20}
}