aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/FFT
diff options
context:
space:
mode:
authorGravatar Mark Borgerding <mark@borgerding.net>2010-01-22 01:17:36 -0500
committerGravatar Mark Borgerding <mark@borgerding.net>2010-01-22 01:17:36 -0500
commit141c746fc71b3f615378c5dc01cef2582682e3bd (patch)
tree71c76c0eb45ebac9567447a4f073043ae8412602 /unsupported/Eigen/FFT
parentcd7912313dc2477283de767029462d7d0e6ee8ab (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/FFT15
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>