_mp_real_powtab_pre_init, _mp_real_powtab_pre_clear, _mp_real_powtab_pre_mul
#include <flint/mp_real.h>void _mp_real_powtab_pre_init(mp_real_powtab_pre_struct * T, nn_srcptr * xpow, const slong * xlen, const slong * uses, const slong * ymax, slong len)sourcevoid _mp_real_powtab_pre_clear(mp_real_powtab_pre_struct * T)sourceint _mp_real_powtab_pre_mul(nn_ptr z, const mp_real_powtab_pre_struct * T, slong i, nn_srcptr y, slong yn)sourcePrepare, free, and use the transforms of the power-table entries xpow[i] of xlen[i] limbs for products by partners of up to ymax[i] limbs. _mp_real_powtab_pre_mul sets z to \mathit{xpow}[i] \cdot y (\mathit{xlen}[i] + y_n limbs, z may overlap y) through the transform of entry i and returns 1, or returns 0 without writing anything when the entry has no transform or the product is outside its range.
An entry is transformed only when at least two merges use it (uses[i] \ge 2), its products are in the FFT range (with the threshold MP_REAL_POWTAB_PRE_CUTOFF = 150 limbs), and they have at most MP_REAL_POWTAB_PRE_MAX_LIMBS = 2^{20} limbs, which bounds the extra memory to some 50 MB per tree. Without fft_small the functions do nothing and _mp_real_powtab_pre_mul always returns 0. The transforms are read only, so the two halves of a merge may use them on two threads. See Power tables with precomputed transforms.
The FLINT team, “_mp_real_powtab_pre_init, _mp_real_powtab_pre_clear, _mp_real_powtab_pre_mul (mp_real.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/mp_real/_mp_real_powtab_pre_init.html (generated 2026-10-20).
@misc{flint-doc-mp-real-mp-real-powtab-pre-init,
author = {{The FLINT team}},
title = {{\_mp\_real\_powtab\_pre\_init, \_mp\_real\_powtab\_pre\_clear, \_mp\_real\_powtab\_pre\_mul (mp\_real.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/mp_real/_mp_real_powtab_pre_init.html},
note = {Generated 2026-10-20}
}