I tried recently to link to gsl's gsl_fft_complex_radix2_forward, but failed miserably:
(defmfun fft-c2f (x n) "gsl_fft_complex_radix2_forward" ;; for gsl doc and example see ;; http://www.gnu.org/software/gsl/manual/html_node/Radix_002d2-FFT-routines-fo... ;; for stride I use the example from sorting.lisp (((mpointer x) :pointer) (1 sizet) (n :int)) :inputs (x) :definition :function :c-return :success-failure :documentation "Forward FFT for a complex double radix-2 vector")
#| ;; test run (let ((arg (make-marray '(complex double-float) :dimensions 4 :initial-element #c(0d0 0d0)))) (setf (aref arg 2) #c(1d0 0d0)) (let* ((dim (length arg))) ;; (double (make-array (* 2 dim) ;; :element-type 'double-float ;; :initial-element 0d0))) ;; repackaging complex as double -- is there a built-in? ; ;; (loop ;; for re-im across arg ;; for i from 0 to (* 2 (1- dim)) by 2 ;; do (progn ;; (setf (aref double i) (realpart re-im)) ;; (setf (aref double (1+ i)) (imagpart re-im)))) (print dim) (fft-c2f arg dim))) |#
I see one possible problem, that gsl_complex_packed_array datatypes. I don't see those defined in gsll.
Can someone help me with linking to the fft routines? Once I can access gsl's fft's, I will verify the computation, and also generate the unit tests.
Thanks,
Mirko
To add to my fft plea: I need it primarily on sbcl/linux
Mirko
---------- Forwarded message ---------- From: Mirko Vukovic mirko.vukovic@gmail.com Date: Wed, Jun 17, 2009 at 9:26 AM Subject: need fft routines To: gsll-devel@common-lisp.net
I tried recently to link to gsl's gsl_fft_complex_radix2_forward, but failed miserably:
(defmfun fft-c2f (x n) "gsl_fft_complex_radix2_forward" ;; for gsl doc and example see ;; http://www.gnu.org/software/gsl/manual/html_node/Radix_002d2-FFT-routines-fo... ;; for stride I use the example from sorting.lisp (((mpointer x) :pointer) (1 sizet) (n :int)) :inputs (x) :definition :function :c-return :success-failure :documentation "Forward FFT for a complex double radix-2 vector")
#| ;; test run (let ((arg (make-marray '(complex double-float) :dimensions 4 :initial-element #c(0d0 0d0)))) (setf (aref arg 2) #c(1d0 0d0)) (let* ((dim (length arg))) ;; (double (make-array (* 2 dim) ;; :element-type 'double-float ;; :initial-element 0d0))) ;; repackaging complex as double -- is there a built-in? ; ;; (loop ;; for re-im across arg ;; for i from 0 to (* 2 (1- dim)) by 2 ;; do (progn ;; (setf (aref double i) (realpart re-im)) ;; (setf (aref double (1+ i)) (imagpart re-im)))) (print dim) (fft-c2f arg dim))) |#
I see one possible problem, that gsl_complex_packed_array datatypes. I don't see those defined in gsll.
Can someone help me with linking to the fft routines? Once I can access gsl's fft's, I will verify the computation, and also generate the unit tests.
Thanks,
Mirko