Crate rgsl[−][src]
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
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 = "4.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
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.
Re-exports
pub use types::*;
pub use elementary::Elementary;
pub use pow::Pow;
pub use trigonometric::Trigonometric;
pub use types::rng;
Modules
The Clausen function is defined by the following integral,
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.
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.
The Debye functions D_n(x) are defined by the following integral,
References and Further Reading
Further information about the elliptic integrals can be found in Abramowitz & Stegun, Chapter 17.
The error function is described in Abramowitz & Stegun, Chapter 7.
Fast Fourier Transforms (FFTs)
v2_5
Linear Regression
This following routines compute the gamma and beta functions in their full and incomplete forms, as well as various kinds of factorials.
The Gegenbauer polynomials are defined in Abramowitz & Stegun, Chapter 22, where they are known as Ultraspherical polynomials.
Hypergeometric functions are described in Abramowitz & Stegun, Chapters 13 and 15.
Introduction
The Jacobian Elliptic functions are defined in Abramowitz & Stegun, Chapter 16.
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’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.
The Legendre Functions and Legendre Polynomials are described in Abramowitz & Stegun, Chapter 8.
Linear Algebra
Information on the properties of the Logarithm function can be found in Abramowitz & Stegun, Chapter 4.
v2_1
Multiroot test algorithms, See rgsl::types::multiroot
for solvers.
Numerical Differentiation
Physical Constants
Polynomials
The following functions are equivalent to the function gsl_pow_int (see Small integer powers) with an error estimate.
The polygamma functions of order n are defined by
Random Number Distributions
Sorting
Statistics
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.
Transform Functions
The Riemann zeta function is defined in Abramowitz & Stegun, Section 23.2.
Structs
A wrapper to handle I/O operations between GSL and rust
Enums
This gives the sign in the formula:
v2_5
v2_5
The low-level integration rules in QUADPACK are identified by small integers (1-6). We’ll use symbolic constants to refer to them.
Used by workspace for QAWO integrator
Possible return values for an hadjust() evolution method for ordinary differential equations
Used by VegasMonteCarlo struct
Statics
The maximum n such that gsl_sf_doublefact(n) does not give an overflow.
The maximum n such that gsl_sf_fact(n) does not give an overflow.
The maximum x such that gamma(x) is not considered an overflow.