FLINT3.7.0-dev

_gr_poly_compose, gr_poly_compose, _gr_poly_compose_horner, gr_poly_compose_horner, _gr_poly_compose_divconquer, gr_poly_compose_divconquer

Synopsis#include <flint/gr_poly.h>
int _gr_poly_compose(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx)source
int gr_poly_compose(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx)source
int _gr_poly_compose_horner(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx)source
int gr_poly_compose_horner(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx)source
int _gr_poly_compose_divconquer(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx)source
int gr_poly_compose_divconquer(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx)source

Set res to the composition f(g(x))f(g(x)), where ff is poly1 and gg is poly2, by Horner's rule or by divide and conquer (splitting ff in halves and multiplying by powers of gg computed by repeated squaring). The default version handles g=axn+cg = a x^n + c by a Taylor shift by cc followed by a scaling and an inflation, uses Horner's rule for len1≤7\mathit{len1} \le 7 and divide and conquer otherwise. The underscore versions write (len1−1)(len2−1)+1(\mathit{len1} - 1)(\mathit{len2} - 1) + 1 coefficients and do not allow aliasing.

Cite this page

The FLINT team, “_gr_poly_compose, gr_poly_compose, _gr_poly_compose_horner, gr_poly_compose_horner, _gr_poly_compose_divconquer, gr_poly_compose_divconquer (gr_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/gr_poly/_gr_poly_compose.html (generated 2026-11-02).