// -*- C++ -*- // automatically generated by autodoc // ========== HEADER FILE src/ntt/ntt.h: ========== // ----- SRCFILE=src/ntt/nttdit4.cc: ----- void ntt_dit4_core(mod *f, ulong ldn, int is); // Auxiliary routine for ntt_dit4() // Decimation in time (DIT) radix-4 NTT // Input data must be in revbin_permuted order // ldn := base-2 logarithm of the array length // is := sign of the transform void ntt_dit4(mod *f, ulong ldn, int is); // Radix-4 decimation in time (DIT) NTT // ----- SRCFILE=src/ntt/nttdif4.cc: ----- void ntt_dif4_core(mod *f, ulong ldn, int is); // Auxiliary routine for ntt_dif4(). // Decimation in frequency (DIF) radix-4 NTT. // Output data is in revbin_permuted order. // ldn := base-2 logarithm of the array length. // is := sign of the transform void ntt_dif4(mod *f, ulong ldn, int is); // Radix-4 decimation in frequency (DIF) NTT // ----- SRCFILE=src/ntt/nttdit2.cc: ----- void ntt_dit2_core(mod *f, ulong ldn, int is); // Auxiliary routine for ntt_dit2() // Decimation in time (DIT) radix-2 FFT // Input data must be in revbin_permuted order // ldn := base-2 logarithm of the array length // is := sign of the transform void ntt_dit2(mod *f, ulong ldn, int is); // Radix-2 decimation in time (DIT) NTT // ----- SRCFILE=src/ntt/nttdif2.cc: ----- void ntt_dif2_core(mod *f, ulong ldn, int is); // Auxiliary routine for ntt_dif2(). // Decimation in frequency (DIF) radix-2 NTT. // Output data is in revbin_permuted order. // ldn := base-2 logarithm of the array length. // is := sign of the transform void ntt_dif2(mod *f, ulong ldn, int is); // Radix-2 decimation in frequency (DIF) NTT // ----- SRCFILE=src/ntt/nttcnvl.cc: ----- void ntt_auto_convolution(mod *f, ulong ldn); // Cyclic self-convolution. // Use zero padded data for linear convolution. void ntt_convolution(mod * restrict f, mod * restrict g, ulong ldn); // Cyclic convolution. // Use zero padded data for linear convolution. // Result in g[]. void ntt_convolution(double *f, double *g, ulong ldn); void ntt_auto_convolution(double *f, ulong ldn); // ----- SRCFILE=src/ntt/slownttcnvl.cc: ----- void slow_mod_convolution(mod *f, mod *g, ulong n); // (cyclic) convolution: g[] := f[] (*) g[] // n := array length // (use zero padded data for linear convolution) void slow_mod_convolution(mod *f, mod *g, ulong n); // (cyclic) convolution: g[] := f[] (*) g[] // n := array length // (use zero padded data for linear convolution) // ----- SRCFILE=src/ntt/nttlearn.cc: ----- void ntt_dit2l(mod *f, ulong ldn, int is); // decimation in time // revbin_permutes data at entry void ntt_dif2l(mod *f, ulong ldn, int is); // decimation in frequency // revbin_permutes data before exit // ----- SRCFILE=src/ntt/slowntt.cc: ----- void slow_ntt(mod *f, ulong n, int is); // Number theoretic transform by definition (slow!)