@@ -58,7 +58,7 @@ TEST_F(FFTKernelTest, FFTReturnsZero) {
5858 }
5959 auto result = bm->executeKernel (*data);
6060 for (int i=0 ; i<(1 << LOG_FFT_SIZE ); i++) {
61- EXPECT_FLOAT_EQ (std::abs (data->data [i]), 0.0 );
61+ EXPECT_FLOAT_EQ (std::abs (data->data_out [i]), 0.0 );
6262 }
6363}
6464
@@ -72,11 +72,11 @@ TEST_F(FFTKernelTest, FFTCloseToZeroForAll1And1) {
7272 data->data [i].imag (1.0 );
7373 }
7474 auto result = bm->executeKernel (*data);
75- EXPECT_NEAR (data->data [0 ].real (), (1 << LOG_FFT_SIZE ), 0.00001 );
76- EXPECT_NEAR (data->data [0 ].imag (), (1 << LOG_FFT_SIZE ), 0.00001 );
75+ EXPECT_NEAR (data->data_out [0 ].real (), (1 << LOG_FFT_SIZE ), 0.00001 );
76+ EXPECT_NEAR (data->data_out [0 ].imag (), (1 << LOG_FFT_SIZE ), 0.00001 );
7777 for (int i=1 ; i < (1 << LOG_FFT_SIZE ); i++) {
78- EXPECT_NEAR (data->data [i].real (), 0.0 , 0.00001 );
79- EXPECT_NEAR (data->data [i].imag (), 0.0 , 0.00001 );
78+ EXPECT_NEAR (data->data_out [i].real (), 0.0 , 0.00001 );
79+ EXPECT_NEAR (data->data_out [i].imag (), 0.0 , 0.00001 );
8080 }
8181}
8282
@@ -90,11 +90,11 @@ TEST_F(FFTKernelTest, IFFTCloseToZeroForAll1And1) {
9090 data->data [i].imag (0.0 );
9191 }
9292 auto result = bm->executeKernel (*data);
93- EXPECT_NEAR (data->data [0 ].real (), static_cast <HOST_DATA_TYPE >(1 << LOG_FFT_SIZE ), 0.00001 );
94- EXPECT_NEAR (data->data [0 ].imag (), 0.0 , 0.00001 );
93+ EXPECT_NEAR (data->data_out [0 ].real (), static_cast <HOST_DATA_TYPE >(1 << LOG_FFT_SIZE ), 0.00001 );
94+ EXPECT_NEAR (data->data_out [0 ].imag (), 0.0 , 0.00001 );
9595 for (int i=1 ; i < (1 << LOG_FFT_SIZE ); i++) {
96- EXPECT_NEAR (data->data [i].real (), 0.0 , 0.00001 );
97- EXPECT_NEAR (data->data [i].imag (), 0.0 , 0.00001 );
96+ EXPECT_NEAR (data->data_out [i].real (), 0.0 , 0.00001 );
97+ EXPECT_NEAR (data->data_out [i].imag (), 0.0 , 0.00001 );
9898 }
9999}
100100
@@ -108,18 +108,24 @@ TEST_F(FFTKernelTest, FFTandiFFTProduceResultCloseToSource) {
108108
109109 // Normalize iFFT result
110110 for (int i=0 ; i<(1 << LOG_FFT_SIZE ); i++) {
111- data->data [i] /= (1 << LOG_FFT_SIZE );
111+ data->data_out [i] /= (1 << LOG_FFT_SIZE );
112112 }
113113
114114 // Need to again bit reverse input for iFFT
115- fft::bit_reverse (data->data , 1 );
115+ fft::bit_reverse (data->data_out , 1 );
116+
117+ // Copy to input buffer for iFFT
118+ for (int i=0 ; i<(1 << LOG_FFT_SIZE ); i++) {
119+ data->data [i] = data->data_out [i];
120+ }
121+
116122 bm->getExecutionSettings ().programSettings ->inverse = true ;
117123 auto result2 = bm->executeKernel (*data);
118124 // Since data was already sorted by iFFT the bit reversal of the kernel has t be undone
119- fft::bit_reverse (data->data , 1 );
125+ fft::bit_reverse (data->data_out , 1 );
120126
121127 for (int i=1 ; i < (1 << LOG_FFT_SIZE ); i++) {
122- EXPECT_NEAR (std::abs (data->data [i]), std::abs (verify_data->data [i]), 0.001 );
128+ EXPECT_NEAR (std::abs (data->data_out [i]), std::abs (verify_data->data [i]), 0.001 );
123129 }
124130}
125131
@@ -136,10 +142,10 @@ TEST_F(FFTKernelTest, FPGAFFTAndCPUFFTGiveSameResults) {
136142
137143 // Normalize iFFT result
138144 for (int i=0 ; i<(1 << LOG_FFT_SIZE ); i++) {
139- data->data [i] -= verify_data->data [i];
145+ data->data_out [i] -= verify_data->data [i];
140146 }
141147 for (int i=1 ; i < (1 << LOG_FFT_SIZE ); i++) {
142- EXPECT_NEAR (std::abs (data->data [i]), 0.0 , 0.001 );
148+ EXPECT_NEAR (std::abs (data->data_out [i]), 0.0 , 0.001 );
143149 }
144150}
145151
@@ -157,9 +163,9 @@ TEST_F(FFTKernelTest, FPGAiFFTAndCPUiFFTGiveSameResults) {
157163
158164 // Normalize iFFT result
159165 for (int i=0 ; i<(1 << LOG_FFT_SIZE ); i++) {
160- data->data [i] -= verify_data->data [i];
166+ data->data_out [i] -= verify_data->data [i];
161167 }
162168 for (int i=1 ; i < (1 << LOG_FFT_SIZE ); i++) {
163- EXPECT_NEAR (std::abs (data->data [i]), 0.0 , 0.001 );
169+ EXPECT_NEAR (std::abs (data->data_out [i]), 0.0 , 0.001 );
164170 }
165171}
0 commit comments