Imported Upstream version 3.2.2
[debian/gnuradio] / gnuradio-core / src / lib / general / qa_gr_firdes.cc
index 9184c8c923fd0f08e676ccaf309c25c2dde8eb30..771249b2c59362e338d592b055a6e1f35d7ef9d8 100644 (file)
@@ -33,6 +33,7 @@
 
 using std::vector;
 
+#if 0
 static void
 print_taps (std::ostream &s, vector<float> &v)
 {
@@ -41,6 +42,7 @@ print_taps (std::ostream &s, vector<float> &v)
     printf ("tap[%2d] = %16.7e\n", i, v[i]);
   }
 }
+#endif
 
 static void
 check_symmetry (vector<float> &v)
@@ -275,6 +277,211 @@ const static float t3_exp[107] = {
 };
 
 
+const static float t4_exp[] = { // low pass
+ 0.001059958362,
+0.0002263929928,
+-0.001277606934,
+-0.0009675776237,
+ 0.001592264394,
+  0.00243603508,
+-0.001451682881,
+-0.004769335967,
+5.281541594e-18,
+ 0.007567512803,
+ 0.003658855334,
+-0.009761494584,
+ -0.01011830103,
+ 0.009636915289,
+   0.0193619132,
+-0.004935568199,
+ -0.03060629964,
+-0.007267376408,
+  0.04236677289,
+  0.03197422624,
+ -0.05274848267,
+  -0.0850463286,
+  0.05989059806,
+     0.31065014,
+   0.4370569289,
+     0.31065014,
+  0.05989059806,
+  -0.0850463286,
+ -0.05274848267,
+  0.03197422624,
+  0.04236677289,
+-0.007267376408,
+ -0.03060629964,
+-0.004935568199,
+   0.0193619132,
+ 0.009636915289,
+ -0.01011830103,
+-0.009761494584,
+ 0.003658855334,
+ 0.007567512803,
+5.281541594e-18,
+-0.004769335967,
+-0.001451682881,
+  0.00243603508,
+ 0.001592264394,
+-0.0009675776237,
+-0.001277606934,
+0.0002263929928,
+ 0.001059958362,
+};
+
+
+const static float t5_exp[] = { //high pass
+-0.001062123571,
+-0.0002268554381,
+ 0.001280216733,
+ 0.000969554123,
+-0.001595516922,
+-0.002441011136,
+ 0.001454648213,
+ 0.004779078532,
+-5.292330097e-18,
+-0.007582970895,
+ -0.00366632943,
+ 0.009781434201,
+  0.01013896987,
+-0.009656600654,
+ -0.01940146461,
+ 0.004945650231,
+  0.03066881932,
+  0.00728222169,
+ -0.04245331511,
+ -0.03203954175,
+  0.05285623297,
+  0.08522006124,
+ -0.06001294032,
+  -0.3112847209,
+   0.5630782247,
+  -0.3112847209,
+ -0.06001294032,
+  0.08522006124,
+  0.05285623297,
+ -0.03203954175,
+ -0.04245331511,
+  0.00728222169,
+  0.03066881932,
+ 0.004945650231,
+ -0.01940146461,
+-0.009656600654,
+  0.01013896987,
+ 0.009781434201,
+ -0.00366632943,
+-0.007582970895,
+-5.292330097e-18,
+ 0.004779078532,
+ 0.001454648213,
+-0.002441011136,
+-0.001595516922,
+ 0.000969554123,
+ 0.001280216733,
+-0.0002268554381,
+-0.001062123571,
+};
+
+const static float t6_exp[] = { // bandpass
+0.0002809273137,
+-0.001047327649,
+7.936541806e-05,
+-0.0004270860809,
+0.0007595835486,
+0.0008966081077,
+-0.0004236323002,
+0.0002423936094,
+-0.002212299034,
+0.0004807534278,
+0.0002620361629,
+ 0.001443728455,
+ 0.002229931997,
+-0.002720607212,
+5.731141573e-05,
+-0.004297634587,
+ 0.001878833398,
+ 0.003217151389,
+ 0.001357055153,
+ 0.003965090029,
+-0.008576190099,
+-0.0003257228818,
+-0.004805727862,
+ 0.004721920472,
+  0.01007549558,
+-0.002688719891,
+ 0.004467967432,
+ -0.01837076992,
+5.119658377e-17,
+ 0.001125075156,
+ 0.008071650751,
+  0.02113764361,
+ -0.01602453552,
+ 0.001618095324,
+ -0.03004053794,
+ 0.003163811285,
+   0.0219683405,
+ 0.007950295694,
+  0.03682873398,
+ -0.05142467469,
+ -0.00794606097,
+ -0.03965795785,
+  0.01544955093,
+  0.09681399167,
+ -0.01610304788,
+  0.08297294378,
+  -0.2811714709,
+  -0.1094062924,
+   0.5275565982,
+  -0.1094062924,
+  -0.2811714709,
+  0.08297294378,
+ -0.01610304788,
+  0.09681399167,
+  0.01544955093,
+ -0.03965795785,
+ -0.00794606097,
+ -0.05142467469,
+  0.03682873398,
+ 0.007950295694,
+   0.0219683405,
+ 0.003163811285,
+ -0.03004053794,
+ 0.001618095324,
+ -0.01602453552,
+  0.02113764361,
+ 0.008071650751,
+ 0.001125075156,
+5.119658377e-17,
+ -0.01837076992,
+ 0.004467967432,
+-0.002688719891,
+  0.01007549558,
+ 0.004721920472,
+-0.004805727862,
+-0.0003257228818,
+-0.008576190099,
+ 0.003965090029,
+ 0.001357055153,
+ 0.003217151389,
+ 0.001878833398,
+-0.004297634587,
+5.731141573e-05,
+-0.002720607212,
+ 0.002229931997,
+ 0.001443728455,
+0.0002620361629,
+0.0004807534278,
+-0.002212299034,
+0.0002423936094,
+-0.0004236323002,
+0.0008966081077,
+0.0007595835486,
+-0.0004270860809,
+7.936541806e-05,
+-0.001047327649,
+0.0002809273137,
+};
+
 void
 qa_gr_firdes::t1 ()
 {
@@ -340,5 +547,72 @@ qa_gr_firdes::t3 ()
 
 void
 qa_gr_firdes::t4 ()
+{
+  vector<float> taps =
+    gr_firdes::low_pass_2 ( 1.0,
+                         8000,
+                         1750,
+                         500,
+                         66,
+                         gr_firdes::WIN_HAMMING);
+
+  //  std::cout << "ntaps: " << taps.size () << std::endl;
+  //  print_taps (std::cout, taps);
+
+  CPPUNIT_ASSERT_EQUAL (NELEM (t4_exp), taps.size ());
+  for (unsigned int i = 0; i < taps.size (); i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL (t4_exp[i], taps[i], 1e-9);
+
+
+  check_symmetry (taps);
+}
+
+void
+qa_gr_firdes::t5 ()
+{
+  vector<float> taps =
+    gr_firdes::high_pass_2 ( 1.0,
+                          8000,
+                          1750,
+                          500,
+                          66,
+                          gr_firdes::WIN_HAMMING);
+
+  //  std::cout << "ntaps: " << taps.size () << std::endl;
+  //  print_taps (std::cout, taps);
+
+  CPPUNIT_ASSERT_EQUAL (NELEM (t5_exp), taps.size ());
+
+  for (unsigned int i = 0; i < taps.size (); i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL (t5_exp[i], taps[i], 1e-9);
+
+  check_symmetry (taps);
+}
+
+void
+qa_gr_firdes::t6 ()
+{
+  vector<float> taps =
+    gr_firdes::band_pass_2 ( 1.0,
+                          20e6,
+                          5.75e6 - (5.28e6/2),
+                          5.75e6 + (5.28e6/2),
+                          0.62e6,
+                          66,
+                          gr_firdes::WIN_HAMMING);
+
+  //  std::cout << "ntaps: " << taps.size () << std::endl;
+  //  print_taps (std::cout, taps);
+
+  CPPUNIT_ASSERT_EQUAL (NELEM (t6_exp), taps.size ());
+
+  for (unsigned int i = 0; i < taps.size (); i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL (t6_exp[i], taps[i], 1e-7);
+
+  check_symmetry (taps);
+}
+
+void
+qa_gr_firdes::t7 ()
 {
 }