comparison liboctave/oct-fftw.cc @ 10350:12884915a8e4

merge MArray classes & improve Array interface
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 23 Jan 2010 21:41:03 +0100
parents 07ebe522dac2
children 331fcc41ca23
comparison
equal deleted inserted replaced
10349:d4d13389c957 10350:12884915a8e4
761 octave_fftw::fft (const double *in, Complex *out, size_t npts, 761 octave_fftw::fft (const double *in, Complex *out, size_t npts,
762 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 762 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
763 { 763 {
764 dist = (dist < 0 ? npts : dist); 764 dist = (dist < 0 ? npts : dist);
765 765
766 dim_vector dv (npts); 766 dim_vector dv (npts, 1);
767 fftw_plan plan = octave_fftw_planner::create_plan (1, dv, nsamples, 767 fftw_plan plan = octave_fftw_planner::create_plan (1, dv, nsamples,
768 stride, dist, in, out); 768 stride, dist, in, out);
769 769
770 fftw_execute_dft_r2c (plan, (const_cast<double *>(in)), 770 fftw_execute_dft_r2c (plan, (const_cast<double *>(in)),
771 reinterpret_cast<fftw_complex *> (out)); 771 reinterpret_cast<fftw_complex *> (out));
781 octave_fftw::fft (const Complex *in, Complex *out, size_t npts, 781 octave_fftw::fft (const Complex *in, Complex *out, size_t npts,
782 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 782 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
783 { 783 {
784 dist = (dist < 0 ? npts : dist); 784 dist = (dist < 0 ? npts : dist);
785 785
786 dim_vector dv (npts); 786 dim_vector dv (npts, 1);
787 fftw_plan plan = octave_fftw_planner::create_plan (FFTW_FORWARD, 1, dv, 787 fftw_plan plan = octave_fftw_planner::create_plan (FFTW_FORWARD, 1, dv,
788 nsamples, stride, 788 nsamples, stride,
789 dist, in, out); 789 dist, in, out);
790 790
791 fftw_execute_dft (plan, 791 fftw_execute_dft (plan,
799 octave_fftw::ifft (const Complex *in, Complex *out, size_t npts, 799 octave_fftw::ifft (const Complex *in, Complex *out, size_t npts,
800 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 800 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
801 { 801 {
802 dist = (dist < 0 ? npts : dist); 802 dist = (dist < 0 ? npts : dist);
803 803
804 dim_vector dv (npts); 804 dim_vector dv (npts, 1);
805 fftw_plan plan = octave_fftw_planner::create_plan (FFTW_BACKWARD, 1, dv, 805 fftw_plan plan = octave_fftw_planner::create_plan (FFTW_BACKWARD, 1, dv,
806 nsamples, stride, 806 nsamples, stride,
807 dist, in, out); 807 dist, in, out);
808 808
809 fftw_execute_dft (plan, 809 fftw_execute_dft (plan,
889 octave_fftw::fft (const float *in, FloatComplex *out, size_t npts, 889 octave_fftw::fft (const float *in, FloatComplex *out, size_t npts,
890 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 890 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
891 { 891 {
892 dist = (dist < 0 ? npts : dist); 892 dist = (dist < 0 ? npts : dist);
893 893
894 dim_vector dv (npts); 894 dim_vector dv (npts, 1);
895 fftwf_plan plan = octave_float_fftw_planner::create_plan (1, dv, nsamples, 895 fftwf_plan plan = octave_float_fftw_planner::create_plan (1, dv, nsamples,
896 stride, dist, 896 stride, dist,
897 in, out); 897 in, out);
898 898
899 fftwf_execute_dft_r2c (plan, (const_cast<float *>(in)), 899 fftwf_execute_dft_r2c (plan, (const_cast<float *>(in)),
910 octave_fftw::fft (const FloatComplex *in, FloatComplex *out, size_t npts, 910 octave_fftw::fft (const FloatComplex *in, FloatComplex *out, size_t npts,
911 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 911 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
912 { 912 {
913 dist = (dist < 0 ? npts : dist); 913 dist = (dist < 0 ? npts : dist);
914 914
915 dim_vector dv (npts); 915 dim_vector dv (npts, 1);
916 fftwf_plan plan = octave_float_fftw_planner::create_plan (FFTW_FORWARD, 1, 916 fftwf_plan plan = octave_float_fftw_planner::create_plan (FFTW_FORWARD, 1,
917 dv, nsamples, 917 dv, nsamples,
918 stride, dist, 918 stride, dist,
919 in, out); 919 in, out);
920 920
929 octave_fftw::ifft (const FloatComplex *in, FloatComplex *out, size_t npts, 929 octave_fftw::ifft (const FloatComplex *in, FloatComplex *out, size_t npts,
930 size_t nsamples, octave_idx_type stride, octave_idx_type dist) 930 size_t nsamples, octave_idx_type stride, octave_idx_type dist)
931 { 931 {
932 dist = (dist < 0 ? npts : dist); 932 dist = (dist < 0 ? npts : dist);
933 933
934 dim_vector dv (npts); 934 dim_vector dv (npts, 1);
935 fftwf_plan plan = octave_float_fftw_planner::create_plan (FFTW_BACKWARD, 1, 935 fftwf_plan plan = octave_float_fftw_planner::create_plan (FFTW_BACKWARD, 1,
936 dv, nsamples, 936 dv, nsamples,
937 stride, dist, 937 stride, dist,
938 in, out); 938 in, out);
939 939