
function fft_example

N=16;
f=inline('3*exp(-i*x)+8*exp(7*i*x)+sin(x)');
% f=inline('exp(-i*x)+exp(7*i*x)+sin(x)');
sigma=fft_coeffs(f,N);

for ii=1:length(sigma)
     fprintf('\n \t ii: %3.0f sigma(ii): (%1.15e,%1.15e *i)',...
         ii,real(sigma(ii)),imag(sigma(ii)));
end

x=(0:0.01:2*pi)';
fx=f(x);
tx=fft_eval(sigma,x);

err=norm(fx-tx,inf);
fprintf('\n \n \t [err, inf norm]: %2.2e',err)

fprintf('\n \n');


function y=fft_eval(sigma,x)

if size(x,1) == 1, x=x'; end
if size(sigma,1) == 1, sigma=sigma'; end
N=length(sigma); M=floor(N/2);
k=(M-N+1):M;
V=exp(i*x*k);
tpos=sigma(1:M+1,1); 
tneg=sigma(M+2:end,1); 
t=[tneg; tpos];
y=V*t;


function sigma=fft_coeffs(f,N)

n=(1:N)';
X=(1/N)*f(2*(n-1)*pi/N);
sigma=fft(X);