Crate rgsl

Source
Expand description

§rust-GSL

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

The minimum support Rust version is 1.54.

§Installation

This binding requires the GSL library library (version >= 2) to be installed:

§Linux

# on debian based systems:
sudo apt-get install libgsl0-dev

§macOS

brew install gsl
§Apple silicon

Homebrew installs libraries under /opt/homebrew/include on Apple silicon to maintain backward compatibility with Rosetta 2.

After gsl has been installed in the usual way, use the environment variable:

RUSTFLAGS='-L /opt/homebrew/include'

before cargo run, cargo build, etc., to tell the compiler where gsl is located.

§Windows

Instructions are available there: https://www.gnu.org/software/gsl/extras/native_win_builds.html.

§Usage

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

[dependencies]
GSL = "7.0"

You can see examples in the examples folder.

§Building

To build rgsl, just run cargo build. However, if you want to use a specific version, you’ll need to use the cargo features. For example:

cargo build --features v2_1

If a project depends on this version, don’t forget to add in your Cargo.toml:

[dependencies.GSL]
version = "2"
features = ["v2_1"]

§Documentation

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

> cargo doc --open

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.

Re-exports§

pub use self::elementary::Elementary;
pub use self::pow::Pow;
pub use self::trigonometric::Trigonometric;
pub use self::types::rng;
pub use self::types::*;

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(-x^2) \int_0^x dt \exp(t^2). 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
References and Further Reading
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
Fast Fourier Transforms (FFTs)
filterv2_5
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
Introduction
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 L^a_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 L^0_n(x) = L_n(x) and L^k_n(x) = (-1)^k (d^k/dx^k) 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
Linear Algebra
logarithm
Information on the properties of the Logarithm function can be found in Abramowitz & Stegun, Chapter 4.
minimizer
multifit
multilargev2_1
multilinear
multiroot
Multiroot test algorithms, See rgsl::types::multiroot for solvers.
numerical_differentiation
Numerical Differentiation
physical_constant
Physical Constants
polynomials
Polynomials
pow
power
The following functions are equivalent to the function gsl_pow_int (see Small integer powers) with an error estimate.
psi
The polygamma functions of order n are defined by
randist
Random Number Distributions
roots
sort
Sorting
statistics
Statistics
stats
synchrotron
transport
The transport functions J(n,x) are defined by the integral representations J(n,x) := \int_0^x dt t^n e^t /(e^t - 1)^2.
trigonometric
types
util
wavelet_transforms
Transform Functions
zeta
The Riemann zeta function is defined in Abramowitz & Stegun, Section 23.2.

Structs§

IOStream
A wrapper to handle I/O operations between GSL and rust
View
A struct which binds a type to a lifetime and prevent mutable access.

Enums§

CblasDiag
CblasOrder
CblasSide
CblasTranspose
CblasUplo
EigenSort
FftDirection
This gives the sign in the formula:
FilterEndv2_5
FilterScalev2_5
GaussKronrodRule
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
SfLegendreNorm
Value
VegasMode
Used by VegasMonteCarlo struct
WaveletDirection

Statics§

DBL_EPSILON
DBL_MAX
DBL_MIN
LOG_DBL_MAX
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