6#ifndef THEORETICA_FFT_H
7#define THEORETICA_FFT_H
9#include "../core/bits.h"
10#include "../algebra/algebra_types.h"
11#include "../algebra/algebra.h"
12#include "../complex/complex.h"
28 template<
typename ReturnVector = cvec,
typename InputVector = cvec>
38 const unsigned int N = x.size();
45 if (N != (
unsigned int) (1 <<
log2N)) {
52 for (
unsigned int p = 1;
p <=
log2N;
p++) {
54 const unsigned int m = 1 <<
p;
55 const unsigned int offset =
m / 2;
65 for (
unsigned int j = 0;
j <
offset;
j++) {
67 for (
unsigned int i =
j; i < N; i +=
m) {
91 template<
typename ReturnVector = cvec,
typename InputVector = cvec>
Complex number in algebraic form .
Definition complex.h:26
#define TH_MATH_ERROR(F_NAME, VALUE, EXCEPTION)
TH_MATH_ERROR is a macro which throws exceptions or modifies errno (depending on which compilation op...
Definition error.h:219
Vector & vec_error(Vector &v)
Overwrite the given vector with the error vector with NaN values.
Definition algebra.h:58
constexpr void swap_bit_reverse(Vector &x, unsigned int m)
Swap the elements of a vector pair-wise, by exchanging elements with indices related by bit reversion...
Definition bits.h:97
ReturnVector fft(const InputVector &x, bool inverse=false)
Compute the Fast Fourier Transform of a set of data points.
Definition fft.h:29
ReturnVector ifft(const InputVector &k)
Compute the Inverse Fast Fourier Transform of a set of data points.
Definition fft.h:92
Main namespace of the library which contains all functions and objects.
Definition algebra.h:27
double real
A real number, defined as a floating point type.
Definition constants.h:207
complex< T > inverse(complex< T > z)
Compute the conjugate of a complex number.
Definition complex_analysis.h:35
Vector make_error()
Create a vector representing an error state, with all NaN values.
Definition algebra.h:103
UnsignedIntType ilog2(UnsignedIntType x)
Find the integer logarithm of x.
Definition real_analysis.h:550
dual2 cos(dual2 x)
Compute the cosine of a second order dual number.
Definition dual2_functions.h:86
@ InvalidArgument
Invalid argument.
dual2 sin(dual2 x)
Compute the sine of a second order dual number.
Definition dual2_functions.h:72
constexpr real PI
The Pi mathematical constant.
Definition constants.h:225