On Wed, 12 Mar 2014, Allin Cottrell wrote:
This is the fastest version I can come up with on a quick go (if one
doesn't
mind having the result as a matrix):
<hansl>
set stopwatch
scalar T = 10000
matrix y = zeros(T,1)
scalar iters=10000
matrix DFT = zeros(iters,1)
loop i=1..iters --quiet
y = cum(mnormal(T, 1))
DFT[i] = (T-2) * (mols(y[3:],mlag(y,1)[3:])-1)
endloop
mwrite(DFT, "DFT.mat")
printf "Time taken: %f seconds\n", $stopwatch
</hansl>
Slight improvement:
<hansl>
loop i=1..iters --quiet
y = cum(mnormal(T, 1))
DFT[i] = (T-2) * (mols(y[3:],y[2:T-1])-1)
endloop
</hansl>
-------------------------------------------------------
Riccardo (Jack) Lucchetti
Dipartimento di Scienze Economiche e Sociali (DiSES)
Università Politecnica delle Marche
(formerly known as Università di Ancona)
r.lucchetti(a)univpm.it
http://www2.econ.univpm.it/servizi/hpp/lucchetti
-------------------------------------------------------