commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4080 - gnuradio/trunk/gnuradio-core/src/lib/general


From: n4hy
Subject: [Commit-gnuradio] r4080 - gnuradio/trunk/gnuradio-core/src/lib/general
Date: Wed, 13 Dec 2006 22:20:16 -0700 (MST)

Author: n4hy
Date: 2006-12-13 22:20:15 -0700 (Wed, 13 Dec 2006)
New Revision: 4080

Modified:
   gnuradio/trunk/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc
Log:
Two loop gr_costas_loop removing one if statement per sample



Modified: gnuradio/trunk/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc   
2006-12-14 03:31:45 UTC (rev 4079)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc   
2006-12-14 05:20:15 UTC (rev 4080)
@@ -98,33 +98,58 @@
 
   float error;
   gr_complex nco_out;
+  
+  if (write_foptr) {
 
-  for (int i = 0; i < noutput_items; i++){
-    nco_out = gr_expj(-d_phase);
-    optr[i] = iptr[i] * nco_out;
-    
-    error = (*this.*d_phase_detector)(optr[i]);
-    if (error > 1)
-      error = 1;
-    else if (error < -1)
-      error = -1;
-    
-    d_freq = d_freq + d_beta * error;
-    d_phase = d_phase + d_freq + d_alpha * error;
-
-    while(d_phase>M_TWOPI)
-      d_phase -= M_TWOPI;
-    while(d_phase<-M_TWOPI)
-      d_phase += M_TWOPI;
-    
-    if (d_freq > d_max_freq)
-      d_freq = d_max_freq;
-    else if (d_freq < d_min_freq)
-      d_freq = d_min_freq;
-    
-    if (write_foptr){
+    for (int i = 0; i < noutput_items; i++){
+      nco_out = gr_expj(-d_phase);
+      optr[i] = iptr[i] * nco_out;
+      
+      error = (*this.*d_phase_detector)(optr[i]);
+      if (error > 1)
+       error = 1;
+      else if (error < -1)
+       error = -1;
+      
+      d_freq = d_freq + d_beta * error;
+      d_phase = d_phase + d_freq + d_alpha * error;
+      
+      while(d_phase>M_TWOPI)
+       d_phase -= M_TWOPI;
+      while(d_phase<-M_TWOPI)
+       d_phase += M_TWOPI;
+      
+      if (d_freq > d_max_freq)
+       d_freq = d_max_freq;
+      else if (d_freq < d_min_freq)
+       d_freq = d_min_freq;
+      
       foptr[i] = gr_complex(d_freq,0);
-      //foptr[i] = gr_complex(error, 0);
+    } 
+  } else {
+    for (int i = 0; i < noutput_items; i++){
+      nco_out = gr_expj(-d_phase);
+      optr[i] = iptr[i] * nco_out;
+      
+      error = (*this.*d_phase_detector)(optr[i]);
+      if (error > 1)
+       error = 1;
+      else if (error < -1)
+       error = -1;
+      
+      d_freq = d_freq + d_beta * error;
+      d_phase = d_phase + d_freq + d_alpha * error;
+      
+      while(d_phase>M_TWOPI)
+       d_phase -= M_TWOPI;
+      while(d_phase<-M_TWOPI)
+       d_phase += M_TWOPI;
+      
+      if (d_freq > d_max_freq)
+       d_freq = d_max_freq;
+      else if (d_freq < d_min_freq)
+       d_freq = d_min_freq;
+      
     }
   }
   return noutput_items;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]