3个版本
0.1.2 | 2020年7月29日 |
---|---|
0.1.1 | 2020年7月28日 |
0.1.0 | 2020年2月8日 |
#1136 在 硬件支持
42KB
962 行
Argmm
支持u8, i16, u16, i32和f32数组和向量的argmin/max
安装
将以下内容添加到您的Cargo.toml中
argmm = "0.1.2"
入门
您可以使用扩展特性,如果可用,将利用SIMD
use argmm::ArgMinMax;
fn main() {
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));
}
或者,如果您需要为其他类型提供非SIMD支持,可以使用通用函数
use argmm::generic::{simple_argmin, simple_argmax};
fn main() {
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);
}
基准测试
使用2015年早期发布的13英寸MacBook Pro(Retina)处理器,2.7 GHz双核Intel Core i5,数组大小为512。
见 /benches/results
。
警告
不支持NAN值。
许可证
许可协议为以下之一
- Apache许可证2.0版本 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),任选其一。