function [fr, fx] = do_fourier(func,xrange,frange,style)
% DO_FOURIER plots function and its transform.
%
if nargin<4
    style = 'phase';
end
if (nargin<3)
    frange = 2;
end
if (nargin<2)
    xrange = 2;
end

D=32;
N=D^2;

k=-N/2:N/2-1;
x = (D/N)*k;
dx = x(2)-x(1);

f = func(x);

idx=find(abs(x)<xrange);

subplot(2,1,1);
genplot(x(idx),f(idx),'x','f(x)',style);


ft = fftshift(fft(fftshift(f)))*dx;
fx = (1/D)*k;
fr = real(ft);
fi = imag(ft);
%fprintf('maximum real value %g\n',max(abs(fr)));
%fprintf('maximum imag value %g\n',max(abs(fi)));
idx = find(abs(fx)<frange);
subplot(2,1,2);
genplot(fx(idx),ft(idx),'\xi','F(\xi)',style);