You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The preferred package is now argminmax which is actively maintained and far more feature complete. This repo will be purely experimental from now on. A special thanks to jvdd for building on the idea and taking it to the next step 👏.
Argmm
Argmin/max with SIMD support for u8, i16, u16, i32 and f32 arrays and vectors.
Installing
Add the following to your Cargo.toml
argmm = "0.1.2"
Getting started
You can use the extention trait which will take advantage of SIMD if available
use argmm::ArgMinMax;fnmain(){let v = vec![1.,3., -20.,50., -82.,9., -53.,60.,0.];let min_index = v.argmin();let max_index = v.argmax();assert_eq!(min_index,Some(4));assert_eq!(max_index,Some(7));}
Alternatively, the generic function can be used if you require non-SIMD support for other types
use argmm::generic::{simple_argmin, simple_argmax};fnmain(){let v = vec![1u64,3,20,50,82,9,53,60,0];let min_index = simple_argmin(&v);let max_index = simple_argmax(&v);assert_eq!(min_index,8);assert_eq!(max_index,4);}
Benchmarks
Using a MacBook Pro (Retina, 13-inch, Early 2015) Processor 2.7 GHz Dual-Core Intel Core i5
with an array size of 512.