57 const auto realN =
n / 2 + 1;
64 const auto k = static_cast<double>(&resultElement - result.data());
65 const auto minusTwoPiKOverN = -constants::twoPi * k / static_cast<double>(n);
66 resultElement = std::complex<double>{ 0., 0. };
67 for (
auto m = 0u;
m < std::min(
n, x.size()); ++
m)
90 template<
typename dtype>
100 return detail::rfft_internal(data, inN);
106 const auto realN = inN / 2 + 1;
108 const auto dataColSlice = data.
cSlice();
109 const auto resultColSlice = result.cSlice();
111 for (
uint32 row = 0; row < data.numRows(); ++row)
113 const auto rowData = data(row, dataColSlice);
114 const auto rowResult = detail::rfft_internal(rowData, inN);
115 result.put(row, resultColSlice, rowResult);
122 return rfft(inArray.
transpose(), inN, Axis::COL).transpose();
143 template<
typename dtype>
152 return rfft(inArray, inArray.
size(), inAxis);
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition Error.hpp:37
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition StaticAsserts.hpp:39
Holds 1D and 2D arrays, the main work horse of the NumCpp library.
Definition NdArrayCore.hpp:139
size_type size() const noexcept
Definition NdArrayCore.hpp:4600
self_type transpose() const
Definition NdArrayCore.hpp:4959
size_type numCols() const noexcept
Definition NdArrayCore.hpp:3541
const Shape & shape() const noexcept
Definition NdArrayCore.hpp:4587
size_type numRows() const noexcept
Definition NdArrayCore.hpp:3553
Slice cSlice(index_type inStartIdx=0, size_type inStepSize=1) const
Definition NdArrayCore.hpp:1008
uint32 rows
Definition Core/shape.hpp:44
NdArray< std::complex< double > > rfft_internal(const NdArray< std::complex< double > > &x, uint32 n)
Definition rfft.hpp:50
Definition FFT/FFT.hpp:40
NdArray< std::complex< double > > rfft(const NdArray< dtype > &inArray, uint32 inN, Axis inAxis=Axis::NONE)
Definition rfft.hpp:91
void for_each(InputIt first, InputIt last, UnaryFunction f)
Definition StlAlgorithms.hpp:225
Axis
Enum To describe an axis.
Definition Enums.hpp:36
auto angle(const std::complex< dtype > &inValue)
Definition angle.hpp:48
NdArray< dtype > arange(dtype inStart, dtype inStop, dtype inStep=1)
Definition arange.hpp:59
Shape shape(const NdArray< dtype > &inArray) noexcept
Definition Functions/shape.hpp:42
std::uint32_t uint32
Definition Types.hpp:40