FLINT3.7.0-dev

fft_mfa_truncate_sqrt2_outer, fft_mfa_truncate_sqrt2_inner, ifft_mfa_truncate_sqrt2_outer

Synopsis#include <flint/fft.h>
void fft_mfa_truncate_sqrt2_outer(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc)source
void fft_mfa_truncate_sqrt2_inner(mp_limb_t ** ii, mp_limb_t ** jj, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc, mp_limb_t ** tt)source
void ifft_mfa_truncate_sqrt2_outer(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc)source

The three stages of a threaded convolution with the matrix Fourier algorithm, as used by fft_convolution and mul_mfa_truncate_sqrt2. fft_mfa_truncate_sqrt2_outer performs the sqrt2 layer and the column transforms of ii. fft_mfa_truncate_sqrt2_inner performs, one row at a time, the row transforms of ii and jj, the pointwise products with fft_mulmod_2expp1 and the inverse row transform. ifft_mfa_truncate_sqrt2_outer performs the inverse column transforms and the sqrt2 layer and divides by 4n, leaving reduced residues. The requirements are those of fft_mfa_truncate_sqrt2 and, for the pointwise products, those of fft_mulmod_2expp1. The scratch arrays need one entry per thread; temp is not used by the _inner function.

Cite this page

The FLINT team, “fft_mfa_truncate_sqrt2_outer, fft_mfa_truncate_sqrt2_inner, ifft_mfa_truncate_sqrt2_outer (fft.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/fft/fft_mfa_truncate_sqrt2_outer.html (generated 2026-10-20).