Crate rug [] [src]

Arbitrary-precision numbers

The rug crate provides integers and floating-point numbers with arbitrary precision and correct rounding. Its main features are:

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

This crate depends on the low-level bindings in the gmp-mpfr-sys crate, which provides RUST FFI bindings for:

It can be helpful to refer to the documentation of the GMP, MPFR and MPC libraries.

Examples

extern crate rug;
use rug::{Assign, Integer};

fn main() {
    // Create an integer initialized as zero.
    let mut int = Integer::new();
    assert_eq!(int, 0);
    int.assign(14);
    assert_eq!(int, 14);
    let hex_160 = "ffff0000ffff0000ffff0000ffff0000ffff0000";
    int.assign_str_radix(hex_160, 16).unwrap();
    assert_eq!(int.significant_bits(), 160);
    int = (int >> 128) - 1;
    assert_eq!(int, 0xfffe_ffff_u32);
}

Usage

To use rug in your crate, add extern crate rug; to the crate root and add rug as a dependency in Cargo.toml:

[dependencies]
rug = "0.4.0"

The rug 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 rug crate has three optional features rational, float and complex. Integers are always included. The optional features are enabled by default; to disable them add this to Cargo.toml:

[dependencies.rug]
version = "0.4.0"
default-features = false

To use features selectively, you can add this to Cargo.toml:

[dependencies.rug]
version = "0.4.0"
default-features = false
# Pick which features to use
features = ["rational", "float"]

Note that the the complex feature will enable the float feature, on which it depends.

Reexports

pub use ops::Assign;
pub use ops::AssignRound;
pub use ops::FromRound;

Modules

complex

Multi-precision complex numbers with correct rounding.

float

Multi-precision floating-point numbers with correct rounding.

integer

Aribtrary-precision integers.

ops

Operations on numbers.

rand

Random number generation.

rational

Arbitrary-precision rational numbers.

Structs

Complex

A multi-precision complex number. The precision has to be set during construction.

Float

A multi-precision floating-point number. The precision has to be set during construction.

Integer

An arbitrary-precision integer.

Rational

An arbitrary-precision rational number.