function myfft(x) N=length(x) if N == 1 return x end if N % 2 == 1 println("N = ",N," was not even!") throw(ArgumentError) end ye=myfft(x[1:2:N-1]) yo=myfft(x[2:2:N]) M = N ÷ 2 y = Array{Complex}(undef,N) for l = 1:M z0 = ye[l] z1 = exp(-1im*2*pi*(l-1)/N)*yo[l] y[l] = z0 + z1 y[l+M] = z0 - z1 end return y end function myifftwork(x) N=length(x) if N == 1 return x end if N % 2 == 1 println("N = ",N," was not even!") throw(ArgumentError) end ye=myifftwork(x[1:2:N-1]) yo=myifftwork(x[2:2:N]) M = N ÷ 2 y = Array{Complex}(undef,N) for l = 1:M z0 = ye[l] z1 = exp(1im*2*pi*(l-1)/N)*yo[l] y[l] = z0 + z1 y[l+M] = z0 - z1 end return y end function myifft(x) return myifftwork(x)/length(x) end function f(x) if x>1 && x<2 return 1 else return 0 end end L=2*pi N=8 h=L/N X=0:h:L-h Y=f.(X) B0=myifft(Y) K=N÷2-1 D=zeros(Complex,N) D[1:K+1]=0:K D[N-K+1:N]=-K:-1 F=D.*D*(2*pi/L)^2