Crate rugflo [−] [src]
Arbitrary-precision floating-point numbers
The rugflo
crate provides arbitrary-precision floating-point
numbers using the GNU MPFR Library, a library for
multiple-precision floating-point computations. It is one of a
group of four crates:
rugint
provides arbitrary-precision integers based on GMP.rugrat
provides arbitrary-precision rational number based on GMP.rugflo
provides arbitrary-precision floating-point numbers based on MPFR.rugcom
provides arbitrary-precision complex numbers based on MPC.
This crate is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See the full text of the GNU LGPL and GNU GPL for details.
Basic use
Apart from this documentation, it can be helpful to refer to the documentation of the MPFR library.
The crate provides the Float
type, which provides an
arbitrary-precision floating-point number with correct rounding.
Examples
extern crate rugflo; use rugflo::Float; fn main() { // Create a floating-point number with 53 bits of precision. // (An f64 has 53 bits of precision too.) let flo53 = Float::from((0xff00ff, 53)); assert_eq!(flo53.to_f64(), 0xff00ff as f64); // Create a floating-point number with only 16 bits of precision. let flo16 = Float::from((0xff00ff, 16)); // Now the number is rounded. assert_eq!(flo16.to_f64(), 0xff0100 as f64); }
Usage
To use rugflo
in your crate, add extern crate rugflo;
to the
crate root and add rugflo
as a dependency in Cargo.toml
:
[dependencies]
rugflo = "0.3.0"
The rugflo
crate depends on the low-level bindings in the
gmp-mpfr-sys
crate. This should be transparent on GNU/Linux and
macOS, but may need some work on Windows. See the gmp-mpfr-sys
documentation for some details.
Optional feature
The rugflo
crate has an optional feature random
to enable
random number generation. The random
feature introduces a
dependency on the rand
crate. The feature is enabled by default;
to disable it add this to Cargo.toml
:
[dependencies.rugflo]
version = "0.3.0"
default-features = false
Structs
Float |
A multi-precision floating-point number. The precision has to be set during construction. |
ParseFloatError |
An error which can be returned when parsing a |
SmallFloat |
A small float that does not require any memory allocation. |
Enums
Constant |
The available floating-point constants. |
Round |
The rounding methods for floating-point values. |
Special |
Special floating-point values. |
Traits
AddRound |
Provides addition with a specified rounding method. |
AssignRound |
Assigns to a number from another value, applying the specified rounding method. |
DivRound |
Provides division with a specified rounding method. |
FromRound |
Construct |
MulRound |
Provides multiplication with a specified rounding method. |
PowRound |
Provides the power operation inside |
ShlRound |
Provides the left shift operation with a specified rounding method. |
ShrRound |
Provides the right shift operation with a specified rounding method. |
SubRound |
Provides subtraction with a specified rounding method. |
Functions
exp_max |
Returns the maximum value for the exponent. |
exp_min |
Returns the minimum value for the exponent. |
prec_max |
Returns the maximum value for the precision. |
prec_min |
Returns the minimum value for the precision. |