Crate rgsl [] [src]

A Rust binding for the GSL library (the GNU Scientific Library).

Installation

This binding requires the GSL library library to be installed.

This crate works with Cargo and is on crates.io. Just add the following to your Cargo.toml file:

[dependencies]
GSL = "*"

Add the following line to your source code:

extern crate rgsl;

Documentation

You can access the rgsl documentation locally, just build it:

> cargo doc --open

Then open this file with an internet browser: file:///{rgsl_location}/target/doc/rgsl/index.html

You can also access the latest build of the documentation via the internet here.

License

rust-GSL is a wrapper for GSL, therefore inherits the GPL license.

Here is the list of all modules :

Reexports

pub use types::ComplexF32;
pub use types::ComplexF64;
pub use types::Result;
pub use types::ResultE10;
pub use types::MatrixF64;
pub use types::MatrixF32;
pub use types::MatrixView;
pub use types::MatrixComplexF64;
pub use types::MatrixComplexF32;
pub use types::VectorF64;
pub use types::VectorF32;
pub use types::VectorView;
pub use types::VectorComplexF64;
pub use types::VectorComplexF32;
pub use types::Rng;
pub use types::RngType;
pub use types::Permutation;
pub use types::ChebSeries;
pub use types::Combination;
pub use types::PolyComplex;
pub use types::DiscreteHankel;
pub use types::EigenSymmetricWorkspace;
pub use types::EigenSymmetricVWorkspace;
pub use types::EigenHermitianWorkspace;
pub use types::EigenHermitianVWorkspace;
pub use types::EigenNonSymmWorkspace;
pub use types::EigenNonSymmVWorkspace;
pub use types::EigenGenSymmWorkspace;
pub use types::EigenGenSymmVWorkspace;
pub use types::EigenGenHermWorkspace;
pub use types::EigenGenHermVWorkspace;
pub use types::EigenGenWorkspace;
pub use types::EigenGenVWorkspace;
pub use types::FftComplexWaveTable;
pub use types::FftComplexWorkspace;
pub use types::Histogram;
pub use types::HistogramPdf;
pub use types::Histogram2D;
pub use types::Histogram2DPdf;
pub use types::IntegrationWorkspace;
pub use types::IntegrationQawsTable;
pub use types::IntegrationQawoTable;
pub use types::CquadWorkspace;
pub use types::GLFixedTable;
pub use types::InterpAccel;
pub use types::Interp;
pub use types::InterpType;
pub use types::Spline;
pub use types::Minimizer;
pub use types::MinimizerType;
pub use types::PlainMonteCarlo;
pub use types::MiserMonteCarlo;
pub use types::MiserParams;
pub use types::VegasMonteCarlo;
pub use types::VegasParams;
pub use types::NTuples;
pub use types::MultiSet;
pub use types::ODEiv2System;
pub use types::ODEiv2Step;
pub use types::ODEiv2StepType;
pub use types::ODEiv2Control;
pub use types::ODEiv2Evolve;
pub use types::ODEiv2Driver;
pub use types::QRng;
pub use types::QRngType;
pub use types::LevinUWorkspace;
pub use types::LevinUTruncWorkspace;
pub use types::Wavelet;
pub use types::WaveletType;
pub use types::WaveletWorkspace;
pub use types::MultiFitFdfSolver;
pub use types::MultiFitFunction;
pub use types::MultiFitFdfSolverType;
pub use types::MultiFitFunctionFdf;
pub use types::RootFdfSolver;
pub use types::RootFdfSolverType;
pub use types::RootFSolver;
pub use types::RootFSolverType;
pub use types::SimAnnealing;
pub use types::SimAnnealingParams;
pub use elementary::Elementary;
pub use pow::Pow;
pub use trigonometric::Trigonometric;
pub use types::rng;

Modules

airy
bessel
blas
cblas
clausen

The Clausen function is defined by the following integral,

coulomb
coupling_coefficients

The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients for combined angular momentum vectors. Since the arguments of the standard coupling coefficient functions are integer or half-integer, the arguments of the following functions are, by convention, integers equal to twice the actual spin value.

dawson

The Dawson integral is defined by \exp(-x2) \int_0x dt \exp(t2). A table of Dawson’s integral can be found in Abramowitz & Stegun, Table 7.5.

