57 const unsigned int integrationIntervals = 10;
58 const unsigned int tfs = 200;
59 const unsigned int rangeIDC = 200;
60 const unsigned int nFourierCoeff = rangeIDC + 2;
64 for (
int iType = 0; iType < 2; ++iType) {
65 const bool fft = iType == 0 ? false :
true;
67 FtType::setNThreads(2);
69 FtType idcFourierTransform{rangeIDC, nFourierCoeff};
70 idcFourierTransform.initFFTW3Members();
72 idcFourierTransform.setIDCs(
get1DIDCs(intervalsPerTF), intervalsPerTF);
73 idcFourierTransform.setIDCs(
get1DIDCs(intervalsPerTF), intervalsPerTF);
74 idcFourierTransform.calcFourierCoefficients(tfs);
76 const std::vector<unsigned int> offsetIndex = idcFourierTransform.getLastIntervals();
77 const auto idcOneExpanded = idcFourierTransform.getExpandedIDCOne();
78 const auto inverseFourier = idcFourierTransform.inverseFourierTransform();
79 for (
unsigned int interval = 0; interval < idcFourierTransform.getNIntervals(); ++interval) {
81 const float origIDCOne = idcOneExpanded[
index + offsetIndex[interval]];
82 const float iFTIDCOne = inverseFourier[interval][
index];
83 if (std::fabs(origIDCOne) < ABSTOLERANCE) {
84 BOOST_CHECK_SMALL(iFTIDCOne - origIDCOne, ABSTOLERANCE);
86 BOOST_CHECK_CLOSE(iFTIDCOne, origIDCOne, TOLERANCE);
96 const int nIter = 100;
97 const unsigned int integrationIntervals = 10;
98 const unsigned int rangeIDC = 200;
99 const unsigned int tfs = rangeIDC / integrationIntervals;
100 const unsigned int nFourierCoeff = rangeIDC + 2;
104 for (
int iter = 0; iter < nIter; ++iter) {
105 for (
int iType = 0; iType < 2; ++iType) {
106 const bool fft = iType == 0 ? false :
true;
108 FtType idcFourierTransform{rangeIDC, nFourierCoeff};
109 idcFourierTransform.initFFTW3Members();
111 idcFourierTransform.setIDCs(
get1DIDCs(intervalsPerTF));
112 idcFourierTransform.calcFourierCoefficients();
113 const auto offsetIndex = idcFourierTransform.getLastIntervals();
114 const auto idcOneExpanded = idcFourierTransform.getExpandedIDCOne();
115 const auto inverseFourier = idcFourierTransform.inverseFourierTransform();
116 for (
unsigned int interval = 0; interval < idcFourierTransform.getNIntervals(); ++interval) {
118 const float origIDCOne = idcOneExpanded[
index + offsetIndex[interval]];
119 const float iFTIDCOne = inverseFourier[interval][
index];
120 if (std::fabs(origIDCOne) < ABSTOLERANCE) {
121 BOOST_CHECK_SMALL(iFTIDCOne - origIDCOne, ABSTOLERANCE);
123 BOOST_CHECK_CLOSE(iFTIDCOne, origIDCOne, TOLERANCE);