diff options
author | Mark Borgerding <mark@borgerding.net> | 2010-01-22 01:17:36 -0500 |
---|---|---|
committer | Mark Borgerding <mark@borgerding.net> | 2010-01-22 01:17:36 -0500 |
commit | 141c746fc71b3f615378c5dc01cef2582682e3bd (patch) | |
tree | 71c76c0eb45ebac9567447a4f073043ae8412602 /unsupported/Eigen/FFT | |
parent | cd7912313dc2477283de767029462d7d0e6ee8ab (diff) |
if the src.stride() != 1, then the layout is not continuous -- need to copy to temporary
Diffstat (limited to 'unsupported/Eigen/FFT')
-rw-r--r-- | unsupported/Eigen/FFT | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/unsupported/Eigen/FFT b/unsupported/Eigen/FFT index caaf79714..6c8cf7fdd 100644 --- a/unsupported/Eigen/FFT +++ b/unsupported/Eigen/FFT @@ -185,7 +185,13 @@ class FFT dst->derived().resize( (src.size()>>1)+1); else dst->derived().resize(src.size()); - fwd( &(*dst)[0],&src[0],src.size() ); + + if (src.stride() != 1) { + Matrix<typename InputDerived::Scalar,1,Dynamic> tmp = src; + fwd( &(*dst)[0],&tmp[0],src.size() ); + }else{ + fwd( &(*dst)[0],&src[0],src.size() ); + } } inline @@ -219,7 +225,12 @@ class FFT int nfft = src.size(); int nout = HasFlag(HalfSpectrum) ? ((nfft>>1)+1) : nfft; dst->derived().resize( nout ); - inv( &(*dst)[0],&src[0], nfft); + if (src.stride() != 1) { + Matrix<typename ComplexDerived::Scalar,1,Dynamic> tmp = src; + inv( &(*dst)[0],&tmp[0], nfft); + }else{ + inv( &(*dst)[0],&src[0], nfft); + } } template <typename _Output> |