out ccon;
%off nat;
on rounded;


n:=5;

operator a,f,ff;

for all ii such that ii<0 or ii>n-1 let a(ii)=0;
for all ii,jj let f(ii)*f(jj)=f(ii+jj);
for all ii let f(ii)*f(ii)=f(ii+ii);
f(0):=1;

for ii:=-10:20 do write(a(ii));

%-------------A-----------
%for ii:=0:(n-1) do a(ii):=0; a(7):=100;

%-------------fft procedure-----------
procedure ffft(y,x);
begin

for uu:=0:(n-1) do <<

write( y(uu) := for tt:=0:(n-1) sum x(tt)*f(tt*uu) )

>>;
end;
%-----------------------------------

%-------------fft inverse procedure-----------
procedure inffft(y,x);
begin

for uu:=0:(n-1) do <<

write( y(uu) := for tt:=0:(n-1) sum x(tt)*f(-tt*uu) )

>>;
end;
%-----------------------------------

for ii:=0:(n-1) do write("a(",ii,"):=",a(ii) );
%-----------------------------------

ffft(fa,a);
for ii:=0:(n-1) do write("fa(",ii,"):=",fa(ii) );

%-----------------------------------

inffft(infa,fa);
for ii:=0:(n-1) do write("infa(",ii,"):=",infa(ii) );


shut ccon;
bye;
end;