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
功能。