From 5d0186eee19a79fb5e27b122f7f80c81c9faab73 Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Wed, 13 Jan 2016 15:37:58 +0100 Subject: [PATCH] Renamed saturated arithmetic library and some code cleaning and refresh documentation in new gnsssdr volk modules --- ...d_arithmetic.h => saturation_arithmetic.h} | 8 +++---- .../volk_gnsssdr_16ic_resampler_16ic.h | 1 - .../volk_gnsssdr_16ic_x2_dot_prod_16ic.h | 22 +++++++++---------- .../volk_gnsssdr_16ic_x2_multiply_16ic.h | 2 -- .../volk_gnsssdr_32fc_convert_16ic.h | 1 - .../volk_gnsssdr_32fc_convert_8ic.h | 1 - .../volk_gnsssdr_64f_accumulator_64f.h | 1 - .../volk_gnsssdr_8i_accumulator_s8i.h | 1 - .../volk_gnsssdr_8i_index_max_16u.h | 1 - .../volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h | 1 - .../volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h | 1 - .../volk_gnsssdr_8ic_conjugate_8ic.h | 1 - .../volk_gnsssdr_8ic_magnitude_squared_8i.h | 1 - .../volk_gnsssdr_8ic_s8ic_multiply_8ic.h | 1 - .../volk_gnsssdr_8ic_x2_dot_prod_8ic.h | 2 -- .../volk_gnsssdr_8ic_x2_multiply_8ic.h | 1 - .../volk_gnsssdr_8u_x2_multiply_8u.h | 1 - .../volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h | 20 ++++++++--------- .../volk_gnsssdr_16ic_xn_resampler_16ic_xn.h | 7 +++--- 19 files changed, 28 insertions(+), 46 deletions(-) rename src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/{saturated_arithmetic.h => saturation_arithmetic.h} (75%) diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturated_arithmetic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturation_arithmetic.h similarity index 75% rename from src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturated_arithmetic.h rename to src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturation_arithmetic.h index b9f95d40d..15b36090f 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturated_arithmetic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturation_arithmetic.h @@ -1,9 +1,9 @@ -#ifndef SATURATED_ARITHMETIC_H_ -#define SATURATED_ARITHMETIC_H_ +#ifndef SATURATION_ARITHMETIC_H_ +#define SATURATION_ARITHMETIC_H_ #include //#include -static inline int16_t sat_adds16b(int16_t x, int16_t y) +static inline int16_t sat_adds16i(int16_t x, int16_t y) { // int16_t ux = x; // int16_t uy = y; @@ -28,4 +28,4 @@ static inline int16_t sat_adds16b(int16_t x, int16_t y) return res; } -#endif /*SATURATED_ARITHMETIC_H_*/ +#endif /*SATURATION_ARITHMETIC_H_*/ diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_16ic.h index 4aedd7f6e..31c96cb5b 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_16ic.h @@ -39,7 +39,6 @@ #include #include #include -#include //#pragma STDC FENV_ACCESS ON diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h index aac703aa3..2ce65acd9 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h @@ -37,11 +37,9 @@ #define INCLUDED_volk_gnsssdr_16ic_x2_dot_prod_16ic_u_H #include -#include -#include #include #include -#include +#include #ifdef LV_HAVE_GENERIC @@ -60,9 +58,9 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_generic(lv_16sc_t* result, //r*a.r - i*a.i, i*a.r + r*a.i //result[0]+=in_a[n]*in_b[n]; lv_16sc_t tmp = in_a[n] * in_b[n]; - result[0] = lv_cmake(sat_adds16b(lv_creal(result[0]), lv_creal(tmp)), sat_adds16b(lv_cimag(result[0]), lv_cimag(tmp) )); - //result[0].real(sat_adds16b(result[0].real(),lv_creal(tmp))); - //result[0].imag(sat_adds16b(result[0].imag(),tmp.imag())); + result[0] = lv_cmake(sat_adds16i(lv_creal(result[0]), lv_creal(tmp)), sat_adds16i(lv_cimag(result[0]), lv_cimag(tmp) )); + //result[0].real(sat_adds16i(result[0].real(),lv_creal(tmp))); + //result[0].imag(sat_adds16i(result[0].imag(),tmp.imag())); } } @@ -130,9 +128,9 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_a_sse2(lv_16sc_t* out, con for (int i = 0; i < 4; ++i) { - dotProduct = lv_cmake(sat_adds16b(lv_creal(dotProduct), lv_creal(dotProductVector[i])), sat_adds16b(lv_cimag(dotProduct), lv_cimag(dotProductVector[i]))); - //dotProduct.real(sat_adds16b(lv_creal(dotProduct),lv_creal(dotProductVector[i]))); - //dotProduct.imag(sat_adds16b(lv_cimag(dotProduct),lv_cimag(dotProductVector[i]))); + dotProduct = lv_cmake(sat_adds16i(lv_creal(dotProduct), lv_creal(dotProductVector[i])), sat_adds16i(lv_cimag(dotProduct), lv_cimag(dotProductVector[i]))); + //dotProduct.real(sat_adds16i(lv_creal(dotProduct),lv_creal(dotProductVector[i]))); + //dotProduct.imag(sat_adds16i(lv_cimag(dotProduct),lv_cimag(dotProductVector[i]))); } } @@ -140,9 +138,9 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_a_sse2(lv_16sc_t* out, con { //dotProduct += (*_in_a++) * (*_in_b++); lv_16sc_t tmp = (*_in_a++) * (*_in_b++); - dotProduct = lv_cmake( sat_adds16b(lv_creal(dotProduct), lv_creal(tmp)), sat_adds16b(lv_cimag(dotProduct), lv_cimag(tmp))); - //dotProduct.real(sat_adds16b(lv_creal(dotProduct),lv_creal(tmp))); - //dotProduct.imag(sat_adds16b(lv_cimag(dotProduct),lv_cimag(tmp))); + dotProduct = lv_cmake( sat_adds16i(lv_creal(dotProduct), lv_creal(tmp)), sat_adds16i(lv_cimag(dotProduct), lv_cimag(tmp))); + //dotProduct.real(sat_adds16i(lv_creal(dotProduct),lv_creal(tmp))); + //dotProduct.imag(sat_adds16i(lv_cimag(dotProduct),lv_cimag(tmp))); } *_out = dotProduct; diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_multiply_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_multiply_16ic.h index 070d50722..1336824e0 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_multiply_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_multiply_16ic.h @@ -38,8 +38,6 @@ #include #include -#include -#include #ifdef LV_HAVE_GENERIC /*! diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h index c7c98108b..a7c179818 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h @@ -31,7 +31,6 @@ */ #include -#include #include #include "volk_gnsssdr/volk_gnsssdr_complex.h" diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h index f9ffa8643..308aaa18e 100755 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h @@ -32,7 +32,6 @@ #include -#include #include #include "volk_gnsssdr/volk_gnsssdr_complex.h" diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_64f_accumulator_64f.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_64f_accumulator_64f.h index d328d2e61..4ccb5a769 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_64f_accumulator_64f.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_64f_accumulator_64f.h @@ -37,7 +37,6 @@ #include #include -#include #ifdef LV_HAVE_AVX #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_accumulator_s8i.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_accumulator_s8i.h index 371124c07..35c0dfa48 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_accumulator_s8i.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_accumulator_s8i.h @@ -37,7 +37,6 @@ #include #include -#include #ifdef LV_HAVE_SSE3 #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_index_max_16u.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_index_max_16u.h index b504ace39..e00be5978 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_index_max_16u.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_index_max_16u.h @@ -37,7 +37,6 @@ #include #include -#include #ifdef LV_HAVE_AVX #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h index bf01171f4..e69ea9756 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h @@ -37,7 +37,6 @@ #include #include -#include #ifdef LV_HAVE_SSE4_1 #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h index 66e0b7096..cd11fd422 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h @@ -36,7 +36,6 @@ #define INCLUDED_volk_gnsssdr_8i_x2_add_8i_u_H #include -#include #ifdef LV_HAVE_SSE2 #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h index 1fc4c5142..4f3a4b32c 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h @@ -37,7 +37,6 @@ #define INCLUDED_volk_gnsssdr_8ic_conjugate_8ic_u_H #include -#include #include #ifdef LV_HAVE_AVX diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_magnitude_squared_8i.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_magnitude_squared_8i.h index 857fa6456..5e6c84d11 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_magnitude_squared_8i.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_magnitude_squared_8i.h @@ -38,7 +38,6 @@ #define INCLUDED_volk_gnsssdr_8ic_magnitude_squared_8i_u_H #include -#include #include #ifdef LV_HAVE_SSSE3 diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_s8ic_multiply_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_s8ic_multiply_8ic.h index b5c305527..e1e3e818a 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_s8ic_multiply_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_s8ic_multiply_8ic.h @@ -37,7 +37,6 @@ #define INCLUDED_volk_gnsssdr_8ic_s8ic_multiply_8ic_u_H #include -#include #include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h index abc8df633..04dd93881 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h @@ -38,8 +38,6 @@ #include #include -#include -#include #ifdef LV_HAVE_GENERIC /*! diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_multiply_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_multiply_8ic.h index a1e1e7cc0..5f6113b4f 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_multiply_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_multiply_8ic.h @@ -37,7 +37,6 @@ #define INCLUDED_volk_gnsssdr_8ic_x2_multiply_8ic_u_H #include -#include #include #ifdef LV_HAVE_SSE2 diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8u_x2_multiply_8u.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8u_x2_multiply_8u.h index 7fcd4dd81..905b7b47e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8u_x2_multiply_8u.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8u_x2_multiply_8u.h @@ -36,7 +36,6 @@ #define INCLUDED_volk_gnsssdr_8u_x2_multiply_8u_u_H #include -#include #ifdef LV_HAVE_SSE3 #include diff --git a/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h b/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h index b133bac31..c256bdc7c 100644 --- a/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h +++ b/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h @@ -1,12 +1,12 @@ /*! - * \file volk_gnsssdr_16ic_x2_dot_prod_16ic.h - * \brief Volk protokernel: multiplies two 16 bits vectors and accumulates them + * \file volk_gnsssdr_16ic_xn_dot_prod_16ic_xn.h + * \brief Volk protokernel: multiplies N 16 bits vectors by a common vector and accumulates the results in N 16 bits short complex outputs. * \authors
    *
  • Javier Arribas, 2015. jarribas(at)cttc.es *
