_fmpz_poly_pow_multinomial, fmpz_poly_pow_multinomial
Synopsis
#include <flint/fmpz_poly.h>void fmpz_poly_pow_multinomial(fmpz_poly_t res, const fmpz_poly_t poly, ulong e)sourceSet res to poly raised to the power e using the J. C. P. Miller recurrence [Knu1997, §4.6.1, exercise 16], [Zei1995]: if P(x) = \sum_{i=0}^m p_i x^i with p_0 \ne 0 and P(x)^e = \sum_k a_k x^k, then a_0 = p_0^e and
a_k = \frac{1}{k p_0} \sum_{i=1}^{\min(k, m)} p_i \bigl((e + 1) i - k\bigr) a_{k-i},
\qquad k \ge 1.
Each coefficient costs O(m) multiplications and one exact division. Low zero coefficients are removed first. The underscore version requires \mathit{len} > 0 and e > 0 and does not allow aliasing.
References#
- [Knu1997] Knuth, D. E. The Art of Computer Programming, volume 2: Seminumerical algorithms, 1997
- [Zei1995] D. Zeilberger. The J. C. P. Miller recurrence for exponentiating a polynomial, and its q-analog. Journal of Difference Equations and Applications 1 (1995), 57–60. https://doi.org/10.1080/10236199508808006
Cite this page
The FLINT team, “_fmpz_poly_pow_multinomial, fmpz_poly_pow_multinomial (fmpz_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/fmpz_poly/_fmpz_poly_pow_multinomial.html (generated 2026-10-20).
@misc{flint-doc-fmpz-poly-fmpz-poly-pow-multinomial,
author = {{The FLINT team}},
title = {{\_fmpz\_poly\_pow\_multinomial, fmpz\_poly\_pow\_multinomial (fmpz\_poly.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/fmpz_poly/_fmpz_poly_pow_multinomial.html},
note = {Generated 2026-10-20}
}