10 stable releases
new 1.4.0  Sep 15, 2023 

1.3.0  Aug 24, 2023 
1.1.2  Jul 18, 2023 
0.1.1  Apr 22, 2020 
#178 in Algorithms
140 downloads per month
Used in abdclam
86KB
1.5K
SLoC
Distances (v1.4.0)
Fast and generic distance functions for highdimensional data.
Usage
Add this to your project:
> cargo add distances@1.4.0
Use it in your project:
use distances::Number;
use distances::vectors::euclidean;
let a = [1.0_f32, 2.0, 3.0];
let b = [4.0_f32, 5.0, 6.0];
let distance: f32 = euclidean(&a, &b);
assert!((distance  (27.0_f32).sqrt()).abs() < 1e6);
Features
 A
Number
trait to abstract over different numeric types. Distance functions are generic over the return type implementing
Number
.  Distance functions may also be generic over the input type being a collection of
Number
s.
 Distance functions are generic over the return type implementing
 SIMD accelerated implementations for float types.
 Python bindings with
maturin
andpyo3
. 
no_std
support.
Available Distance Functions
 Vectors (highdimensional data):

euclidean

squared_euclidean

manhattan

chebyshev

minkowski
 General Lpnorm.

minkowski_p
 General Lpnorm to the
p
th power.
 General Lpnorm to the

cosine

hamming

canberra

bray_curtis

pearson
1.0  r
wherer
is the Pearson Correlation Coefficient

 Probability distributions:

wasserstein

bhattacharyya

hellinger

 String data, e.g. for genomic sequences:

levenshtein

needleman_wunsch

smith_waterman

hamming
 Normalized versions of the above.

 Sets:

jaccard

hausdorff

 Graphs:

tanamoto

 Time series:
Contributing
Contributions are welcome, encouraged, and appreciated! See CONTRIBUTING.md.
License
Licensed under the MIT license.