Ocean
Loading...
Searching...
No Matches
TestFourierTransformation.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_TEST_TESTMATH_TEST_FOURIER_TRANSFORMATION_H
9#define META_OCEAN_TEST_TESTMATH_TEST_FOURIER_TRANSFORMATION_H
10
12
14
15namespace Ocean
16{
17
18namespace Test
19{
20
21namespace TestMath
22{
23
24/**
25 * This class implements test for the Fourier transformation class.
26 * @ingroup testmath
27 */
28class OCEAN_TEST_MATH_EXPORT TestFourierTransformation
29{
30 public:
31
32 /**
33 * This functions tests all 3D line functions.
34 * @param testDuration Number of seconds for each test, with range (0, infinity)
35 * @param selector The test selector
36 * @return True, if succeeded
37 */
38 static bool test(const double testDuration, const TestSelector& selector);
39
40 /**
41 * Tests the forward and backward (inverse) Fourier transformation.
42 * @param testDuration Number of seconds for each test, with range (0, infinity)
43 * @return True, if succeeded
44 * @tparam T The data type to be tested, 'float' or 'double'
45 * @tparam tSourceIsComplex True, if the source signal is complex; False, if the source is composed of real elements only
46 */
47 template <typename T, bool tSourceIsComplex>
48 static bool testFourierTransform(const double testDuration);
49
50 /**
51 * Tests the element-wise multiplication of two complex spectrums.
52 * @param testDuration Number of seconds for each test, with range (0, infinity)
53 * @return True, if succeeded
54 * @tparam T The data type to be tested, 'float' or 'double'
55 */
56 template <typename T>
57 static bool testElementwiseMultiplication2(const double testDuration);
58
59 /**
60 * Tests the element-wise multiplication of two spectrums in CCS-packed format.
61 * @param testDuration Number of seconds for each test, with range (0, infinity)
62 * @return True, if succeeded
63 * @tparam T The data type to be tested, 'float' or 'double'
64 */
65 template <typename T>
66 static bool testElementwiseMultiplicationCCS(const double testDuration);
67
68 /**
69 * Tests the element-wise division of two complex spectrums.
70 * @param testDuration Number of seconds for each test, with range (0, infinity)
71 * @return True, if succeeded
72 * @tparam T The data type to be tested, 'float' or 'double'
73 */
74 template <typename T>
75 static bool testElementwiseDivision2(const double testDuration);
76
77 /**
78 * Tests the in-place shift of the four quadrants of a spectrum.
79 * @param testDuration Number of seconds for each test, with range (0, infinity)
80 * @return True, if succeeded
81 * @tparam T The data type to be tested
82 */
83 template <typename T>
84 static bool testShiftHalfDimension2(const double testDuration);
85
86 protected:
87
88 /**
89 * Returns the offsets of the real part and of the imaginary part of every complex value of a CCS-packed spectrum.
90 * The offsets are determined from the CCS layout documented in FourierTransformation.h, independently of the implementation under test.
91 * @param width The width of the spectrum in elements, with range [1, infinity)
92 * @param height The height of the spectrum in elements, with range [1, infinity)
93 * @param paddingElements The number of padding elements at the end of each spectrum row, with range [0, infinity)
94 * @return The offset of the real part and the offset of the imaginary part of each complex value, the second offset is `Index32(-1)` for the values without an imaginary part
95 */
96 static IndexPairs32 ccsSpectrumValues(const unsigned int width, const unsigned int height, const unsigned int paddingElements);
97};
98
99}
100
101}
102
103}
104
105#endif // META_OCEAN_TEST_TESTMATH_TEST_FOURIER_TRANSFORMATION_H
This class implements test for the Fourier transformation class.
Definition TestFourierTransformation.h:29
static IndexPairs32 ccsSpectrumValues(const unsigned int width, const unsigned int height, const unsigned int paddingElements)
Returns the offsets of the real part and of the imaginary part of every complex value of a CCS-packed...
static bool testElementwiseMultiplicationCCS(const double testDuration)
Tests the element-wise multiplication of two spectrums in CCS-packed format.
static bool testElementwiseMultiplication2(const double testDuration)
Tests the element-wise multiplication of two complex spectrums.
static bool testFourierTransform(const double testDuration)
Tests the forward and backward (inverse) Fourier transformation.
static bool test(const double testDuration, const TestSelector &selector)
This functions tests all 3D line functions.
static bool testShiftHalfDimension2(const double testDuration)
Tests the in-place shift of the four quadrants of a spectrum.
static bool testElementwiseDivision2(const double testDuration)
Tests the element-wise division of two complex spectrums.
This class implements a test selector that parses test function strings and determines which tests sh...
Definition TestSelector.h:51
std::vector< IndexPair32 > IndexPairs32
Definition of a vector holding 32 bit index pairs.
Definition Base.h:144
The namespace covering the entire Ocean framework.
Definition Accessor.h:15