FLINT3.7.0-dev

_mp_real_powtab_pre_init, _mp_real_powtab_pre_clear, _mp_real_powtab_pre_mul

Synopsis#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)source
void _mp_real_powtab_pre_clear(mp_real_powtab_pre_struct * T)source
int _mp_real_powtab_pre_mul(nn_ptr z, const mp_real_powtab_pre_struct * T, slong i, nn_srcptr y, slong yn)source

Prepare, 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.

Cite this page

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).