#array #math #numeric

slice_math

一个用于数值数组的元素级操作的库

1 个不稳定版本

0.1.0 2024年1月21日

#2433Rust 模式

MIT 许可协议

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 内置函数

无运行时依赖