# HG changeset patch # User Chris Cannam # Date 1417634389 0 # Node ID 3b1f2aa8d36b1c1e44c59b33cedf6b49de82adc8 # Parent 495cc8973458f406d1b8fa2ba79b4e750b3725a0 Euclidean distance diff -r 495cc8973458 -r 3b1f2aa8d36b src/may/bits/VectorBits.java --- a/src/may/bits/VectorBits.java Wed Dec 03 19:15:51 2014 +0000 +++ b/src/may/bits/VectorBits.java Wed Dec 03 19:19:49 2014 +0000 @@ -58,5 +58,15 @@ } return out; } + + public static double euclideanDistance(double[] v1, double[] v2) { + checkLengths(v1, v2); + double sum = 0.0; + for (int i = 0; i < v1.length; ++i) { + double d = v1[i] - v2[i]; + sum += d * d; + } + return Math.sqrt(sum); + } } diff -r 495cc8973458 -r 3b1f2aa8d36b src/may/vector.yeti --- a/src/may/vector.yeti Wed Dec 03 19:15:51 2014 +0000 +++ b/src/may/vector.yeti Wed Dec 03 19:19:49 2014 +0000 @@ -292,6 +292,9 @@ v; fi); +euclideanDistance v1 v2 is ~double[] -> ~double[] -> number = + VectorBits#euclideanDistance(v1, v2); + zipped vv is list?<~double[]> -> ~double[] = case vv of [v]: v; @@ -366,6 +369,7 @@ maxindex, minindex, unityNormalised, + euclideanDistance, zipped, unzipped, } as { @@ -411,6 +415,7 @@ maxindex is vector_t -> number, minindex is vector_t -> number, unityNormalised is vector_t -> vector_t, + euclideanDistance is vector_t -> vector_t -> number, zipped is list? -> vector_t, unzipped is number -> vector_t -> array, }