Crate rugcom [] [src]

Arbitrary-precision complex numbers

The rugcom crate provides arbitrary-precision complex numbers using GNU MPC, a library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. 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 MPC library.

The crate provides the Complex type, which provides an arbitrary-precision complex number with correct rounding.

Examples

extern crate rugint;
extern crate rugcom;
use rugint::Assign;
use rugcom::Complex;

fn main() {
    // Create complex number with 16 bits of precision.
    let mut com = Complex::new((16, 16));
    // Assign the complex value 1.5 + 3.5i
    com.assign((1.5, 3.5));
    assert!(*com.real() == 1.5);
    assert!(*com.imag() == 3.5);
}

Usage

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

[dependencies]
rugcom = "0.2.2"

The rugcom 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 rugcom 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.rugcom]
version = "0.2.2"
default-features = false

Structs

Complex

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

ParseComplexError

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