4个版本
| 0.0.7 | 2023年10月15日 |
|---|---|
| 0.0.6 | 2023年10月14日 |
#1210 in 数学
99 个月下载量
在 7 个crates(4个直接) 中使用
23KB
520 行
umath: ffast-math,适用于rust。
想要让你的数学运算更快?*t&c apply
想要 订购 一个浮点数?
你可以使用 umath 做到所有这些!
use umath::FFloat;
// wrap a non NAN and non INF f32/f64 (we will also *never* make this number nan).
let mut f = unsafe { FFloat::new(4.0f32) };
f *= 3; // multiply by 3
// this check will be removed by the optimizer!
assert!(!f.is_nan());
# use std::collections::BinaryHeap;
// use a ORD type! this is allowed, as FFloat is not allowed to be NAN | INF.
let mut b = BinaryHeap::new();
b.push(unsafe { FFloat::new(2.0) });
b.push(unsafe { FFloat::new(1.0) });
b.push(unsafe { FFloat::new(3.0) });
b.push(f);
assert_eq!(b.pop(), Some(unsafe { FFloat::new(24.0) }));
安全性说明
当你创建第一个 FFLoat 时,你必须承诺你永远不会创建 NAN | INF FFLoat。因此,*f = NAN 是(延迟)未定义行为。
夜间构建
umath 是夜间构建的,因为它使用了核心内建函数,如 fadd_fast(),这需要使用 core_intrinsics 功能。