void normalizeVector()

in cpp/src/array_utils.h [227:250]


void normalizeVector(const float *data, data_t *norm_array, int dimensions) {
  dist_t norm = 0.0;
  for (int i = 0; i < dimensions; i++) {
    if constexpr (scalefactor::num != scalefactor::den) {
      dist_t point = (dist_t)(data[i] * (dist_t)scalefactor::num) /
                     (dist_t)scalefactor::den;
      norm += point * point;
    } else {
      norm += data[i] * data[i];
    }
  }
  norm = 1.0f / (sqrtf(norm) + 1e-30f);
  for (int i = 0; i < dimensions; i++) {
    if constexpr (scalefactor::num != scalefactor::den) {
      dist_t element =
          (data[i] * (dist_t)scalefactor::num) / (dist_t)scalefactor::den;
      dist_t normalizedElement = element * norm;
      norm_array[i] = (normalizedElement * scalefactor::den) / scalefactor::num;
    } else {
      dist_t new_value = data[i] * norm;
      norm_array[i] = new_value;
    }
  }
}