feat: Added Euclidean Distance (#1418)

* Added Euclidean Distance

* Added documentation to params

* Use @see annotation

---------

Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
This commit is contained in:
Kausthub Kannan
2023-10-05 15:31:48 +05:30
committed by GitHub
parent 96d122f29e
commit 342382932d
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,19 @@
/**
* @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_distance)
* Calculate the Euclidean distance between two vectors.
* @param {number[]} vector1 - The first vector.
* @param {number[]} vector2 - The second vector.
* @returns {number} The Euclidean distance between the two vectors.
*/
const EuclideanDistance = (vector1, vector2) => {
let sumOfSquares = 0
for (let i = 0; i < vector1.length; i++) {
sumOfSquares += Math.pow(vector1[i] - vector2[i], 2)
}
return Math.sqrt(sumOfSquares)
}
export { EuclideanDistance }

View File

@ -0,0 +1,19 @@
import { EuclideanDistance } from '../EuclideanDistance.js'
describe('EuclideanDistance', () => {
it('should calculate the distance correctly for 2D vectors', () => {
expect(EuclideanDistance([0, 0], [2, 2])).toBeCloseTo(2.8284271247461903, 10)
})
it('should calculate the distance correctly for 3D vectors', () => {
expect(EuclideanDistance([0, 0, 0], [2, 2, 2])).toBeCloseTo(3.4641016151377544, 10)
})
it('should calculate the distance correctly for 4D vectors', () => {
expect(EuclideanDistance([1, 2, 3, 4], [5, 6, 7, 8])).toBeCloseTo(8.0, 10)
})
it('should calculate the distance correctly for different 2D vectors', () => {
expect(EuclideanDistance([1, 2], [4, 6])).toBeCloseTo(5.0, 10)
})
})