#simd #u8 #i32 #f32 #vector #i16 #argmin

argmm

支持u8, u16, i16, i32和f32数组和向量的argmin/max

3个版本

0.1.2 2020年7月29日
0.1.1 2020年7月28日
0.1.0 2020年2月8日

#1136硬件支持

MIT/Apache

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值。

许可证

许可协议为以下之一

无运行时依赖