diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc index d4f06e151..e849ce15c 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc @@ -76,8 +76,10 @@ void load_random_data(void *data, volk_gnsssdr_type_t type, unsigned int n) else ((uint32_t *)data)[i] = (uint32_t) scaled_rand; break; case 2: - if(type.is_signed) ((int16_t *)data)[i] = (int16_t) scaled_rand; - else ((uint16_t *)data)[i] = (uint16_t) scaled_rand; + // 16 bits dot product saturates very fast even with moderate length vectors + // we produce here only 4 bits input range + if(type.is_signed) ((int16_t *)data)[i] = (int16_t)((int16_t) scaled_rand % 16); + else ((uint16_t *)data)[i] = (uint16_t) (int16_t)((int16_t) scaled_rand % 16); break; case 1: if(type.is_signed) ((int8_t *)data)[i] = (int8_t) scaled_rand;