| Crates.io | vecstasy |
| lib.rs | vecstasy |
| version | 0.1.10 |
| created_at | 2025-07-18 13:15:26.779816+00 |
| updated_at | 2025-07-27 10:00:43.838565+00 |
| description | vecstasy is a library for SIMD-enabled floating-point operations on vectors. |
| homepage | |
| repository | https://gitlab.epfl.ch/randl/vecstasy |
| max_upload_size | |
| id | 1758944 |
| size | 26,912 |
Minimal and fast Rust library for high-dimensional vector arithmetic.
VecLike trait defining:
l2_dist_squared (squared Euclidean distance)dot (inner product)normalized (unit‑length copy)Always-on SIMD‑backed implementation for &[f32] slices via Rust’s unstable portable SIMD APIs
HashVec wrapper: stable hashing & equality by IEEE‑754 bit patterns
Add to your Cargo.toml:
[dependencies]
vecstasy = "0.1"
or cargo add vecstasy
VecLike)use vecstasy::VecLike;
let a: &[f32] = &[1.0; 8]; // length should be multiple of SIMD_LANECOUNT, which is 8 by default
let b: &[f32] = &[2.0; 8];
let dist2 = a.l2_dist_squared(&b);
let dot = a.dot(&b);
let normed: Vec<f32> = a.normalized();
HashVec)use vecstasy::HashVec;
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
let data: &[f32] = &[0.0; 8];
let hv = HashVec::from(data);
let mut hasher = DefaultHasher::new();
hv.hash(&mut hasher);
let hash_value = hasher.finish();
portable_simd feature enabledAPI docs are available on docs.rs.
MIT. See LICENSE for details.