Passed
Push — moreTests ( 993e7b...a32738 )
by Matias
05:54
created

Euclidean::distance()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 2
eloc 5
c 1
b 1
f 0
nc 2
nop 2
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 2
rs 10
1
<?php
2
3
namespace OCA\FaceRecognition\Helper;
4
5
class Euclidean
6
{
7
    /**
8
     * Euclidean distance metric between two vectors
9
     *
10
     * The euclidean distance between two vectors (vector1, vector2) is defined as
11
     * D = SQRT(SUM((vector1(i) - vector2(i))^2))  (i = 0..k)
12
     *
13
     * Refs:
14
     * - http://mathworld.wolfram.com/EuclideanMetric.html
15
     * - http://en.wikipedia.org/wiki/Euclidean_distance
16
     *
17
     * @param array $vector1 first vector
18
     * @param array $vector2 second vector
19
     *
20
     * @return float The Euclidean distance between vector1 and vector2
21
     *
22
     */
23
24 1
    public static function distance(array $vector1, array $vector2): float
25
    {
26 1
        $n = count($vector1);
27 1
        $sum = 0;
28 1
        for ($i = 0; $i < $n; $i++) {
29 1
            $sum += ($vector1[$i] - $vector2[$i]) * ($vector1[$i] - $vector2[$i]);
30
        }
31 1
        return sqrt($sum);
32
    }
33
}
34