59 const auto necessaryInputPoints =
shape.
cols / 2 + 1;
61 if (x.numCols() > necessaryInputPoints)
63 input = x(x.rSlice(),
Slice(necessaryInputPoints + 1));
65 else if (x.numCols() < necessaryInputPoints)
68 input.put(x.rSlice(), x.cSlice(), x);
75 auto realN = 2 * (input.numCols() - 1);
78 for (
auto row = 0u; row < input.numRows(); ++row)
83 fullOutput.begin(0) + input.numCols(),
85 [](
const auto& value) { return std::conj(value); });
86 for (
auto col = 1u; col < input.numCols(); ++col)
90 fullOutput.rcolbegin(fullOutput.numCols() - col),
91 [](
const auto& value) { return std::conj(value); });
109 template<
typename dtype>
114 const auto data = nc::complex<dtype, double>(inArray);
128 template<
typename dtype>
133 const auto&
shape = inArray.shape();
134 const auto newCols = 2 * (
shape.
cols - 1);
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition: StaticAsserts.hpp:39
A Shape Class for NdArrays.
Definition: Core/shape.hpp:41
uint32 rows
Definition: Core/shape.hpp:44
uint32 cols
Definition: Core/shape.hpp:45
A Class for slicing into NdArrays.
Definition: Slice.hpp:45
NdArray< std::complex< double > > ifft2_internal(const NdArray< std::complex< double > > &x, const Shape &shape)
Definition: ifft2.hpp:47
NdArray< double > irfft2_internal(const NdArray< std::complex< double > > &x, const Shape &shape)
Definition: irfft2.hpp:52
Definition: FFT/fft.hpp:40
NdArray< double > irfft2(const NdArray< std::complex< dtype > > &inArray, const Shape &inShape)
Definition: irfft2.hpp:110
OutputIt transform(InputIt first, InputIt last, OutputIt destination, UnaryOperation unaryFunction)
Definition: StlAlgorithms.hpp:776
OutputIt copy(InputIt first, InputIt last, OutputIt destination) noexcept
Definition: StlAlgorithms.hpp:98
auto real(const std::complex< dtype > &inValue)
Definition: real.hpp:48
NdArray< dtype > zeros(uint32 inSquareSize)
Definition: zeros.hpp:48
Shape shape(const NdArray< dtype > &inArray) noexcept
Definition: Functions/shape.hpp:42