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!(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!(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.2.2"

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.2.2"
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 Float.

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 Self via a conversion with a specified precision, applying the specified rounding method.

MulRound

Provides multiplication with a specified rounding method.

PowRound

Provides the power operation inside self with a specified rounding method.

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.