FLINT3.7.0-dev

fmpz_lucas_chain_double, fmpz_lucas_chain_add, fmpz_lucas_chain_mul

Synopsis#include <flint/fmpz.h>
void fmpz_lucas_chain_double(fmpz_t U2m, fmpz_t U2m1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t A, const fmpz_t B, const fmpz_t n)source
void fmpz_lucas_chain_add(fmpz_t Umn, fmpz_t Umn1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t Un, const fmpz_t Un1, const fmpz_t A, const fmpz_t B, const fmpz_t n)source
void fmpz_lucas_chain_mul(fmpz_t Ukm, fmpz_t Ukm1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t A, const fmpz_t B, const fmpz_t k, const fmpz_t n)source

For the Lucas sequence U0=0U_0 = 0, U1=1U_1 = 1, Uj=AUj−1−BUj−2U_j = A U_{j-1} - B U_{j-2} modulo nn: given Um,Um+1U_m, U_{m+1} (and Un,Un+1U_n, U_{n+1}), compute U2m,U2m+1U_{2m}, U_{2m+1}, respectively Um+n,Um+n+1U_{m+n}, U_{m+n+1}, respectively Ukm,Ukm+1U_{km}, U_{km+1}. Each output may alias the corresponding input (U2mU_{2m} with UmU_m, and so on); no other aliasing is allowed.

Cite this page

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