debye

The Debye functions D_n(x) are defined by the following integral,

dilogarithm
eigen
elementary
elementary_operations
elliptic

Further information about the elliptic integrals can be found in Abramowitz & Stegun, Chapter 17.

error

The error function is described in Abramowitz & Stegun, Chapter 7.

exponential
exponential_integrals
fermi_dirac
fft
fit

Linear Regression

gamma_beta

This following routines compute the gamma and beta functions in their full and incomplete forms, as well as various kinds of factorials.

gegenbauer

The Gegenbauer polynomials are defined in Abramowitz & Stegun, Chapter 22, where they are known as Ultraspherical polynomials.

hypergeometric

Hypergeometric functions are described in Abramowitz & Stegun, Chapters 13 and 15.

integration
interpolation
jacobian_elliptic

The Jacobian Elliptic functions are defined in Abramowitz & Stegun, Chapter 16.

laguerre

The generalized Laguerre polynomials are defined in terms of confluent hypergeometric functions as La_n(x) = ((a+1)_n / n!) 1F1(-n,a+1,x), and are sometimes referred to as the associated Laguerre polynomials. They are related to the plain Laguerre polynomials L_n(x) by L0_n(x) = L_n(x) and Lk_n(x) = (-1)k (dk/dxk) L_(n+k)(x). For more information see Abramowitz & Stegun, Chapter 22.

lambert_w

Lambert’s W functions, W(x), are defined to be solutions of the equation W(x) \exp(W(x)) = x. This function has multiple branches for x < 0; however, it has only two real-valued branches. We define W_0(x) to be the principal branch, where W > -1 for x < 0, and W_{-1}(x) to be the other real branch, where W < -1 for x < 0.

legendre

The Legendre Functions and Legendre Polynomials are described in Abramowitz & Stegun, Chapter 8.

linear_algebra
logarithm

Information on the properties of the Logarithm function can be found in Abramowitz & Stegun, Chapter 4.

minimizer
multifit
numerical_differentiation
physical_constant

Physical Constants

polynomials
pow
power

The following functions are equivalent to the function gsl_pow_int (see 1Small integer powers1) with an error estimate.

psi

The polygamma functions of order n are defined by

randist
roots
sort
statistics
synchrotron
transport

The transport functions J(n,x) are defined by the integral representations J(n,x) := \int_0x dt tn et /(et - 1)2.

trigonometric
types
util
wavelet_transforms
zeta

The Riemann zeta function is defined in Abramowitz & Stegun, Section 23.2.

Macros

ffi_wrap

Structs

IOStream

A wrapper to handle I/O operations between GSL and rust

RootFunction
RootFunctionFdf

Enums

EigenSort
FftDirection

this gives the sign in the formula

GaussKonrodRule

The low-level integration rules in QUADPACK are identified by small integers (1-6). We'll use symbolic constants to refer to them.

IntegrationQawo

Used by workspace for QAWO integrator

Mode
ODEiv

Possible return values for an hadjust() evolution method for ordinary differential equations

Value
VegasMode

Used by VegasMonteCarlo struct

WaveletDirection

Statics

DBL_EPSILON
DBL_MAX
DBL_MIN
LOG_DBL_MAX
NAN
NEGINF
POSINF
ROOT3_DBL_EPSILON
ROOT3_DBL_MAX
ROOT3_DBL_MIN
ROOT4_DBL_EPSILON
ROOT4_DBL_MAX
ROOT4_DBL_MIN
ROOT5_DBL_EPSILON
ROOT5_DBL_MAX
ROOT5_DBL_MIN
ROOT6_DBL_EPSILON
ROOT6_DBL_MAX
ROOT6_DBL_MIN
SF_DOUBLEFACT_NMAX

The maximum n such that gsl_sf_doublefact(n) does not give an overflow.

SF_FACT_NMAX

The maximum n such that gsl_sf_fact(n) does not give an overflow.

SF_GAMMA_XMAX

The maximum x such that gamma(x) is not considered an overflow.

SF_MATHIEU_COEFF
SQRT_DBL_EPSILON
SQRT_DBL_MAX
SQRT_DBL_MIN

Type Definitions

GSLResult

A type for results generated by GSL functions where Err is enums::Value.

comparison_fn
function
integration_function
monte_function
select_function
value_function