I slightly modify your script, it works with 64-bit linux and the first result
for fftw i.8 is not all zero
load jpath '~addons/math/fftw/fftw3.ijs'
fftw i.8
28 _4j9.6568542 _4j4 _4j1.6568542 _4 _4j_1.6568542 _4j_4 _4j_9.6568542
fftw i.8
28 _4j9.6568542 _4j4 _4j1.6568542 _4 _4j_1.6568542 _4j_4 _4j_9.6568542
Therefore I suspect the problem originated from the window binary.
NB. built from project: ~Addons/math/fftw/fftw
NB. z definitions:
script_z_ '~system\main\dll.ijs'
coclass 'jfftw'
fftw_z_=: (_1 & fftwnd_jfftw_) :. (1 & fftwnd_jfftw_)
ifftw_z_=: (1 & fftwnd_jfftw_) :. (_1 & fftwnd_jfftw_)
NB. fftw utils
NB.
NB. cd 15!:0
NB. clean clean numbers near 0
NB. info cover for wdinfo
NB. matchclean if clean x-y is all 0
izero=: 23-23
ione=: 23-22
dzero=: 1.1-1.1
done=: 2.1-1.1
zzero=: 1j1-1j1
zone=: 2j1-1j1
3 : 0''
if. IFUNIX do.
DLL=: 'libfftw3.so.3'
else.
DLL=: '"',~'"',jpath '~addons\math\fftw\libfftw3-3.dll'
end.
)
FFTW_FORWARD=: _1
FFTW_BACKWARD=: ione
FFTW_ESTIMATE=: izero
FFTW_MEASURE=: ione
FFTW_VERSION=: 3.2
cd=: 15!:0
info=: wdinfo @ ('FFTW'&;)
matchclean=: 0: *./ . = clean @ , @: -
NB. =========================================================
NB.*clean v clean numbers to tolerance (default 1e_10)
NB. sets values less than tolerance to 0
clean=: (1e_10&$:) : (4 : 0)
if. L. y do.
x clean each y
else.
if. 16 ~: 3!:0 y do.
y * x <: |y
else.
j./"1 y* x <: | y=. +.y
end.
end.
)
NB. fftw
NB. =========================================================
NB.*createplan v create a plan
NB. y = shape ; in ; out ; direction; flag
NB.
NB. direction = FFTW_FORWARD | FFTW_BACKWARD
NB. flag = FFTW_ESTIMATE | FFTW_MEASURE
createplan=: 3 : 0
'shape in out dir flag'=. y
assert dir e. FFTW_FORWARD,FFTW_BACKWARD
assert flag e. FFTW_ESTIMATE, FFTW_MEASURE
shape=. ,shape + izero
dir=. dir + izero
flag=. flag + izero
cmd=. DLL,' fftw_plan_dft + x i *i *j *j i i'
0 pick cmd cd (#shape);shape;in;out;dir;flag
)
NB. =========================================================
NB.*destroyplan v destroy a plan
destroyplan=: 3 : 0
cmd=. DLL,' fftw_destroy_plan + n x'
1 [ cmd cd y
)
NB. =========================================================
NB.*fftwnd d n-dimensional FFT
NB. x = _1 forward
NB. 1 backward
NB. y = data
fftwnd=: 4 : 0
shp=. $y
in=. zzero + , |: y
out=. in * 0
assert x e. _1 1
dir=. x + izero
plan=. createplan shp;in;out;dir;FFTW_ESTIMATE
fftwexecute plan
destroyplan plan
res=. |: (|.shp) $ out
if. dir=1 do. res % */shp end.
)
NB. =========================================================
NB.*fftwexecute d one call to n-dimensional FFT
NB. y = plan
fftwexecute=: 3 : 0
cmd=. DLL,' fftw_execute + n x'
1 [ cmd cd y
)
--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm