Fix for ticket:80 .
authormichaelld <michaelld@221aa14e-8319-0410-a670-987f0aec2ac5>
Sat, 14 Oct 2006 18:40:03 +0000 (18:40 +0000)
committermichaelld <michaelld@221aa14e-8319-0410-a670-987f0aec2ac5>
Sat, 14 Oct 2006 18:40:03 +0000 (18:40 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3787 221aa14e-8319-0410-a670-987f0aec2ac5

configure.ac
gr-error-correcting-codes/src/lib/ecc_syms_to_metrics.cc
gr-error-correcting-codes/src/lib/ecc_syms_to_metrics.h
gr-error-correcting-codes/src/lib/ecc_syms_to_metrics.i
gr-error-correcting-codes/src/lib/libecc/code_metrics.cc

index 94204d6694be8e7de8a68f8e90c111f999436a81..033eaf1e9def3e58f60d8d64f8554ee7a59b9327 100644 (file)
@@ -171,7 +171,7 @@ GRC_GR_AUDIO_PORTAUDIO
 GRC_GR_AUDIO_WINDOWS
 GRC_GR_ATSC
 GRC_GR_COMEDI
-#GRC_GR_ERROR_CORRECTING_CODES
+GRC_GR_ERROR_CORRECTING_CODES
 GRC_GR_GSM_FR_VOCODER
 GRC_GR_RADAR
 GRC_GR_RADIO_ASTRONOMY
index 23d172f3002d8e7bbc2b004317d0867047c3f975..bfe44f17a71897f9bf623e6ad103542edd7192ba 100644 (file)
 #include <assert.h>
 
 ecc_syms_to_metrics_sptr 
-ecc_make_syms_to_metrics (gr_feval_ff* pdf_fcn_0_bit,
-                         gr_feval_ff* pdf_fcn_1_bit,
+ecc_make_syms_to_metrics (gr_feval_dd* pdf_fcn_0_bit,
+                         gr_feval_dd* pdf_fcn_1_bit,
                          int n_samples,
-                         float min_sample,
-                         float max_sample,
+                         double min_sample,
+                         double max_sample,
                          int sample_precision)
 {
   return ecc_syms_to_metrics_sptr
@@ -46,29 +46,29 @@ ecc_make_syms_to_metrics (gr_feval_ff* pdf_fcn_0_bit,
 }
 
 /*
- * dummy functions and variables to get the float(*)(float) function
+ * dummy functions and variables to get the double(*)(double) function
  * to work properly with the gr_feval_XX stuff.
  */
 
-static gr_feval_ff* l_pdf_fcn_0_bit;
-static gr_feval_ff* l_pdf_fcn_1_bit;
+static gr_feval_dd* l_pdf_fcn_0_bit;
+static gr_feval_dd* l_pdf_fcn_1_bit;
 
-static float pdf_fcn_0 (float x)
+static double pdf_fcn_0 (double x)
 {
   return (l_pdf_fcn_0_bit->eval (x));
 }
 
-static float pdf_fcn_1 (float x)
+static double pdf_fcn_1 (double x)
 {
   return (l_pdf_fcn_1_bit->eval (x));
 }
 
 ecc_syms_to_metrics::ecc_syms_to_metrics
-(gr_feval_ff* pdf_fcn_0_bit,
- gr_feval_ff* pdf_fcn_1_bit,
+(gr_feval_dd* pdf_fcn_0_bit,
+ gr_feval_dd* pdf_fcn_1_bit,
  int n_samples,
float min_sample,
float max_sample,
double min_sample,
double max_sample,
  int sample_precision)
   : gr_block ("syms_to_metrics",
              gr_make_io_signature (1, -1, sizeof (float)),
@@ -84,7 +84,7 @@ ecc_syms_to_metrics::ecc_syms_to_metrics
   // use the static "create" member function to create the actual
   // code_metrics to use.
 
-  d_code_metrics_table = libecc_code_metrics_create_table<float>
+  d_code_metrics_table = libecc_code_metrics_create_table<double>
     (&pdf_fcn_0,
      &pdf_fcn_1,
      n_samples,
@@ -132,7 +132,7 @@ ecc_syms_to_metrics::general_work
   size_t l_n_output_items = noutput_items;
 
   for (size_t n = 0; n < input_items.size(); n++) {
-    float* t_in_buf = (float*)(&input_items[n]);
+    double* t_in_buf = (double*)(&input_items[n]);
     void* t_out_buf_0_bit = (void*)(&(output_items[2*n]));
     void* t_out_buf_1_bit = (void*)(&(output_items[(2*n)+1]));
     d_code_metrics_table->convert (l_n_output_items, t_in_buf,
index 7818f4bee87fc9ac5c1e66c0e638fc2e2e2a126c..c5f853cd353d2c76df36db298282810200a3a086 100644 (file)
@@ -32,11 +32,11 @@ class ecc_syms_to_metrics;
 typedef boost::shared_ptr<ecc_syms_to_metrics> ecc_syms_to_metrics_sptr;
 
 ecc_syms_to_metrics_sptr ecc_make_syms_to_metrics
-(gr_feval_ff* pdf_fcn_0_bit,
- gr_feval_ff* pdf_fcn_1_bit,
+(gr_feval_dd* pdf_fcn_0_bit,
+ gr_feval_dd* pdf_fcn_1_bit,
  int n_samples,
float min_sample,
float max_sample,
double min_sample,
double max_sample,
  int sample_precision);
 
 /*!
@@ -53,11 +53,11 @@ class ecc_syms_to_metrics : public gr_block
 {
 protected:
   friend ecc_syms_to_metrics_sptr
-  ecc_make_syms_to_metrics (gr_feval_ff* pdf_fcn_0_bit,
-                           gr_feval_ff* pdf_fcn_1_bit,
+  ecc_make_syms_to_metrics (gr_feval_dd* pdf_fcn_0_bit,
+                           gr_feval_dd* pdf_fcn_1_bit,
                            int n_samples,
-                           float min_sample,
-                           float max_sample,
+                           double min_sample,
+                           double max_sample,
                            int sample_precision);
 
 /*
@@ -70,10 +70,10 @@ protected:
  *     faster processing.
  *
  * pdf_fcn_0_bit: point to a probability distribution function which
- *     takes a float and returns a float, for the 0-bit probabilities.
+ *     takes a double and returns a double, for the 0-bit probabilities.
  *
  * pdf_fcn_1_bit: point to a probability distribution function which
- *     takes a float and returns a float, for the 1-bit probabilities.
+ *     takes a double and returns a double, for the 1-bit probabilities.
  *
  * n_samples: the number of samples between min_sample and max_sample
  *     to store in the lookup table.  Must be at least 2, but
@@ -98,15 +98,15 @@ protected:
  *
  */
 
-  ecc_syms_to_metrics (gr_feval_ff* pdf_fcn_0_bit,
-                      gr_feval_ff* pdf_fcn_1_bit,
+  ecc_syms_to_metrics (gr_feval_dd* pdf_fcn_0_bit,
+                      gr_feval_dd* pdf_fcn_1_bit,
                       int n_samples,
-                      float min_sample,
-                      float max_sample,
+                      double min_sample,
+                      double max_sample,
                       int sample_precision);
 
   size_t d_out_item_size_bytes;
-  code_metrics_table<float>* d_code_metrics_table;
+  code_metrics_table<double>* d_code_metrics_table;
 
 public:
   ~ecc_syms_to_metrics() {delete d_code_metrics_table;};
index 60f2eea27ee02c8edc38b3fec0bbff44cee3d8a6..32a830473830026ff7643387957b22f1882aba76 100644 (file)
 GR_SWIG_BLOCK_MAGIC(ecc,syms_to_metrics);
 
 ecc_syms_to_metrics_sptr ecc_make_syms_to_metrics
-(gr_feval_ff* pdf_fcn_0_bit,
- gr_feval_ff* pdf_fcn_1_bit,
+(gr_feval_dd* pdf_fcn_0_bit,
+ gr_feval_dd* pdf_fcn_1_bit,
  int n_samples,
float min_sample, 
float max_sample,
double min_sample, 
double max_sample,
  int sample_precision);
 
 class ecc_syms_to_metrics : public gr_block
 {
-  ecc_syms_to_metrics (gr_feval_ff* pdf_fcn_0_bit,
-                      gr_feval_ff* pdf_fcn_1_bit,
+  ecc_syms_to_metrics (gr_feval_dd* pdf_fcn_0_bit,
+                      gr_feval_dd* pdf_fcn_1_bit,
                       int n_samples,
-                      float min_sample, 
-                      float max_sample,
+                      double min_sample, 
+                      double max_sample,
                       int sample_precision);
 };
index 0cd43c50476183be0667616709908eabd5d0e908..db402b3ebe7d5a4153401de6c6dcc8f6e526c654 100644 (file)
@@ -339,6 +339,16 @@ libecc_code_metrics_create_table<float>
  float max_sample,
  int sample_precision);
 
+template
+code_metrics_table<double>*
+libecc_code_metrics_create_table<double>
+(double (*pdf_fcn_0_bit) (double),
+ double (*pdf_fcn_1_bit) (double),
+ size_t n_samples,
+ double min_sample,
+ double max_sample,
+ int sample_precision);
+
 #if 0
   // for compute_all_outputs