summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/math/qa_fxpt_vco.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/lib/math/qa_fxpt_vco.cc')
-rw-r--r--gnuradio-runtime/lib/math/qa_fxpt_vco.cc150
1 files changed, 76 insertions, 74 deletions
diff --git a/gnuradio-runtime/lib/math/qa_fxpt_vco.cc b/gnuradio-runtime/lib/math/qa_fxpt_vco.cc
index d4952fe25c..a24e38d63b 100644
--- a/gnuradio-runtime/lib/math/qa_fxpt_vco.cc
+++ b/gnuradio-runtime/lib/math/qa_fxpt_vco.cc
@@ -39,90 +39,92 @@ static const float SIN_COS_AMPL = 0.8;
static const int SIN_COS_BLOCK_SIZE = 100000;
-static double max_d(double a, double b)
+static double max_d(double a, double b) { return fabs(a) > fabs(b) ? a : b; }
+
+BOOST_AUTO_TEST_CASE(t0)
{
- return fabs(a) > fabs(b) ? a : b;
-}
+ gr::vco<float, float> ref_vco;
+ gr::fxpt_vco new_vco;
+ double max_error = 0, max_phase_error = 0;
+ float input[SIN_COS_BLOCK_SIZE];
-BOOST_AUTO_TEST_CASE(t0) {
- gr::vco<float,float> ref_vco;
- gr::fxpt_vco new_vco;
- double max_error = 0, max_phase_error = 0;
- float input[SIN_COS_BLOCK_SIZE];
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ input[i] = sin(double(i));
+ }
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- input[i] = sin(double(i));
- }
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ float ref_cos = ref_vco.cos();
+ float new_cos = new_vco.cos();
+ BOOST_CHECK(std::abs(ref_cos - new_cos) <= SIN_COS_TOLERANCE);
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- float ref_cos = ref_vco.cos();
- float new_cos = new_vco.cos();
- BOOST_CHECK(std::abs(ref_cos - new_cos) <= SIN_COS_TOLERANCE);
+ max_error = max_d(max_error, ref_cos - new_cos);
- max_error = max_d(max_error, ref_cos-new_cos);
+ ref_vco.adjust_phase(input[i]);
+ new_vco.adjust_phase(input[i]);
- ref_vco.adjust_phase(input[i]);
- new_vco.adjust_phase(input[i]);
+ BOOST_CHECK(std::abs(ref_vco.get_phase() - new_vco.get_phase()) <=
+ SIN_COS_TOLERANCE);
- BOOST_CHECK(std::abs(ref_vco.get_phase() - new_vco.get_phase()) <= SIN_COS_TOLERANCE);
-
- max_phase_error = max_d(max_phase_error, ref_vco.get_phase()-new_vco.get_phase());
- }
- // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error, max_phase_error);
+ max_phase_error =
+ max_d(max_phase_error, ref_vco.get_phase() - new_vco.get_phase());
+ }
+ // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error,
+ // max_phase_error);
}
-BOOST_AUTO_TEST_CASE(t1) {
- gr::vco<float,float> ref_vco;
- gr::fxpt_vco new_vco;
- float *ref_block = new float[SIN_COS_BLOCK_SIZE];
- float *new_block = new float[SIN_COS_BLOCK_SIZE];
- float *input = new float[SIN_COS_BLOCK_SIZE];
- double max_error = 0;
-
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- input[i] = sin(double(i));
- }
-
- ref_vco.cos(ref_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
- new_vco.cos(new_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
-
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- BOOST_CHECK(std::abs(ref_block[i] - new_block[i]) <= SIN_COS_TOLERANCE);
- max_error = max_d(max_error, ref_block[i]-new_block[i]);
- }
- BOOST_CHECK(std::abs(ref_vco.get_phase() - new_vco.get_phase()) <= SIN_COS_TOLERANCE);
- // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error, ref_vco.get_phase()-new_vco.get_phase());
- delete[] ref_block;
- delete[] new_block;
- delete[] input;
+BOOST_AUTO_TEST_CASE(t1)
+{
+ gr::vco<float, float> ref_vco;
+ gr::fxpt_vco new_vco;
+ float* ref_block = new float[SIN_COS_BLOCK_SIZE];
+ float* new_block = new float[SIN_COS_BLOCK_SIZE];
+ float* input = new float[SIN_COS_BLOCK_SIZE];
+ double max_error = 0;
+
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ input[i] = sin(double(i));
+ }
+
+ ref_vco.cos(ref_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
+ new_vco.cos(new_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
+
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ BOOST_CHECK(std::abs(ref_block[i] - new_block[i]) <= SIN_COS_TOLERANCE);
+ max_error = max_d(max_error, ref_block[i] - new_block[i]);
+ }
+ BOOST_CHECK(std::abs(ref_vco.get_phase() - new_vco.get_phase()) <= SIN_COS_TOLERANCE);
+ // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error,
+ // ref_vco.get_phase()-new_vco.get_phase());
+ delete[] ref_block;
+ delete[] new_block;
+ delete[] input;
}
-BOOST_AUTO_TEST_CASE(t2) {
- gr::vco<gr_complex,float> ref_vco;
- gr::fxpt_vco new_vco;
- gr_complex *ref_block = new gr_complex[SIN_COS_BLOCK_SIZE];
- gr_complex *new_block = new gr_complex[SIN_COS_BLOCK_SIZE];
- float *input = new float[SIN_COS_BLOCK_SIZE];
- double max_error = 0;
-
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- input[i] = sin(double(i));
- }
-
- ref_vco.sincos(ref_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
- new_vco.sincos(new_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
-
- for(int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
- BOOST_CHECK(std::abs(ref_block[i] - new_block[i]) <= SIN_COS_TOLERANCE);
- max_error = max_d(max_error, abs(ref_block[i]-new_block[i]));
- }
- BOOST_CHECK(
- std::abs(ref_vco.get_phase() - new_vco.get_phase()) <= SIN_COS_TOLERANCE
- );
- // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error, ref_vco.get_phase()-new_vco.get_phase());
- delete[] ref_block;
- delete[] new_block;
- delete[] input;
+BOOST_AUTO_TEST_CASE(t2)
+{
+ gr::vco<gr_complex, float> ref_vco;
+ gr::fxpt_vco new_vco;
+ gr_complex* ref_block = new gr_complex[SIN_COS_BLOCK_SIZE];
+ gr_complex* new_block = new gr_complex[SIN_COS_BLOCK_SIZE];
+ float* input = new float[SIN_COS_BLOCK_SIZE];
+ double max_error = 0;
+
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ input[i] = sin(double(i));
+ }
+
+ ref_vco.sincos(ref_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
+ new_vco.sincos(new_block, input, SIN_COS_BLOCK_SIZE, SIN_COS_K, SIN_COS_AMPL);
+
+ for (int i = 0; i < SIN_COS_BLOCK_SIZE; i++) {
+ BOOST_CHECK(std::abs(ref_block[i] - new_block[i]) <= SIN_COS_TOLERANCE);
+ max_error = max_d(max_error, abs(ref_block[i] - new_block[i]));
+ }
+ BOOST_CHECK(std::abs(ref_vco.get_phase() - new_vco.get_phase()) <= SIN_COS_TOLERANCE);
+ // printf ("Fxpt max error %.9f, max phase error %.9f\n", max_error,
+ // ref_vco.get_phase()-new_vco.get_phase());
+ delete[] ref_block;
+ delete[] new_block;
+ delete[] input;
}
-