/**
 * Assuming the input is an N-dimension vector, normalizes the vector to magnitude of 1
 * @param {number[]|Float32Array|Float64Array} result
 * @param {number[]|Float32Array|Float64Array} data
 * @param {number} [length] number of dimensions
 */
export function vector_normalize(result, data, length = data.length) {

    let magnitude2 = 0;

    for (let i = 0; i < length; i++) {
        const value = data[i];

        const value2 = value * value;

        magnitude2 += value2;
    }

    const magnitude_inv = 1 / Math.sqrt(magnitude2);

    for (let i = 0; i < length; i++) {
        result[i] = data[i] * magnitude_inv;
    }

}
