FLINT3.7.0-dev

_fq_poly_compose_mod_brent_kung, fq_poly_compose_mod_brent_kung, _fq_poly_compose_mod_brent_kung_preinv, fq_poly_compose_mod_brent_kung_preinv

Synopsis#include <flint/fq_poly.h>
void _fq_poly_compose_mod_brent_kung(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, const fq_struct * poly3, slong len3, const fq_ctx_t ctx)
void fq_poly_compose_mod_brent_kung(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_poly_t poly3, const fq_ctx_t ctx)
void _fq_poly_compose_mod_brent_kung_preinv(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, const fq_struct * poly3, slong len3, const fq_struct * poly3inv, slong len3inv, const fq_ctx_t ctx)
void fq_poly_compose_mod_brent_kung_preinv(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_poly_t poly3, const fq_poly_t poly3inv, const fq_ctx_t ctx)

Modular composition f(g) \bmod h by the Brent–Kung algorithm: the powers g^i \bmod h for i < m = \lceil \sqrt{\mathit{lenf}} \rceil are computed, f is split into m blocks, the block compositions are obtained by one m \times m by m \times \deg h matrix product, and the results are combined by Horner's rule in g^m. Requires \deg f < \deg h and g reduced modulo h; the _preinv versions also require the inverse of the reversal of h. No aliasing in the underscore versions.

Cite this page

The FLINT team, “_fq_poly_compose_mod_brent_kung, fq_poly_compose_mod_brent_kung, _fq_poly_compose_mod_brent_kung_preinv, fq_poly_compose_mod_brent_kung_preinv (fq_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/fq_poly/_fq_poly_compose_mod_brent_kung.html (generated 2026-10-20).