FLINT3.7.0-dev

nmod_poly_extrapolate_geometric, nmod_poly_extrapolate_geometric_precomp

Synopsis#include <flint/nmod_poly.h>
void nmod_poly_extrapolate_geometric(nn_ptr oval, slong olen, nn_srcptr ival, slong ilen, slong offset, ulong r, nmod_t mod)source
void nmod_poly_extrapolate_geometric_precomp(nn_ptr oval, slong olen, nn_srcptr ival, slong ilen, slong offset, const nmod_geometric_progression_t G)source

Given the values ival of a polynomial ff of degree less than ilen\mathit{ilen} at ilen consecutive points of the progression, compute its values oval at olen consecutive points starting offset positions later, without computing ff. The points must not overlap: offset≥ilen\mathit{offset} \ge \mathit{ilen} (forward) or offset+olen≤0\mathit{offset} + \mathit{olen} \le 0 (backward).

Precisely, for any invertible cc and k≥0k \ge 0 (which the functions need not know), if ival[i] =f(c⋅r2(k+i))= f(c \cdot r^{2(k+i)}) for 0≤i<ilen0 \le i < \mathit{ilen}, then oval[j] =f(c⋅r2(ℓ+j))= f(c \cdot r^{2(\ell + j)}) for 0≤j<olen0 \le j < \mathit{olen} with ℓ=k+offset\ell = k + \mathit{offset}. This uses one middle product. In the forward case none of r2,…,r2(offset+olen−1)r^2, \ldots, r^{2(\mathit{offset} + \mathit{olen} - 1)} may be 1, and G->len must be at least offset+olen\mathit{offset} + \mathit{olen}; in the backward case the same holds for ilen−offset\mathit{ilen} - \mathit{offset}. G must be prepared for extrapolation; the function without _precomp builds a temporary G. For ilen≤1\mathit{ilen} \le 1 the output is constant.

Cite this page

The FLINT team, “nmod_poly_extrapolate_geometric, nmod_poly_extrapolate_geometric_precomp (nmod_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nmod_poly/nmod_poly_extrapolate_geometric.html (generated 2026-11-02).