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