@@ -45,18 +45,6 @@ TEST(primFun, fft) {
4545 EXPECT_NEAR (imag (yb[2 ]), 2 * -6.53589838 , 1e-6 );
4646}
4747
48- template <typename T, typename U>
49- void expect_complex_mat_eq (const T& x, const U& y, double tol = 1e-8 ) {
50- EXPECT_EQ (x.rows (), y.rows ());
51- EXPECT_EQ (x.cols (), y.cols ());
52- for (int j = 0 ; j < x.cols (); ++j) {
53- for (int i = 0 ; i < x.rows (); ++i) {
54- EXPECT_FLOAT_EQ (real (x (i, j)), real (y (i, j)));
55- EXPECT_FLOAT_EQ (imag (x (i, j)), imag (y (i, j)));
56- }
57- }
58- }
59-
6048TEST (primFun, inv_fft) {
6149 using c_t = std::complex <double >;
6250 using cv_t = Eigen::Matrix<std::complex <double >, -1 , 1 >;
@@ -74,7 +62,7 @@ TEST(primFun, inv_fft) {
7462 cv_t x1 = inv_fft (y1);
7563 cv_t x1_expected (1 );
7664 x1_expected << c_t (-3.247 , 1.98555 );
77- expect_complex_mat_eq (x1_expected, x1);
65+ EXPECT_MATRIX_COMPLEX_NEAR (x1_expected, x1, 1e-8 );
7866
7967 EXPECT_EQ (1 , x1.size ());
8068 EXPECT_EQ (real (x1[0 ]), -3.247 );
@@ -87,7 +75,7 @@ TEST(primFun, inv_fft) {
8775 EXPECT_EQ (3 , y.size ());
8876 Eigen::VectorXcd x_expected (3 );
8977 x_expected << c_t (1 , -2 ), c_t (-3 , 5 ), c_t (-7 , 11 );
90- expect_complex_mat_eq (x_expected, x);
78+ EXPECT_MATRIX_COMPLEX_NEAR (x_expected, x, 1e-8 );
9179}
9280
9381TEST (primFun, fft2) {
@@ -115,7 +103,7 @@ TEST(primFun, fft2) {
115103 cm_t y12 = fft2 (x12);
116104 cm_t y12_expected (1 , 2 );
117105 y12_expected << c_t (-7.6 , -3.7 ), c_t (9.6 , -4.1 );
118- expect_complex_mat_eq (y12_expected, y12);
106+ EXPECT_MATRIX_COMPLEX_NEAR (y12_expected, y12, 1e-8 );
119107
120108 cm_t x33 (3 , 3 );
121109 x33 << c_t (1 , 2 ), c_t (3 , -1.4 ), c_t (2 , 1 ), c_t (3 , -9 ), c_t (2 , -1.3 ),
@@ -127,7 +115,7 @@ TEST(primFun, fft2) {
127115 c_t (-13.29326674 , 20.88153533 ), c_t (-13.25262794 , 15.82794549 ),
128116 c_t (4.160254038 , 5.928718708 ), c_t (-11.34737206 , -7.72794549 ),
129117 c_t (4.89326674 , -1.98153533 );
130- expect_complex_mat_eq (y33_expected, y33);
118+ EXPECT_MATRIX_COMPLEX_NEAR (y33_expected, y33, 1e-8 );
131119}
132120
133121TEST (primFunFFT, invfft2) {
@@ -153,7 +141,7 @@ TEST(primFunFFT, invfft2) {
153141 x13 << c_t (-2.3 , 1.82 ), c_t (1.18 , 9.32 ), c_t (1.15 , -14.1 );
154142 cm_t y13 = inv_fft2 (x13);
155143 cm_t y13copy = inv_fft (x13.row (0 ));
156- expect_complex_mat_eq (y13, y13copy.transpose ());
144+ EXPECT_MATRIX_COMPLEX_NEAR (y13, y13copy.transpose (), 1e-8 );
157145
158146 cm_t x33 (3 , 3 );
159147 x33 << c_t (1 , 2 ), c_t (3 , -1.4 ), c_t (2 , 1 ), c_t (3 , -9 ), c_t (2 , -1.3 ),
@@ -182,10 +170,10 @@ TEST(primFunFFT, invfft2) {
182170
183171 // check round trips inv_fft(fft(x))
184172 cm_t x33copy = inv_fft2 (y33);
185- expect_complex_mat_eq (x33, x33copy);
173+ EXPECT_MATRIX_COMPLEX_NEAR (x33, x33copy, 1e-8 );
186174
187175 // check round trip fft(inv_fft(x))
188176 cm_t z33 = inv_fft2 (x33);
189177 cm_t x33copy2 = fft2 (z33);
190- expect_complex_mat_eq (x33, x33copy2);
178+ EXPECT_MATRIX_COMPLEX_NEAR (x33, x33copy2, 1e-8 );
191179}
0 commit comments