Crate rugrat [] [src]

Arbitrary-precision rational numbers

The rugrat crate provides arbitrary-precision rational numbers using the GNU Multiple Precision Arithmetic Library (GMP). 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 GMP library.

The crate provides the Rational type, which holds an arbitrary-precision rational number.

Examples

extern crate rugrat;
use rugrat::Rational;

fn main() {
    // Create a rational number, -22 / 4 = -11 / 2.
    let rat = Rational::from((-22, 4));
    assert!(rat == (-44, 8));
    assert!(rat.to_f32() == -5.5);
    // The numerator and denominator are stored in canonical form.
    assert!(*rat.numer() == -11);
    assert!(*rat.denom() == 2);
}

Usage

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

[dependencies]
rugrat = "0.2.1"

The rugrat 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.

Structs

MutNumerDenom

Used to borrow the numerator and denominator of a Rational number mutably.

ParseRationalError

An error which can be returned when parsing a Rational number.

Rational

An arbitrary-precision rational number.