#unsafe #float #performance #ffast-math

nightly umath

rust中的ffast-math

4个版本

0.0.7 2023年10月15日
0.0.6 2023年10月14日

#1210 in 数学

Download history 20/week @ 2024-04-07 63/week @ 2024-04-14 42/week @ 2024-04-21 28/week @ 2024-04-28 30/week @ 2024-05-05 22/week @ 2024-05-12 25/week @ 2024-05-19 36/week @ 2024-05-26 28/week @ 2024-06-02 14/week @ 2024-06-09 27/week @ 2024-06-16 25/week @ 2024-06-23 48/week @ 2024-06-30 8/week @ 2024-07-07 28/week @ 2024-07-14 14/week @ 2024-07-21

99 个月下载量
7 个crates(4个直接) 中使用

MIT 许可证

23KB
520

umath: ffast-math,适用于rust。

MSRV DOCS

想要让你的数学运算更快?*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 功能。

没有运行时依赖