FLINT3.7.0-dev

fmpz_poly_hensel_build_tree

Synopsis#include <flint/fmpz_poly.h>
void fmpz_poly_hensel_build_tree(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, const nmod_poly_factor_t fac)source

Builds a Hensel tree from the r local factors in fac. The arrays link, v and w have 2r - 2 entries. The tree is built by repeatedly multiplying the two factors (or products) of smallest degree, so that it is balanced by degree; v holds the factors and products, with v[2r - 4] and v[2r - 3] the two children of the root, and w holds the Bézout cofactors, v_{2i} w_{2i} + v_{2i+1} w_{2i+1} \equiv 1 \pmod p. A negative link[j] means that v[j] is the original factor number -link[j] - 1; a nonnegative link[j] means that v[j] is the product of v[link[j]] and v[link[j] + 1].

Cite this page

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