3个不稳定版本
使用旧Rust 2015
0.2.0 | 2017年5月4日 |
---|---|
0.1.1 | 2017年5月2日 |
0.1.0 | 2017年5月2日 |
在算法中排名#1607
140KB
4K SLoC
诚实的区间
诚实的区间是一个具有正确舍入的任意精度区间算术库。
它实现了基本的算术运算(加法、减法、乘法和除法),以及如对数和幂等复杂的数学函数在区间和区间集中的操作。返回值的边界总是正确舍入,以确保包含所有可能的结果。
除了Interval
和IntervalSet
结构外,该库还提供了封装GNU MPFR库的Mpfr
结构。该Mpfr
结构是区间的一个理想(目前唯一)的边界类型。
诚实的区间试图成为一个实用主义实现的区间算术,而不是所有可能实现的抽象基础。用户不需要实现任何特性;他们可以通过调用IntervalSet::<Mpfr>::new()
立即创建一个正确舍入的区间。
快速入门
以下是一个创建两个区间集并将它们相加的代码示例。
use honestintervals::IntervalSet;
use honestintervals::mpfr::Mpfr;
use std::str::FromStr;
let x = IntervalSet::<Mpfr>::from_str("{0; <1, 2>}").unwrap();
let y = IntervalSet::<Mpfr>::singleton(Mpfr::from(3.0));
assert_eq!("{3; <4, 5>}", format!("{}", x + y));
这是一个由诚实的区间正确处理的区间除法的复杂情况。
let x = IntervalSet::<Mpfr>::from_str("<1, 2>").unwrap();
let y = IntervalSet::<Mpfr>::from_str("<-1, 1>").unwrap();
assert_eq!("{<-inf, -1>; <1, inf>}", format!("{}", x / y));
有关更多详细信息,请参阅文档。
许可证
诚实的区间在Apache许可证(版本2.0)的条款下分发。
有关详细信息,请参阅LICENSE。