Ähhhm Sekunde mal! Deine Arrays sind zu klein. Die FFTW erwartet folgendes:
Delphi-Quellcode:
type
TComplex = packed record
Re, Im: Double;
TComplexArray = packed array of TComplex;
.
.
.
plan := fftwf_plan_dft_1d(n, @In_[0].Re, @Out_[0].Re, FFTW_FORWARD, FFTW_ESTIMATE);
AUSSER(!) Du verwendest die Versionen die speziell für rein Reellwertige Samples gedacht sind. Dort wird dann bei Forward ein array of Double erwartet wie du es hast, und als Out-Array ein array of TComplex, das aber nur halb so lang ist. (Bei Rücktransformation entprechend anders herum.)
Edit: Du kannst auch einfach ein array of Double nehmen, und jeden 2. Wert als Imaginäranteil "von Hand" interpretieren. Es muss halt nur doppelt so lang sein wie N angibt.
Edit2...: In der FFTW Doku gibts
imho auch eine Übersicht, wie die Arrays ganz detailiert auszusehen haben, und wo die Unterschiede in den verschiedenen Funktionsaufrufen und Betriebsmodi liegen. Das ist zugegebenermaßen erstmal fummelig, dafür haben sich die Jungs echt Gedanken gemacht.
Edit3: Letztes Edit. Rechtschreibung und so.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)