out[oo++] = d_p_0T;
// limit mm_val
-
if (mm_val > 1.0)
mm_val = 1.0;
else if (mm_val < -1.0)
mm_val = -1.0;
-
+
d_omega = d_omega + d_gain_omega * mm_val;
-
if (d_omega > d_max_omega)
d_omega = d_max_omega;
else if (d_omega < d_min_omega)
d_omega = d_min_omega;
-
+
d_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int)floor(d_mu);
d_mu -= floor(d_mu);
#define INCLUDED_GR_CLOCK_RECOVERY_MM_FF_H
#include <gr_block.h>
-#include <gr_math.h>
#include <stdio.h>
class gri_mmse_fir_interpolator;
d_omega = omega;
d_min_omega = omega*(1.0 - d_omega_relative_limit);
d_max_omega = omega*(1.0 + d_omega_relative_limit);
- d_omega_mid = 0.5*(d_min_omega+d_max_omega);
}
protected:
private:
float d_mu; // fractional sample position [0.0, 1.0]
float d_omega; // nominal frequency
- float d_min_omega; // minimum allowed omega
- float d_omega_mid; // average omega
+ float d_min_omega; // minimum allowed omega
float d_max_omega; // maximum allowed omega
float d_gain_omega; // gain for adjusting omega
float d_gain_mu; // gain for adjusting mu
return gr_fast_atan2f(z.imag(), z.real());
}
-static inline float gr_branchless_clip(float x, float clip)
-{
- float x1 = fabs(x+clip);
- float x2 = fabs(x-clip);
- x1 -= x2;
- return 0.5*x1;
-}
-
-
#endif /* _GR_MATH_H_ */