Skip to main content

Crate dashu_float

Crate dashu_float 

Source
Expand description

A big float library supporting arbitrary precision, arbitrary base and arbitrary rounding mode.

The library implements efficient large floating point arithmetic in pure Rust.

The main type is FBig representing the arbitrary precision floating point numbers, the DBig type is an alias supporting decimal floating point numbers.

To construct big floats from literals, please use the dashu-macro crate for your convenience.

§Examples

use core::str::FromStr;
use core::convert::TryFrom;
use dashu_float::DBig;

// due to the limit of rust generics, the default float type
// need to be instantiate explicitly
type FBig = dashu_float::FBig;

let a = FBig::try_from(-12.34_f32).unwrap();
let b = DBig::from_str("6.022e23")?;
let c = DBig::from_parts(271828.into(), -5);
let d: DBig = "-0.0123456789".parse()?;
let e = 2 * b.ln() + DBig::ONE;
let f = &c * d.powi(10.into()) / 7;

assert_eq!(a.precision(), 24); // IEEE 754 single has 24 significant bits
assert_eq!(b.precision(), 4); // 4 decimal digits

assert!(b > c); // comparison is limited in the same base
assert!(a.to_decimal().value() < d);
assert_eq!(c.to_string(), "2.71828");

// use associated functions of the context to get full result
use dashu_base::Approximation::*;
use dashu_float::{Context, round::{mode::HalfAway, Rounding::*}};
let ctxt = Context::<HalfAway>::new(6);
assert_eq!(ctxt.exp(DBig::ONE.repr(), None), Ok(Inexact(c, NoOp)));

§Optional dependencies

  • std (default): enable std for dependencies.

Re-exports§

pub use math::cache::ConstCache;
pub use crate::math::FpResult;

Modules§

math
Advanced mathematical functions
ops
Re-exported relevant operator traits from dashu-base
rand
Random floating-point number generation with the rand crate.
round
Traits and implementations for rounding during operations.

Structs§

CachedFBig
A floating-point number that carries a shared handle to a ConstCache.
Context
The context containing runtime information for the floating point number and its operations.
FBig
An arbitrary precision floating point number with arbitrary base and rounding mode.
Repr
Underlying representation of an arbitrary precision floating number.

Enums§

FpError
Error returned by floating-point operations that cannot produce a usable result.

Type Aliases§

DBig
Multi-precision float number with decimal exponent and HalfAway rounding mode