* - * Volk protokernel that multiplies two 16 bits vectors (8 bits the real part - * and 8 bits the imaginary part) and accumulates them + * Volk protokernel that multiplies N 16 bits vectors by a common vector and accumulates the results in N 16 bits short complex outputs. + * It is optimized to perform the N tap correlation process in GNSS receivers. * * ------------------------------------------------------------------------- * @@ -38,7 +38,7 @@ #include -#include +#include #ifdef LV_HAVE_GENERIC /*! @@ -58,7 +58,7 @@ static inline void volk_gnsssdr_16ic_xn_dot_prod_16ic_xn_generic(lv_16sc_t* resu //r*a.r - i*a.i, i*a.r + r*a.i //result[n_vec]+=in_common[n]*in_a[n_vec][n]; lv_16sc_t tmp = in_common[n]*in_a[n_vec][n]; - result[n_vec] = lv_cmake(sat_adds16b(lv_creal(result[n_vec]), lv_creal(tmp)), sat_adds16b(lv_cimag(result[n_vec]), lv_cimag(tmp))); + result[n_vec] = lv_cmake(sat_adds16i(lv_creal(result[n_vec]), lv_creal(tmp)), sat_adds16i(lv_cimag(result[n_vec]), lv_cimag(tmp))); } } } @@ -137,8 +137,8 @@ static inline void volk_gnsssdr_16ic_xn_dot_prod_16ic_xn_a_sse2(lv_16sc_t* out, dotProduct = lv_cmake(0,0); for (int i = 0; i<4; ++i) { - dotProduct = lv_cmake(sat_adds16b(lv_creal(dotProduct), lv_creal(dotProductVector[i])), - sat_adds16b(lv_cimag(dotProduct), lv_cimag(dotProductVector[i]))); + dotProduct = lv_cmake(sat_adds16i(lv_creal(dotProduct), lv_creal(dotProductVector[i])), + sat_adds16i(lv_cimag(dotProduct), lv_cimag(dotProductVector[i]))); } _out[n_vec] = dotProduct; } @@ -152,8 +152,8 @@ static inline void volk_gnsssdr_16ic_xn_dot_prod_16ic_xn_a_sse2(lv_16sc_t* out, lv_16sc_t tmp = in_common[n]*in_a[n_vec][n]; - _out[n_vec] = lv_cmake(sat_adds16b(lv_creal(_out[n_vec]), lv_creal(tmp)), - sat_adds16b(lv_cimag(_out[n_vec]), lv_cimag(tmp))); + _out[n_vec] = lv_cmake(sat_adds16i(lv_creal(_out[n_vec]), lv_creal(tmp)), + sat_adds16i(lv_cimag(_out[n_vec]), lv_cimag(tmp))); } } diff --git a/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h b/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h index 69c70f38d..afbcee027 100644 --- a/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h +++ b/src/algorithms/tracking/libs/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h @@ -1,12 +1,13 @@ /*! * \file volk_gnsssdr_16ic_xn_resampler_16ic_xn.h - * \brief Volk protokernel: resample a 16 bits complex vector + * \brief Volk protokernel: Resamples N 16 bits integer short complex vectors using zero hold resample algorithm. * \authors
    *
  • Javier Arribas, 2015. jarribas(at)cttc.es *
* - * Volk protokernel that multiplies two 16 bits vectors (8 bits the real part - * and 8 bits the imaginary part) and accumulates them + * Volk protokernel that esamples N 16 bits integer short complex vectors using zero hold resample algorithm. + * It is optimized to resample a sigle GNSS local code signal replica into N vectors fractional-resampled and fractional-delayed + * (i.e. it creates the Early, Prompt, and Late code replicas) * * ------------------------------------------------------------------------- *