diff options
-rw-r--r-- | gr-analog/lib/cpm.cc | 23 | ||||
-rw-r--r-- | gr-qtgui/lib/ber_sink_b_impl.cc | 12 |
2 files changed, 16 insertions, 19 deletions
diff --git a/gr-analog/lib/cpm.cc b/gr-analog/lib/cpm.cc index b61ee28816..ccac42cd0c 100644 --- a/gr-analog/lib/cpm.cc +++ b/gr-analog/lib/cpm.cc @@ -24,13 +24,10 @@ #include "config.h" #endif +#include <gnuradio/analog/cpm.h> #include <cmath> #include <cfloat> -#include <gnuradio/analog/cpm.h> -//gives us erf on compilers without it -#include <boost/math/special_functions/erf.hpp> -namespace bm = boost::math; namespace gr { namespace analog { @@ -39,14 +36,14 @@ namespace gr { # define M_TWOPI (2*M_PI) #endif - //! Normalised sinc function, sinc(x)=sin(pi*x)/pi*x + //! Normalised sinc function, sinc(x)=std::sin(pi*x)/pi*x inline double sinc(double x) { if(x == 0) { return 1.0; } - return sin(M_PI * x) / (M_PI * x); + return std::sin(M_PI * x) / (M_PI * x); } @@ -56,7 +53,7 @@ namespace gr { { std::vector<float> taps(samples_per_sym * L, 1.0/L/samples_per_sym); for(unsigned i = 0; i < samples_per_sym * L; i++) { - taps[i] *= 1 - cos(M_TWOPI * i / L / samples_per_sym); + taps[i] *= 1 - std::cos(M_TWOPI * i / L / samples_per_sym); } return taps; @@ -67,7 +64,7 @@ namespace gr { * * L-SRC has a time-continuous phase response function of * - * g(t) = 1/LT * sinc(2t/LT) * cos(beta * 2pi t / LT) / (1 - (4beta / LT * t)^2) + * g(t) = 1/LT * sinc(2t/LT) * std::cos(beta * 2pi t / LT) / (1 - (4beta / LT * t)^2) * * which is the Fourier transform of a cos-rolloff function with rolloff * beta, and looks like a sinc-function, multiplied with a rolloff term. @@ -75,7 +72,7 @@ namespace gr { * zero crossings. * The time-discrete IR is thus * - * g(k) = 1/Ls * sinc(2k/Ls) * cos(beta * pi k / Ls) / (1 - (4beta / Ls * k)^2) + * g(k) = 1/Ls * sinc(2k/Ls) * std::cos(beta * pi k / Ls) / (1 - (4beta / Ls * k)^2) * where k = 0...Ls-1 * and s = samples per symbol. */ @@ -100,7 +97,7 @@ namespace gr { } else { double tmp = 4.0 * beta * k / Ls; - taps_d[i] *= cos(beta * M_TWOPI * k / Ls) / (1 - tmp * tmp); + taps_d[i] *= std::cos(beta * M_TWOPI * k / Ls) / (1 - tmp * tmp); } sum += taps_d[i]; } @@ -128,7 +125,7 @@ namespace gr { const double pi2_24 = 0.411233516712057; // pi^2/24 double f = M_PI * k / sps; - return sinc(k/sps) - pi2_24 * (2 * sin(f) - 2*f*cos(f) - f*f*sin(f)) / (f*f*f); + return sinc(k/sps) - pi2_24 * (2 * std::sin(f) - 2*f*std::cos(f) - f*f*std::sin(f)) / (f*f*f); } //! Taps for TFM CPM (Tamed frequency modulation) @@ -183,8 +180,8 @@ namespace gr { double alpha = 5.336446256636997 * bt; for(unsigned i = 0; i < samples_per_sym * L; i++) { double k = i - Ls/2; // Causal to acausal - taps_d[i] = (bm::erf(alpha * (k / samples_per_sym + 0.5)) - - bm::erf(alpha * (k / samples_per_sym - 0.5))) + taps_d[i] = (std::erf(alpha * (k / samples_per_sym + 0.5)) - + std::erf(alpha * (k / samples_per_sym - 0.5))) * 0.5 / samples_per_sym; taps[i] = (float) taps_d[i]; } diff --git a/gr-qtgui/lib/ber_sink_b_impl.cc b/gr-qtgui/lib/ber_sink_b_impl.cc index 94490de7ca..c0629d5b99 100644 --- a/gr-qtgui/lib/ber_sink_b_impl.cc +++ b/gr-qtgui/lib/ber_sink_b_impl.cc @@ -22,11 +22,11 @@ #include "ber_sink_b_impl.h" -#include <boost/math/special_functions/erf.hpp> #include <gnuradio/io_signature.h> #include <gnuradio/math.h> #include <gnuradio/fft/fft.h> #include <volk/volk.h> +#include <cmath> #ifdef HAVE_CONFIG_H #include <config.h> @@ -91,7 +91,7 @@ namespace gr { for(size_t i = 0; i < esnos.size(); i++) { double e = pow(10.0, esnos[i]/10.0); d_esno_buffers[curves][i] = esnos[i]; - d_ber_buffers[curves][i] = log10(0.5*boost::math::erfc(sqrt(e))); + d_ber_buffers[curves][i] = std::log10(0.5*std::erf(std::sqrt(e))); } @@ -337,7 +337,7 @@ namespace gr { if(d_total_errors[j * d_nconnections + i] >= d_ber_min_errors) { done++; } - else if(log10(((double)d_ber_min_errors)/(d_total[j * d_nconnections + i] * 8.0)) < d_ber_limit) { + else if(std::log10(((double)d_ber_min_errors)/(d_total[j * d_nconnections + i] * 8.0)) < d_ber_limit) { maxed++; } } @@ -355,7 +355,7 @@ namespace gr { for(unsigned int i = 0; i < ninput_items.size(); i += 2) { if((d_total_errors[i >> 1] < d_ber_min_errors) && \ - (log10(((double)d_ber_min_errors)/(d_total[i >> 1] * 8.0)) >= d_ber_limit)) { + (std::log10(((double)d_ber_min_errors)/(d_total[i >> 1] * 8.0)) >= d_ber_limit)) { int items = ninput_items[i] <= ninput_items[i+1] ? ninput_items[i] : ninput_items[i+1]; @@ -371,7 +371,7 @@ namespace gr { d_total[i >> 1] += items; - ber = log10(((double)d_total_errors[i >> 1])/(d_total[i >> 1] * 8.0)); + ber = std::log10(((double)d_total_errors[i >> 1])/(d_total[i >> 1] * 8.0)); d_ber_buffers[i/(d_nconnections * 2)][(i%(d_nconnections * 2)) >> 1] = ber; } @@ -382,7 +382,7 @@ namespace gr { GR_LOG_INFO(d_logger, boost::format(" %1% over %2% --> %3%") \ % d_total_errors[i >> 1] % (d_total[i >> 1] * 8) % ber); } - else if(log10(((double)d_ber_min_errors)/(d_total[i >> 1] * 8.0)) < d_ber_limit) { + else if(std::log10(((double)d_ber_min_errors)/(d_total[i >> 1] * 8.0)) < d_ber_limit) { GR_LOG_INFO(d_logger, "BER Limit Reached"); d_ber_buffers[i/(d_nconnections * 2)][(i%(d_nconnections * 2)) >> 1] = d_ber_limit; d_total_errors[i >> 1] = d_ber_min_errors + 1; |