FLINT3.7.0-dev

_acb_poly_mullow_classical, _acb_poly_mullow_transpose, _acb_poly_mullow_transpose_gauss, _acb_poly_mullow

Synopsis#include <flint/acb_poly.h>
void _acb_poly_mullow_classical(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec)source
void _acb_poly_mullow_transpose(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec)source
void _acb_poly_mullow_transpose_gauss(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec)source
void _acb_poly_mullow(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec)source

Set {C, n} to the product of {A, lenA} and {B, lenB} truncated to length n. Require lenA,lenB≥1\mathit{lenA}, \mathit{lenB} \ge 1 and 1≤n≤lenA+lenB−11 \le n \le \mathit{lenA} + \mathit{lenB} - 1; the output must not overlap either input. If A and B are the same pointer with the same length, the square is computed.

The classical version computes each coefficient as one acb_dot. The transpose version writes A=a+biA = a + bi and B=c+diB = c + di with real ball polynomials and computes (ac−bd)+(ad+bc)i(ac - bd) + (ad + bc)i with four calls to _arb_poly_mullow (three for a square). The transpose_gauss version uses Gauss's three-multiplication formula ad+bc=(a+b)(c+d)−ac−bdad + bc = (a+b)(c+d) - ac - bd; it is faster but gives much larger radii when the real and imaginary parts differ greatly in magnitude, and it is not used by default.

The default _acb_poly_mullow first asks _acb_poly_mulmid_use_fmpzi whether a single Gaussian integer product is worthwhile and, if so, tries _acb_poly_mulmid_fmpzi, which succeeds for well-scaled input. Otherwise it uses the classical version for short operands and the transposed version for long ones, with the cutoffs of _arb_poly_mullow.

Cite this page

The FLINT team, “_acb_poly_mullow_classical, _acb_poly_mullow_transpose, _acb_poly_mullow_transpose_gauss, _acb_poly_mullow (acb_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_poly/_acb_poly_mullow_classical.html (generated 2026-11-02).