Expand description
§OmegaNum.rs
This is a direct port of Naruyoko’s OmegaNum.js to Rust.
Using this library, you are able to store numbers up to 10{N}9e15 in Bower’s operator notation, with no hard limit on N. Note that some functions (for example, the gamma function) are left unimplemented. I may add them in later.
This crate supports #![no-std].
§Features
default: Enablesstdstd: Enables using the standard libraryerror_in_core: Enables implementing the recently stabilized1core::error::Erroron error types whenstdis not enabledlibm: Required withoutstdenabled for mathserde: Enables support forserde::Serializeandserde::Deserializef16: Enables support for converting from the experimentalf16typef128: Enables support for converting from the experimentalf128type
§Usage
use omeganum::{OmegaNum, constant};
use std::borrow::Cow;
// Create constants like this:
const ONE: OmegaNum = constant!(1);
// or like this:
const TEN_E_TWENTY: OmegaNum = OmegaNum::from_parts(
// The base and array are stored separately,
// which makes numerous operations much faster by avoiding
// accessing the heap
1.0, Cow::Borrowed(&[20.0])
);
// Numbers will coerce to OmegaNum when operated with them
assert_eq!(ONE + 1, 2);
// ONE + OmegaNum::from(1) == OmegaNum::from(2)
// Math operations move the value, requiring explicitly defined cloning
let seventeen = OmegaNum::from(17);
let log10_17 = seventeen.log10();
// The below code doesn't work, as log10 consumed seventeen
// println!("log10 {seventeen} is {log10_seventeen}");
// Instead, do this:
let seventeen = OmegaNum::from(17);
let log10_17 = seventeen.clone().log10();
println!("log10 {seventeen} is {log10_17}");
// Constants store their arrays statically:
let c = constant!(7);
assert!(matches!(c.into_parts().1, Cow::Borrowed(_)));§Licensing
This project is under the MIT license, which can be found at the root of the repository under LICENSE.
Additionally, the license of OmegaNum.js, the work this is derived from, can be found at LICENSE-OMEGANUM - it is also licensed under the MIT license.
in Rust version 1.81.0 ↩
Re-exports§
pub use num_traits;
Macros§
Structs§
- Omega
Num - A number that stores values up to
10{N}Mfor some integer N and float M.
Enums§
- From
StrError - An error that can occur when parsing an
OmegaNum.