static void finiteFourierTransform (const double input[], std::complex<double> output[], const int n, const int direction);
static void finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int n, const int direction);
static void finiteFourierTransform (const std::complex<double> input[], double output[], const int n, const int direction);
static void finiteFourierTransform (const double input[], std::complex<double> output[], const int n, const int direction);
static void finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int n, const int direction);
static void finiteFourierTransform (const std::complex<double> input[], double output[], const int n, const int direction);