#high-dimensional #vector #euclidean #simd-accelerated #numbers #distance

distances

Fast and generic distance functions for high-dimensional data

20 stable releases

1.8.0 Oct 12, 2024
1.7.1 Jul 12, 2024
1.6.3 Mar 20, 2024
1.6.2 Nov 12, 2023
0.1.1 Apr 22, 2020

#120 in Algorithms

Download history 8/week @ 2024-12-01 109/week @ 2024-12-08 112/week @ 2024-12-15 47/week @ 2024-12-22 19/week @ 2024-12-29 12/week @ 2025-01-05 44/week @ 2025-01-12 18/week @ 2025-01-19 12/week @ 2025-01-26 27/week @ 2025-02-02 9/week @ 2025-02-09 63/week @ 2025-02-16 27/week @ 2025-02-23 494/week @ 2025-03-02 19/week @ 2025-03-09 25/week @ 2025-03-16

587 downloads per month
Used in 4 crates (3 directly)

MIT license

110KB
2K SLoC

Distances (v1.8.0)

Fast and generic distance functions for high-dimensional data.

Usage

Add this to your project:

> cargo add distances@1.8.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() < 1e-6);

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 Numbers.
  • SIMD accelerated implementations for float types.
  • Python bindings with maturin and pyo3.
  • no_std support.

Available Distance Functions

Contributing

Contributions are welcome, encouraged, and appreciated! See CONTRIBUTING.md.

License

Licensed under the MIT license.

Dependencies

~1–1.6MB
~33K SLoC