7 releases
0.3.3 | Sep 29, 2024 |
---|---|
0.3.2 | Sep 29, 2024 |
0.2.2 | Sep 4, 2024 |
0.1.0 | Sep 3, 2024 |
#738 in Math
322 downloads per month
24KB
496 lines
intfinity
intfinity
is a Rust crate that provides a generic type for representing and working with both finite and infinite numeric values. It supports operations that automatically handle overflow and underflow, mapping them to positive or negative infinity as appropriate.
Features
- Generic Infinity Representation: Define numeric types that can represent positive and negative infinity alongside finite values.
- Checked Arithmetic: Implementations of
Add
,Sub
,Mul
, andDiv
traits with built-in overflow and underflow detection. - Custom Traits: Traits like
Zero
,Negate
, Unsigned,CheckedAdd
,CheckedSub
,CheckedMul
, andCheckedDiv
allow for extensibility to custom numeric types.
Getting Started
Add intfinity
to your Cargo.toml
:
[dependencies]
intfinity = "0.3.3"
Example Usage
use intfinity::DoubleInfiniteNumber;
fn main() {
let a = DoubleInfiniteNumber::new(42);
let b = DoubleInfiniteNumber::PosInfinity;
let result = a + b;
assert_eq!(result, DoubleInfiniteNumber::PosInfinity);
}
Traits
Intfinity comes with several traits that are essential for working with numeric types:
Zero: Defines the concept of zero for a type.
Negate: Provides a method to negate a value.
CheckedAdd, CheckedSub, CheckedMul, CheckedDiv: Provide arithmetic operations with overflow and underflow checks.
License
This project is under the MIT license.