Crate gmp_mpfr_sys [] [src]

Rust low-level bindings for GMP, MPFR and MPC

The gmp-mpfr-sys crate provides Rust low-level bindings for

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.

This crate provides a low-level interface to GMP, MPFR and MPC. If you want a high-level API, consider using the following 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.

If you want to use the low-level bindings, you can refer to the documentation of the C libraries themselves:

Name prefixes

Since modules and enumerated types provide namespacing, most prefixes in the C names are removed. However, when the prefix is not a whole word it is not removed, for example mp_set_memory_functions() becomes gmp::set_memory_functions(), but mpz_init() becomes gmp::mpz_init() not gmp::z_init(), and MPFR_RNDN in enum MPFR_RND_T becomes mpfr::rnd_t::RNDN not mpfr::rnd_t::N. Also, the types mpfr::mpfr_t and mpc::mpc_t are not shortened to mpfr::t or mpc::t.

Types

Unlike the C libraries, the types gmp::mpz_t, gmp::mpq_t, gmp::mpf_t, gmp::rand_state_t, mpfr::mpfr_t and mpc::mpc_t are defined directly as structs, not as single-element arrays.

Undocumented or obsolete functions

The bindings do not cover undocumented or obsolete functions and macros.

Modules

gmp
mpc
mpfr