309 typedef typename ComplexDerived::Scalar src_type;
310 typedef typename ComplexDerived::RealScalar real_type;
311 typedef typename OutputDerived::Scalar dst_type;
317 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
319 THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES)
323 nfft = 2*(src.size()-1);
327 dst.derived().resize( nfft );
331 ? ( (nfft/2+1) - src.size() )
332 : ( nfft - src.size() );
334 if ( src.innerStride() != 1 || resize_input ) {
336 Matrix<src_type,1,Dynamic> tmp;
337 if ( resize_input ) {
338 size_t ncopy = (
std::min)(src.size(),src.size() + resize_input);
339 tmp.setZero(src.size() + resize_input);
342 tmp.head(ncopy) = src.head(ncopy);
343 tmp(ncopy-1) =
real(tmp(ncopy-1));
348 tmp.head(nhead) = src.head(nhead);
349 tmp.tail(ntail) = src.tail(ntail);
350 if (resize_input<0) {
351 tmp(nhead) = ( src(nfft/2) + src( src.size() - nfft/2 ) )*real_type(.5);
353 tmp(nhead) = src(nhead) * real_type(.5);
354 tmp(tmp.size()-nhead) = tmp(nhead);
360 inv( &dst[0],&tmp[0], nfft);
362 inv( &dst[0],&src[0], nfft);
fft_inv_proxy< MatrixBase< InputDerived >, FFT< T_Scalar, T_Impl > > inv(const MatrixBase< InputDerived > &src, Index nfft=-1)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
CleanedUpDerType< DerType >::type() min(const AutoDiffScalar< DerType > &x, const T &y)
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_real_op< typename Derived::Scalar >, const Derived > real(const Eigen::ArrayBase< Derived > &x)