fmpz_poly_hensel_lift_tree_recursive
#include <flint/fmpz_poly.h>void fmpz_poly_hensel_lift_tree_recursive(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, fmpz_poly_t f, slong j, slong inv, const fmpz_t p0, const fmpz_t p1)sourceLifts the subtree of the Hensel tree (link, v, w) rooted at the pair v[j], v[j + 1], whose product is f, from modulus p_0 to P = p_0 p_1 with 1 < p_1 \le p_0. The cofactors are lifted if inv is 1, and not lifted if it is 0 (for the last step); with -1 the cofactors are lifted from the previous precision (when a lift is restarted). f may be aliased with an entry of v or w, but the entries of v and w must be distinct.
At each node the two halves of the lift are fused: since p_1 \mid p_0, the moduli g \bmod p_1 and h \bmod p_1 and their Newton preinverses serve all four divisions, and when p \nmid f(0) the new second factor is computed as an exact quotient H = f/G modulo P instead of a second lift. The arithmetic runs in gr rings chosen by the size of the modulus (nmod, mpn_mod or fmpz_mod). Small nodes use fmpz_poly_hensel_lift.
The FLINT team, “fmpz_poly_hensel_lift_tree_recursive (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_lift_tree_recursive.html (generated 2026-10-20).
@misc{flint-doc-fmpz-poly-fmpz-poly-hensel-lift-tree-recursive,
author = {{The FLINT team}},
title = {{fmpz\_poly\_hensel\_lift\_tree\_recursive (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_hensel_lift_tree_recursive.html},
note = {Generated 2026-10-20}
}