2个不稳定版本
0.2.0 | 2024年3月8日 |
---|---|
0.1.0 | 2023年10月9日 |
#479 in 数学
150KB
3K SLoC
mpmfnum
Rust库,用于模拟数字系统。
支持IEEE-754浮点数、定点数等。受FPCore和Titanic库的启发。
使用mpmfnum
在项目目录中运行以下Cargo命令
cargo add mpmfnum
或将 mpmfnum
添加到您的 Cargo.toml
中,如下所示
[dependencies]
mpmfnum = "0.2.0"
lib.rs
:
数字格式、精度和舍入模式。
mpmfnum
是一个数字库,用于模拟各种数字格式,在多个精度和多种舍入模式下。因此,其名称为“多精度、多格式”(MPMF)。与其他数字库(如BigInt 或 Rug (MPFR))不同,此库强调对各种计算机数字系统的清晰抽象,而不是高性能计算。
此库采用了FPCore标准中找到的设计原则。最重要的是,数值程序只需通过(i)实数数学运算和(ii)舍入来指定。例如,double
或 float
这样的数字格式不是一等公民,就像大多数编程语言中那样。相反,格式是舍入的副作用,应该被淡化或完全消除。此外,数值程序中的所有值都应被视为(扩展的)实数。
这些设计原则体现在此库的两个主要特性中
Real
是一个扩展实数值;RoundingContext
是对Real
值的舍入操作。
为了实现目的,我们将任何 Real
值限制为以下形式:(-1)^s * c * 2^exp
,其中 s
为 0 或 1,c
为非负整数,exp
为整数。实现 RoundingContext
可能支持在 crate::ops
下找到的众多操作(作为特性)。该库提供的操作都是正确舍入的。
mpmfnum
通过实现 RoundingContext
支持各种数字系统。
RealContext
不执行舍入,也就是说操作是精确的。RFloatContext
将Real
值舍入为任意精度的浮点数,指数无界。FloatContext
将Real
值舍入为具有无界指数的固定精度浮点数。IEEE754Context
将Real
值舍入为 IEEE 754 标准描述的浮点数。FixedContext
将Real
值舍入为定点数。PositContext
将Real
值舍入为符合 Posit 标准的 posit 数。
依赖项
~21MB
~486K SLoC