1 个不稳定版本
0.1.0 | 2024年1月21日 |
---|
#2433 在 Rust 模式
30KB
493 行
slice_math
一个用于数值数组的元素级操作的库。包括泛型函数填充、复制以及在不改变原数组(in-place)和在原数组外(out-of-place)对等长切片应用一元、二元和三元函数。包含常见的数值操作,如切片和标量之间的加法、减法、乘法和除法。还包括包含和排除扫描以及线性空间。数组边界只检查一次,如果给定多个长度不等的函数,则函数将引发 panic。
let src: [u8; 4] = [1, 2, 3, 4];
let mut dst: [u8; 4] = [0, 0, 0, 0];
apply_unary(&src, |i| i * 2, &mut dst);
assert_eq!(&dst, &[2, 4, 6, 8]);
let src: [u8; 4] = [1, 2, 3, 4];
let mut dst: [u8; 4] = [10, 20, 30, 40];
apply_binary_inplace(&mut dst, &src, |i, j| i + j);
assert_eq!(&dst, &[11, 22, 33, 44]);
let mut dst: [i64; 4] = [-100, -10, 0, 10];
add_scalar_inplace(&mut dst, 3);
assert_eq!(&dst, [-97, -7, 3, 13]);
let mut dst: [u32; 4] = [0, 0, 0, 0];
linspace(&mut dst, 20, 24, EndPoint::Excluded);
assert_eq!(&dst, &[20, 21, 22, 23]);
let mut dst: [f32; 4] = [0.0, 0.0, 0.0, 0.0];
linspace(&mut dst, 1.0, 2.5, EndPoint::Included);
assert_eq!(&dst, &[1.0, 1.5, 2.0, 2.5]);
不包括的功能
- 混合乘加(目前不支持)
- 表达式模板
- SIMD 内置函数