Version 0.12, March 06, 2017
License: GPL V3 or later, see the accompanying COPYING file
Building on Pure’s GSL-compatible matrix support, this module aims to provide a complete wrapper for the GNU Scientific Library which provides a wide range of mathematical routines useful for scientific programming, number crunching and signal processing applications.
This is still work in progress, only a small part of the interface is finished right now. Here is a brief summary of the operations which are implemented:
Installation instructions: Get the latest source from https://bitbucket.org/purelang/pure-lang/downloads/pure-gsl-0.12.tar.gz. Run make to compile the module and make install (as root) to install it in the Pure library directory. This requires GNU make, and of course you need to have Pure and GSL installed. The make install step is only necessary for system-wide installation.
make tries to guess your Pure installation directory and platform-specific setup. If it gets this wrong, you can set some variables manually. In particular, make install prefix=/usr sets the installation prefix, and make PIC=-fPIC or some similar flag might be needed for compilation on 64 bit systems. Please see the Makefile for details.
The current release requires GSL 1.11 or later and Pure 0.45 or later. Older GSL versions might still work, but then some operations may be missing. The latest and greatest GSL version is always available from http://www.gnu.org/software/gsl.
After installation, you can import the entire GSL interface as follows:
using gsl;For convenience, the different parts of the GSL interface are also available as separate modules. E.g., if you only need the matrix operations:
using gsl::matrix;In either case, the global gsl_version variable reports the installed GSL version:
> show gsl_version
let gsl_version = "1.11";(This variable used to be defined by the Pure runtime but has been moved into pure-gsl as of Pure 0.37.)
Most other operations are declared in separate namespaces which are in 1-1 correspondence with the module names. Thus, e.g., the gsl_poly_eval routine is named gsl::poly::eval in Pure and can be found in the gsl::poly module and namespace. The using namespace declaration can be used to facilitate access to the operations in a given namespace, e.g.:
> using gsl::poly;
> using namespace gsl::poly;
> eval {1,2,3} 2;
17See the examples folder in the sources for some examples.
If you’d like to contribute, please mail the authors or contact us at http://groups.google.com/group/pure-lang.
This module provides Pure wrappers for the GSL polynomial routines. For detail about the routines, see Chapter 6 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Polynomials.html.
Polynomials are represented by vectors (one row matrices).
gsl::poly::eval c::matrix ximplements gsl_poly_eval, gsl_poly_complex_eval, and gsl_complex_poly_eval without the len parameter.
GSL does not supply an integer routine for evaluating polynomials with int or bigint coefficients. Therefore, an integer routine has been provided in pure-gsl using the Chinese Remainder Theorem.
gsl::poly::dd_init x::matrix y::matrixgsl_poly_dd_init without the size parameter.
gsl::poly::dd_eval dd::matrix xa::matrix x::doublegsl_poly_dd_eval without the size parameter.
gsl::poly::dd_taylor xp::double dd::matrix xa::matrixgsl_poly_dd_taylor without the size and workspace w arguments.
gsl::poly::solve_quadratic a b cgsl_poly_solve_quadratic. This function returns a list of roots instead of passing them through the parameters x0 and x1.
gsl::poly::complex_solve_quadratic a b cgsl_poly_complex_solve_quadratic. This function returns a list of roots instead of passing trhough the parameters z0 and z1.
gsl::poly::solve_cubic a b cgsl_poly_solve_cubic. This function returns a list of roots instead of passing them through the parameters x0, x1, and x2.
gsl::poly::complex_solve_cubic a b cgsl_poly_complex_colve_cubic. This function returns a list of roots instead of passing them through the parameters z0, z1, and z2.
gsl::poly::complex_solve c::matrixgsl_poly_complex_solve omitting the parametrs n and w. The GSL routines for creating and freeing the workspace are handled automatically.
Usage of each library routine is illustrated below.
> using gsl::poly;
> using namespace gsl::poly;
> eval {1,2,3} 2;
17
> eval {1.0,2.0,3.0} (-2.0);
9.0
> eval {1, 2, 2} (1+:1);
3.0+:6.0
> eval {1+:2, 2+:3, 2+:3} (1+:1);
-6.0+:11.0
> let dd = dd_init {1,2,3} {2,4,6};
> dd;
{2.0,2.0,0.0}
> dd_eval dd {1,2,3} 2;
4.0
> dd_taylor 0.0 dd {1,2,3};
{0.0,2.0,0.0}
> solve_quadratic 2 4 1;
[-1.70710678118655,-0.292893218813452]
> solve_quadratic 1 4 4;
[-2.0,-2.0]
> solve_quadratic 0 2 1;
[-0.5]
> solve_quadratic 1 2 8;
[]
> complex_solve_quadratic 0 2 1;
[-0.5+:0.0]
> complex_solve_quadratic 2 2 3;
[-0.5+:-1.11803398874989,-0.5+:1.11803398874989]
> solve_cubic 3 3 1;
[-1.0,-1.0,-1.0]
> solve_cubic 3 2 1;
[-2.32471795724475]
> complex_solve_cubic 2 2 1;
[-1.0+:0.0,-0.5+:-0.866025403784439,-0.5+:0.866025403784439]
> complex_solve {6,1,-7,-1,1};
[1.0+:0.0,-1.0+:0.0,-2.0+:0.0,3.0+:0.0]This module is loaded via the command using gsl::sf and provides Pure wrappers for the GSL Special Functions. For details, see Chapter 7 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Special-Functions.html.
To load the library, use the Pure command using gsl::sf. Modes for the functions must be one of:
GSL_PREC_DOUBLE
GSL_PREC_SINGLE
GSL_PREC_APPROXResults for some of the functions are returned as a Pure list instead of the gsl_sf_result or gsl_sf_result_e10 structures in C. In these cases, the resulting list is one of the following forms.
[val, err]for thegsl_sf_resultstruct and[val, err, e10]for thegsl_sf_result_e10struct.
gsl::sf::airy_Ai x, gsl::sf::airy_Ai (x, mode::int)gsl_sf_airy_Ai. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_e x, gsl::sf::airy_Ai_e (x, mode::int)gsl_sf_airy_Ai_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_scaled x, gsl::sf::airy_Ai_scaled (x, mode::int)gsl_sf_airy_Ai_scaled. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_scaled_e x, gsl::sf::airy_Ai_scaled_e (x, mode::int)gsl_sf_airy_Ai_scaled_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi x, gsl::sf::airy_Bi (x, mode::int)gsl_sf_airy_Bi. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_e x, gsl::sf::airy_Bi_e (x, mode::int)gsl_sf_airy_Bi_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_scaled x, gsl::sf::airy_Bi_scaled (x, mode::int)gsl_sf_airy_Bi_scaled. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_scaled_e x, gsl::sf::airy_Bi_scaled_e (x, mode::int)gsl_sf_airy_Bi_scaled_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_deriv x, gsl::sf::airy_Ai_deriv (x, mode::int)gsl_sf_airy_Ai_deriv. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_deriv_e x, gsl::sf::airy_Ai_deriv_e (x, mode::int)gsl_sf_airy_Ai_deriv_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_deriv_scaled x, gsl::sf::airy_Ai_deriv_scaled (x, mode::int)gsl_sf_airy_Ai_deriv_scaled. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Ai_deriv_scaled_e x, gsl::sf::airy_Ai_deriv_scaled_e (x, mode::int)gsl_sf_airy_Ai_deriv_scaled_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_deriv x, gsl::sf::airy_Bi_deriv (x, mode::int)gsl_sf_airy_Bi_deriv. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_deriv_e x, gsl::sf::airy_Bi_deriv_e (x, mode::int)gsl_sf_airy_Bi_deriv_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_deriv_scaled x, gsl::sf::airy_Bi_deriv_scaled (x, mode::int)gsl_sf_airy_Bi_deriv_scaled. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_Bi_deriv_scaled_e x, gsl::sf::airy_Bi_deriv_scaled_e (x, mode::int)gsl_sf_airy_Bi_deriv_scaled_e. The first form computes the function with mode = GSL_PREC_DOUBLE.
gsl::sf::airy_zero_Ai sgsl_sf_airy_zero_Ai.
gsl::sf::airy_zero_Ai_e sgsl_sf_airy_zero_Ai_e.
gsl::sf::airy_zero_Bi sgsl_sf_airy_zero_Bi.
gsl::sf::airy_zero_Bi_e sgsl_sf_airy_zero_Bi_e.
gsl::sf::airy_zero_Ai_deriv sgsl_sf_airy_zero_Ai_deriv.
gsl::sf::airy_zero_Ai_deriv_e sgsl_sf_airy_zero_Ai_deriv_e.
gsl::sf::airy_zero_Bi_deriv sgsl_sf_airy_zero_Bi_deriv.
gsl::sf::airy_zero_Bi_deriv_e sgsl_sf_airy_zero_Bi_deriv_e.
The following illustrate the Airy functions.
> using gsl::sf;
> using namespace gsl::sf;
> airy_Ai (-1.2); // defaults to GSL_PREC_DOUBLE
0.52619437480212
> airy_Ai_scaled (-1.2);
0.52619437480212
> airy_Ai (-1.2,GSL_PREC_APPROX);
0.526194374771687
> airy_Ai_scaled (-1.2, GSL_PREC_SINGLE);
0.526194374771687
> airy_Ai_e (-1.2);
[0.52619437480212,1.88330586480371e-15]
> airy_Ai_e (-1.2,GSL_PREC_APPROX);
[0.526194374771687,1.01942940819652e-08]
> airy_Ai_scaled_e (-1.2);
[0.52619437480212,1.88330586480371e-15]
> airy_Ai_scaled_e (-1.2,GSL_PREC_APPROX);
[0.526194374771687,1.01942940819652e-08]
> airy_Bi (-1.2);
-0.015821370184632
> airy_Bi_scaled (-1.2);
-0.015821370184632
> airy_Bi (-1.2,GSL_PREC_APPROX);
-0.0158213701898015
> airy_Bi_scaled (-1.2, GSL_PREC_SINGLE);
-0.0158213701898015
> airy_Bi_e (-1.2);
[-0.015821370184632,1.31448899295896e-16]
> airy_Bi_e (-1.2,GSL_PREC_APPROX);
[-0.0158213701898015,4.10638404843775e-10]
> airy_Bi_scaled_e (-1.2);
[-0.015821370184632,1.31448899295896e-16]
> airy_Bi_scaled_e (-1.2,GSL_PREC_APPROX);
[-0.0158213701898015,4.10638404843775e-10]
> airy_Ai_deriv (-1.2); // defaults to GSL_PREC_DOUBLE
0.107031569272281
> airy_Ai_deriv_scaled (-1.2);
0.107031569272281
> airy_Ai_deriv (-1.2,GSL_PREC_APPROX);
0.107031569264504
> airy_Ai_deriv_scaled (-1.2, GSL_PREC_SINGLE);
0.107031569264504
> airy_Ai_deriv_e (-1.2);
[0.107031569272281,3.02919983680384e-16]
> airy_Ai_deriv_e (-1.2,GSL_PREC_APPROX);
[0.107031569264504,9.25921017197604e-11]
> airy_Ai_deriv_scaled_e (-1.2);
[0.107031569272281,3.02919983680384e-16]
> airy_Ai_deriv_scaled_e (-1.2,GSL_PREC_APPROX);
[0.107031569264504,9.25921017197604e-11]
> airy_Bi_deriv (-1.2);
0.601710157437464
> airy_Bi_deriv_scaled (-1.2);
0.601710157437464
> airy_Bi_deriv (-1.2,GSL_PREC_APPROX);
0.601710157441937
> airy_Bi_deriv_scaled (-1.2, GSL_PREC_SINGLE);
0.601710157441937
> airy_Bi_deriv_e (-1.2);
[0.601710157437464,1.7029557943563e-15]
> airy_Bi_deriv_e (-1.2,GSL_PREC_APPROX);
[0.601710157441937,5.20534347823991e-10]
> airy_Bi_deriv_scaled_e (-1.2);
[0.601710157437464,1.7029557943563e-15]
> airy_Bi_deriv_scaled_e (-1.2,GSL_PREC_APPROX);
[0.601710157441937,5.20534347823991e-10]
> airy_zero_Ai 2;
-4.08794944413097
> airy_zero_Ai_e 3;
[-5.52055982809555,1.22581052599448e-15]
> airy_zero_Bi 2;
-3.27109330283635
> airy_zero_Bi_e 3;
[-4.83073784166202,1.07263927554824e-15]
> airy_zero_Ai_deriv 2;
-3.24819758217984
> airy_zero_Ai_deriv_e 3;
[-4.82009921117874,1.07027702504564e-15]
> airy_zero_Bi_deriv 2;
-4.07315508907183
> airy_zero_Bi_deriv_e 3;
[-5.5123957296636,1.22399773198358e-15]gsl::sf::bessel_J0 xgsl_sf_bessel_J0.
gsl::sf::bessel_J0_e xgsl_sf_besselJ0_e.
gsl::sf::bessel_J1 xgsl_sf_bessel_J1.
gsl::sf::bessel_J1_e xgsl_sf_bessel_J1_e.
gsl::sf::bessel_Jn n xgsl_sf_bessel_Jn.
gsl::sf::bessel_Jn_e n xgsl_sf_bessel_Jn_e.
gsl::sf::bessel_Jn_array nmin::int nmax::int xgsl_sf_bessel_Jn_array.
gsl::sf::bessel_Y0 xgsl_sf_bessel_Y0.
gsl::sf::bessel_Y0_e xgsl_sf_bessel_Y0_e.
gsl::sf::bessel_Y1 xgsl_sf_bessel_Y1.
gsl::sf::bessel_Y1_e xgsl_sf_bessel_Y1_e.
gsl::sf::bessel_Yn xgsl_sf_bessel_Yn.
gsl::sf::bessel_Yn_e xgsl_sf_bessel_Yn_e.
gsl::sf::bessel_Yn_array nmin::int nmax::int xgsl_sf_bessel_Yn_array.
gsl::sf::bessel_I0 xgsl_sf_bessel_I0.
gsl::sf::bessel_I0_e xgsl_sf_bessel_I0_e.
gsl::sf::bessel_I1 xgsl_sf_bessel_I1.
gsl::sf::bessel_I1_e xgsl_sf_bessel_I1_e.
gsl::sf::bessel_In n::int xgsl_sf_bessel_In.
gsl::sf::bessel_In_e n::int xgsl_sf_bessel_In_e
gsl::sf::bessel_In_array nmin::int nmax::int xgsl_sf_bessel_In_array.
gsl::sf::bessel_I0_scaled xgsl_sf_bessel_I0_scaled.
gsl::sf::bessel_I0_scaled_e xgsl_sf_bessel_I0_scaled_e.
gsl::sf::bessel_I1_scaled xgsl_sf_bessel_I1_scaled.
gsl::sf::bessel_I1_scaled_e xgsl_sf_bessel_I1_scaled_e.
gsl::sf::bessel_In_scaled n::int xgsl_sf_bessel_In_scaled.
gsl::sf::bessel_In_scaled_e n::int xgsl_sf_bessel_In_scaled_e.
gsl::sf::bessel_In_scaled_array nmin::int nmax::int xgsl_sf_bessel_In_array.
gsl::sf::bessel_K0 xgsl_sf_bessel_K0.
gsl::sf::bessel_K0_e xgsl_sf_bessel_K0_e.
gsl::sf::bessel_K1 xgsl_sf_bessel_K1.
gsl::sf::bessel_K1_e xgsl_sf_bessel_K1_e.
gsl::sf::bessel_Kn n::int xgsl_sf_bessel_Kn.
gsl::sf::bessel_Kn_e n::int xgsl_sf_bessel_Kn_e
gsl::sf::bessel_Kn_array nmin::int nmax::int xgsl_sf_bessel_Kn_array.
gsl::sf::bessel_K0_scaled xgsl_sf_bessel_K0_scaled.
gsl::sf::bessel_K0_scaled_e xgsl_sf_bessel_K0_scaled_e.
gsl::sf::bessel_K1_scaled xgsl_sf_bessel_K1_scaled.
gsl::sf::bessel_K1_scaled_e xgsl_sf_bessel_K1_scaled_e.
gsl::sf::bessel_Kn_scaled n::int xgsl_sf_bessel_Kn_scaled.
gsl::sf::bessel_Kn_scaled_e n::int xgsl_sf_bessel_Kn_scaled_e.
gsl::sf::bessel_Kn_scaled_array nmin::int nmax::int xgsl_sf_bessel_Kn_array.
gsl::sf::bessel_j0 xgsl_sf_bessel_j0.
gsl::sf::bessel_j0_e xgsl_sf_bessel_j0_e.
gsl::sf::bessel_j1 xgsl_sf_bessel_j1.
gsl::sf::bessel_j1_e xgsl_sf_bessel_j1_e.
gsl::sf::bessel_j2 xgsl_sf_bessel_j2.
gsl::sf::bessel_j2_e xgsl_sf_bessel_j2_e.
gsl::sf::bessel_jl l::int xgsl_sf_bessel_jl.
gsl::sf::bessel_jl_e l::int xgsl_sf_bessel_jl_e.
gsl::sf::bessel_jl_array lmax::int xgsl_sf_bessel_jl_array.
gsl::sf::bessel_jl_steed_array lmax::int xgsl_sf_bessel_jl_steed_array.
gsl::sf::bessel_y0 xgsl_sf_bessel_y0.
gsl::sf::bessel_y0_e xgsl_sf_bessel_y0_e.
gsl::sf::bessel_y1 xgsl_sf_bessel_y1.
gsl::sf::bessel_y1_e xgsl_sf_bessel_y1_e.
gsl::sf::bessel_y2 xgsl_sf_bessel_y2.
gsl::sf::bessel_y2_e xgsl_sf_bessel_y2_e.
gsl::sf::bessel_yl l::int xgsl_sf_bessel_yl.
gsl::sf::bessel_yl_e l::int xgsl_sf_bessel_yl_e.
gsl::sf::bessel_yl_array lmax::int xgsl_sf_bessel_yl_array.
gsl::sf::bessel_i0_scaled xgsl_sf_bessel_i0_scaled.
gsl::sf::bessel_i0_scaled_e xgsl_sf_bessel_i0_scaled_e.
gsl::sf::bessel_i1_scaled xgsl_sf_bessel_i1_scaled.
gsl::sf::bessel_i1_scaled_e xgsl_sf_bessel_i1_scaled_e.
gsl::sf::bessel_i2_scaled xgsl_sf_bessel_i2_scaled.
gsl::sf::bessel_i2_scaled_e xgsl_sf_bessel_i2_scaled_e.
gsl::sf::bessel_il_scaled l::int xgsl_sf_bessel_il_scaled.
gsl::sf::bessel_il_scaled_e l::int xgsl_sf_bessel_il_scaled_e.
gsl::sf::bessel_il_scaled_array lmax::int xgsl_sf_bessel_il_scaled_array.
gsl::sf::bessel_k0_scaled xgsl_sf_bessel_k0_scaled.
gsl::sf::bessel_k0_scaled_e xgsl_sf_bessel_k0_scaled_e.
gsl::sf::bessel_k1_scaled xgsl_sf_bessel_k1_scaled.
gsl::sf::bessel_k1_scaled_e xgsl_sf_bessel_ik_scaled_e.
gsl::sf::bessel_k2_scaled xgsl_sf_bessel_k2_scaled.
gsl::sf::bessel_k2_scaled_e xgsl_sf_bessel_k2_scaled_e.
gsl::sf::bessel_kl_scaled l::int xgsl_sf_bessel_kl_scaled.
gsl::sf::bessel_kl_scaled_e l::int xgsl_sf_bessel_kl_scaled_e.
gsl::sf::bessel_kl_scaled_array lmax::int xgsl_sf_bessel_il_scaled_array.
gsl::sf::bessel_Jnu nu xgsl_sf_bessel_Jnu.
gsl::sf::bessel_Jnu_e nu xgsl_sf_bessel_Jnu_e.
gsl::sf::bessel_sequence_Jnu_e nu v::matrixgsl_sf_bessel_sequence_Jnu_e.
gsl::sf::bessel_Ynu nu xgsl_sf_bessel_Ynu.
gsl::sf::bessel_Ynu_e nu xgsl_sf_bessel_Ynu_e.
gsl::sf::bessel_Inu nu xgsl_sf_bessel_Inu.
gsl::sf::bessel_Inu_e nu xgsl_sf_bessel_Inu_e.
gsl::sf::bessel_Inu_scaled nu xgsl_sf_bessel_Inu_scaled.
gsl::sf::bessel_Inu_scaled_e nu xgsl_sf_bessel_Inu_scaled_e.
gsl::sf::bessel_Knu nu xgsl_sf_bessel_Knu.
gsl::sf::bessel_Knu_e nu xgsl_sf_bessel_Knu.
gsl::sf::bessel_lnKnu nu xgsl_sf_bessel_lnKnu.
gsl::sf::bessel_lnKnu_e nu xgsl_sf_bessel_lnKnu_e.
gsl::sf::bessel_Knu_scaled nu xgsl_sf_bessel_Knu_scaled.
gsl::sf::bessel_Knu_scaled_e nu xgsl_sf_bessel_Knu_scaled_e.
gsl::sf::bessel_zero_J0 s::intgsl_sf_bessel_zero_J0.
gsl::sf::bessel_zero_J0_e s::intgsl_sf_bessel_zero_J0_e.
gsl::sf::bessel_zero_J1 s::intgsl_sf_bessel_zero_J1.
gsl::sf::bessel_zero_J1_e s::intgsl_sf_bessel_zero_J1_e.
gsl::sf::bessel_zero_Jnu nu s::intgsl_sf_bessel_zero_Jnu.
gsl::sf::bessel_zero_Jnu_e nu s::intgsl_sf_bessel_zero_Jnu.
The following illustrate the Bessel functions.
> using gsl::sf;
> using namespace gsl::sf;
> bessel_J0 (-1.2);
0.671132744264363
> bessel_J0_e 0.75;
[0.864242275166649,7.07329111491049e-16]
> bessel_J1 1.2;
0.498289057567216
> bessel_J1_e (-0.2);
[-0.099500832639236,5.00768737808415e-17]
> bessel_Jn 0 (-1.2);
0.671132744264363
> bessel_Jn_e 2 0.75;
[0.0670739972996506,5.48959386474892e-17]
> bessel_Jn_array 0 4 0.5;
[0.938469807240813,0.242268457674874,0.0306040234586826,
0.00256372999458724,0.000160736476364288]
> bessel_Y0 0.25;
-0.931573024930059
> bessel_Y0_e 0.25;
[-0.931573024930059,6.4279898430593e-16]
> bessel_Y1 0.125;
-5.19993611253477
> bessel_Y1_e 4.325;
[0.343041276811844,2.74577716760089e-16]
> bessel_Yn 3 4.325;
-0.0684784962694202
> bessel_Yn_e 3 4.325;
[-0.0684784962694202,3.37764590906247e-16]
> bessel_Yn_array 2 4 1.35;
[-1.07379345815726,-2.66813016175689,-10.7845628163178]
> bessel_I0 1.35;
1.51022709775726
> bessel_I0_e 1.35;
[1.51022709775726,2.37852166449918e-15]
> bessel_I1 0.35;
0.177693400031422
> bessel_I1_e 0.35;
[0.177693400031422,1.55520651386126e-16]
> bessel_In 2 3.0;
2.24521244092995
> bessel_In_e 2 3.0;
2.24521244092995,5.98244771302867e-15]
> bessel_In_array 3 5 (-0.1);
[-2.08463574223272e-05,2.60546902129966e-07,-2.6052519298937e-09]
> bessel_I0_scaled 1.05;
0.453242541279856
> bessel_I0_scaled_e 1.05;
[0.453242541279856,4.10118141697477e-16]
> bessel_I1_scaled 1.05;
0.210226017612868
> bessel_I1_scaled_e 1.05;
[0.210226017612868,2.12903131803686e-16]
> bessel_In_scaled 3 1.05;
0.00903732602788281
> bessel_In_scaled_e 3 1.05;
[0.00903732602788281,2.00668948743994e-17]
> bessel_In_scaled_array 3 5 1.05;
[0.00903732602788281,0.0011701685245855,0.000121756316755217]
> bessel_K0 2.3;
0.0791399330020936
> bessel_K0_e 2.3;
[0.0791399330020936,1.15144454318261e-16]
> bessel_K1 2.3;
0.0949824438453627
> bessel_K1_e 2.3;
[0.0949824438453627,9.85583638959967e-17]
> bessel_Kn 2 3.4;
0.0366633035851529
> bessel_Kn_e 2 3.4;
[0.0366633035851529,2.01761856558251e-16]
> bessel_Kn_array 1 3 2.5;
[0.0738908163477471,0.121460206278564,0.268227146393449]
> bessel_K0_scaled 1.5;
0.367433609054158
> bessel_K0_scaled_e 1.5;
[0.958210053294896,1.25816573186951e-14]
> bessel_K1_scaled 1.5;
1.24316587355255
> bessel_K1_scaled_e 1.5;
[1.24316587355255,2.32370553362606e-15]
> bessel_Kn_scaled 4 1.5;
35.4899165934682
> bessel_Kn_scaled_e 4 1.5;
[35.4899165934682,3.89252285021454e-14]
> bessel_Kn_scaled_array 4 6 1.5;
[35.4899165934682,197.498093175689,1352.14387109806]
> bessel_j0 0.01;
0.999983333416666
> bessel_j0_e 0.01;
[0.999983333416666,4.44081808400239e-16]
> bessel_j1 0.2;
0.0664003806703222
> bessel_j1_e 0.2;
[0.0664003806703222,2.94876925856268e-17]
> bessel_j2 0.3;
0.00596152486862022
> bessel_j2_e 0.3;
[0.00596152486862022,2.64744886840705e-18]
> bessel_jl 4 0.3;
8.53642426502516e-06
> bessel_jl_e 4 0.3;
[8.53642426502516e-06,1.02355215483598e-19]
> bessel_jl_array 2 1.2;
[0.776699238306022,0.34528456985779,0.0865121863384538]
> bessel_jl_steed_array 2 1.2;
[0.776699238306022,0.34528456985779,0.0865121863384538]
> bessel_y0 1;
-0.54030230586814
> bessel_y0_e 3;
[0.329997498866815,2.93096657048522e-16]
> bessel_y1 3;
0.062959163602316
> bessel_y1_e 3.0;
[0.062959163602316,1.04609100698801e-16]
> bessel_yl 3 5;
-0.0154429099129942
> bessel_yl_e 3 5;
[-0.0154429099129942,2.87258769784673e-17]
> bessel_i0_scaled 3;
0.166253541303889
> bessel_i0_scaled_e 3;
[0.166253541303889,7.38314037924188e-17]
> bessel_i1_scaled 3;
0.111661944928148
> bessel_i1_scaled_e 3;
[0.111661944928148,4.95878648934625e-17]
> bessel_i2_scaled 3;
0.0545915963757409
> bessel_i2_scaled_e 3;
[0.0545915963757409,2.42435388989563e-17]
> bessel_il_scaled 3 1;
0.0037027398773348
> bessel_il_scaled_e 3 1;
[0.0037027398773348,8.46838615599053e-17]
> bessel_il_scaled_array 3 1;
[0.432332358381693,0.135335283236613,0.0263265086718556,0.0037027398773348]
> bessel_k0_scaled 3;
0.523598775598299
> bessel_k0_scaled_e 3;
[0.523598775598299,2.32524566533909e-16]
> bessel_k1_scaled 4;
0.490873852123405
> bessel_k1_scaled_e 4;
[0.490873852123405,2.17991781125539e-16]
> bessel_k2_scaled 4;
0.760854470791278
> bessel_k2_scaled_e 4;
[0.760854470791278,3.37887260744586e-16]
> bessel_kl_scaled 2 4;
0.760854470791278
> bessel_kl_scaled_e 2 4;
[0.760854470791278,3.37887260744586e-16]
> bessel_kl_scaled_array 2 4;
[0.392699081698724,0.490873852123405,0.760854470791278]
> bessel_Jnu 2 2.3;
0.413914591732062
> bessel_Jnu_e 2 2.3;
[0.413914591732062,6.43352513956959e-16]
> bessel_sequence_Jnu_e 2 {.1,.2,.3};
[0.00124895865879992,0.00498335415278356,0.011165861949064]
> bessel_Ynu 1 0.5;
-1.47147239267024
> bessel_Ynu_e 1 0.5;
[-1.47147239267024,8.49504515830242e-15]
> bessel_Inu 1.2 3.4;
5.25626563437082
> bessel_Inu_e 1.2 3.4;
[5.25626563437082,1.00839636820646e-13]
> bessel_Inu_scaled 1.2 3.4;
0.175418771999042
> bessel_Inu_scaled_e 1.2 3.4;
[0.175418771999042,3.15501414592188e-15]
> bessel_Knu 3 3;
0.122170375757184
> bessel_Knu_e 3 3;
[0.122170375757184,4.34036365096743e-16]
> bessel_lnKnu 3 3;
-2.10233868587978
> bessel_lnKnu_e 3 3;
[-2.10233868587978,4.24157124665032e-15]
> bessel_Knu_scaled 3 3;
2.45385759319062
> bessel_Knu_scaled_e 3 3;
[2.45385759319062,7.6281217575122e-15]
> bessel_zero_J0 3;
8.65372791291102
> bessel_zero_J0_e 3;
[8.65372791291102,2.59611837387331e-14]
> bessel_zero_J1 3;
10.1734681350627
> bessel_zero_J1_e 3;
[10.1734681350627,2.03469362701254e-13]
> bessel_zero_Jnu 1.2 3;
10.46769
> bessel_zero_Jnu_e 1.2 3;
[10.4676986203553,2.09353972407105e-14]86203553gsl::sf::clausen xgsl_sf_clausen.
gsl::sf::clausen_e xgsl_sf_clausen_e.
The following illustrate the Clausen functions.
> using gsl::sf;
> using namespace gsl::sf;
> clausen 4.5;
-0.831839220823219
> clausen_e 4.5;
[-0.831839220823219,8.60688668835964e-16]The results of the Coulomb wave functions are returned as a list whose elements are ordered corresponding to the argument order of the corresponding C functions in GSL library.
gsl::sf::hydrogenicR_1 Z rgsl_sf_hydrogenicR_1.
gsl::sf::hydrogenicR_1_e Z rgsl_sf_hydrogenicR_1_e.
gsl::sf::hydrogenicR n::int l::int Z rgsl_sf_hydrogenicR_1.
gsl::sf::hydrogenicR_e n::int l::int Z rgsl_sf_hydrogenicR_1_e.
gsl::sf::coulomb_wave_FG_e eta x L_F k::intgsl_sf_coulomb_wave_FG_e.
gsl::sf::coulomb_wave_F_array L_min kmax::int eta xgsl_sf_coulomb_wave_F_array.
gsl::sf::coulomb_wave_FG_array L_min kmax::int eta xgsl_sf_coulomb_wave_FG_array.
gsl::sf::coulomb_wave_FGp_array L_min kmax::int eta xgsl_sf_coulomb_wave_FGp_array.
gsl::sf::coulomb_wave_sphF_array L_min kmax::int eta xgsl_sf_coulomb_wave_sphF_array.
gsl::sf::coulomb_CL_e L etagsl_sf_coulomb_wave_CL_e.
gsl::sf::coulomb_CL_array Lmin kmax etagsl_sf_coulomb_wave_CL_array.
The following illustrate the Coulomb functions.
> using gsl::sf;
> using namespace gsl::sf;
> hydrogenicR_1 0.2 4;
0.0803784086420537
> hydrogenicR_1_e 0.2 4;
[0.0803784086420537,2.85561471862841e-17]
> hydrogenicR 3 1 0.25 3.2;
0.00802954301593587
> hydrogenicR_e 3 1 0.25 3.2;
[0.00802954301593587,3.90138748076797e-17]
> coulomb_wave_F_array 1 2 0.5 0.5;
[{0.0387503306520188,0.0038612830533923,0.000274978904710252},0.0]
> coulomb_wave_FG_array 1 2 0.5 0.5;
[{0.0387503306520188,0.0038612830533923,0.000274978904710252},
{4.13731494044202,25.4479852847406,257.269816591168},0.0,0.0]
> coulomb_wave_FGp_array 1 2 0.5 0.5;
[{0.0387503306520188,0.0038612830533923,0.000274978904710252},
{4.13731494044202,25.4479852847406,257.269816591168},0.0,0.0]
> coulomb_wave_sphF_array 1 2 0.5 0.5;
[{0.0775006613040376,0.0077225661067846,0.000549957809420504},0.0]
> coulomb_CL_e (-0.5) 3;
[0.000143036170217949,2.92195771135514e-18]
> coulomb_CL_array (-0.5) 4 1.5;
[0.0159218263353144,0.0251746178646226,0.00890057150292734,
0.00172996014234001,0.000235267570111599]gsl::sf::coupling_3j m::matrixgsl_sf_coupling_3j except the input is a 2x3 (row by column) integer matrix instead of six integer arguments.
gsl::sf::coupling_3j_e m::matrixgsl_sf_coupling_3j_e except the input is a 2x3 (row by column) integer matrix instead of six integer arguments.
gsl::sf::coupling_6j m::matrixgsl_sf_coupling_6j except the input is a 2x3 (row by column) integer matrix instead of six integer arguments.
gsl::sf::coupling_6j_e m::matrixgsl_sf_coupling_6j_e except the input is a 2x3 (row by column) integer matrix instead of six integer arguments.
gsl::sf::coupling_9j m::matrixgsl_sf_coupling_9j except the input is a 3x3 integer matrix instead of six integer arguments.
gsl::sf::coupling_9j_e m::matrixgsl_sf_coupling_9j_e except the input is a 3x3 integer matrix instead of six integer arguments.
The following illustrate the coupling coefficient functions.
> using gsl::sf;
> using namespace gsl::sf;
> coupling_3j {6,4,2;0,0,0};
-0.29277002188456
> coupling_3j_e {6,4,2;0,0,0};
[-0.29277002188456,1.300160076865e-16]
> coupling_6j {1,2,3;2,1,2};
-0.166666666666667
> coupling_6j_e {1,2,3;2,1,2};
[-0.166666666666667,2.22044604925031e-16]
> coupling_9j {1,2,3;2,1,2;1,1,1};
-0.0962250448649376
> coupling_9j_e {1,2,3;2,1,2;1,1,1};
[-0.0962250448649376,4.84948508304183e-16]gsl::sf::dawson xgsl_sf_dawson.
gsl::sf::dawson_e xgsl_sf_dawson_e.
The following illustrate the dawson functions.
> dawson 3;/**-
0.178271030610558
> dawson_e 3;
[0.178271030610558,8.9920386788099e-16]gsl::sf::debye_1 xgsl_sf_debye_1.
gsl::sf::debye_1_e xgsl_sf_debye_1_e.
gsl::sf::debye_2 xgsl_sf_debye_2.
gsl::sf::debye_2_e xgsl_sf_debye_2_e.
gsl::sf::debye_3 xgsl_sf_debye_3.
gsl::sf::debye_3_e xgsl_sf_debye_3_e.
gsl::sf::debye_4 xgsl_sf_debye_4.
gsl::sf::debye_4_e xgsl_sf_debye_4_e.
gsl::sf::debye_5 xgsl_sf_debye_5.
gsl::sf::debye_5_e xgsl_sf_debye_5_e.
gsl::sf::debye_6 xgsl_sf_debye_6.
gsl::sf::debye_6_e xgsl_sf_debye_6_e.
The following illustrate the debye functions.
> debye_1 0.4;
0.904437352623294
> debye_1_e 0.4;
[0.904437352623294,3.84040456356756e-16]
> debye_2 1.4;
0.613281386045505
> debye_2_e 1.4;
[0.613281386045505,5.15090106564116e-16]
> debye_3 2.4;
0.370136882985216
> debye_3_e 2.4;
[0.370136882985216,6.0792125556598e-16]
> debye_4 3.4;
0.205914922541978
> debye_4_e 3.4;
[0.205914922541978,7.42872979584512e-16]
> debye_5 4.4;
0.107477287722471
> debye_5_e 4.4;
[0.107477287722471,2.38647518907499e-17]
> debye_6 5.4;
0.0533132925698824
> debye_6_e 5.4;
[0.0533132925698824,1.18379289859322e-17]gsl::sf::dilog xgsl_sf_dilog.
gsl::sf::dilog (r<:theta)gsl_sf_complex_dilog_e except that results are returned as the complex value re+:im and the error values are not returned.
gsl::sf::dilog_e xgsl_sf_dilog_e.
gsl::sf::dilog_e (r<:theta)gsl_sf_complex_dilog_e except the results are returned as the list [re+:im, re_error, im_error].
The following illustrate the dilog functions.
> dilog 1.0;
1.64493406684823
> dilog (1<:2);
-0.496658586741567+:0.727146050863279
> dilog_e (1%3);
[0.366213229977064,8.22687466397711e-15]
> dilog_e (1<:3);
[-0.817454913536463+:0.0980262093913011,3.8224192909699e-15,
1.47247478976757e-15]gsl::sf::multiply_e x ygsl_sf_multiply_e.
gsl::sf::multiply_err_e x dx y dygsl_sf_multiply_err_e.
The following illustrate the multiply functions.
> multiply_e 10.0 11.0;
[110.0,4.88498130835069e-14]
> multiply_err_e 10.0 0.04 11.0 0.002;
[110.0,0.460000000000049]This module is loaded via the command using gsl::matrix and provides wrappers for many of the GSL matrix, BLAS, and linear algebra routines found in Chapters 8, 12, and 13, respectively of the GSL Reference Manual:
It also contains some general utility functions for creating various types of matrices.
The utility functions zeros and ones create matrices with all elements zero or one, respectively, and eye creates identity matrices. These functions can be invoked either with a pair (n,m) denoting the desired number of rows or columns, or an integer n in which case a square n x n matrix is created. The result is always a double matrix. Analogous functions izeros, czeros, etc. are provided to create integer and complex matrices, respectively.
gsl::matrix::zeros (n :: int, m :: int)gsl::matrix::zeros n :: intgsl::matrix::izeros (n :: int, m :: int)gsl::matrix::izeros n :: intgsl::matrix::czeros (n :: int, m :: int)gsl::matrix::czeros n :: intgsl::matrix::ones (n :: int, m :: int)gsl::matrix::ones n :: intgsl::matrix::iones (n :: int, m :: int)gsl::matrix::iones n :: intgsl::matrix::cones (n :: int, m :: int)gsl::matrix::cones n :: intgsl::matrix::eye (n :: int, m :: int)gsl::matrix::eye n :: intgsl::matrix::ieye (n :: int, m :: int)gsl::matrix::ieye n :: intgsl::matrix::ceye (n :: int, m :: int)gsl::matrix::ceye n :: intThe following operations are defined for constant a and matrices x and y. Some operators are not defined in the GSL library but are provided here for convenience.
a + x, x + aa + x!(i,j).
x + yx to matrix y.
- x- x!(i,j). Note that neg x is equivalent to - x.
a - xa - x!(i,j).
x - ax!(i,j) - a.
x - yy from matrix x.
a * x, x * aa * x!(i,j).
x .* yx to matrix y.
x * yx to matrix y.
a / xa / x!(i,j). Note that matrix x must not have any zero entries.
x / ax!(i,j) / a. Note that a must be nonzero.
x ./ yx / yx \ ya div xa div x!(i,j). Note that a must be an integer and matrix x must be an integer matrix with nonzero entries.
x div ax!(i,j) div a. Note that a must be a nonzero integer and matrix x must have integer entries.
x div yx by integer matrix y.
a mod xa mod x!(i,j). Note that a must be an integer and matrix x must be an integer matrix with nonzero entries.
x mod aa mod x!(i,j). Note that a must be an integer and matrix x must be an integer matrix with nonzero entries.
x mod yx mod integer matrix y.
not xnot x!(i,j). Note that x must be a matrix with integer entries and not is the bitwise negation operation.
a ^ xa ^ x!(i,j). Note that 0^0 is defined as 1.
x ^ ax!(i,j) ^ a. Note that 0^0 is defined as 1.
x .^ yx!(i,j) ^ y!(i,j).
x ^ yx!(i,j) ^ y!(i,j).
x << ax!(i,j) << a. Note that a must be an integer and matrix x must have integer entries.
x << yx!(i,j) << y!(i,j). Note that x and y must have integer entries.
x >> ax!(i,j) >> a. Note that a must be an integer and matrix x must have integer entries.
x >> yx!(i,j) >> y!(i,j). Note that x and y must have integer entries.
x and a, a and xa and x!(i,j). Note that a must be an integer, matrix x must have integer entries, and and is a bitwise operator.
x and yx!(i,j) and y!(i,j). Note that x and y must be matrices with integer entries.
x or a, a or xa or x!(i,j). Note that a must be an integer, matrix x must have integer entries, and or is a bitwise operator.
x or yx!(i,j) or y!(i,j). Note that x and y must be matrices with integer entries.
The pow function computes powers of matrices by repeated matrix multiplication.
pow x :: matrix k :: int, pow x :: matrix k :: bigintx to the k th power. Note x must be a square matrix and k a nonnegative integer.
For a given n x m matrix x, these functions yield a singular-value decomposition u, s, v of the matrix such that x == u*s*transpose v, where u and v are orthogonal matrices of dimensions n x m and n x n, respectively, and s is a n x n diagonal matrix which has the singular values in its diagonal, in descending order. Note that GSL implements this only for double matrices right now. Also, GSL only handles the case of square or overdetermined systems, but we work around that in our wrapper functions by just adding a suitable number of zero rows in the underdetermined case.
gsl::matrix::svd xx.
gsl::matrix::svd_mod xn > m but needs O(m^2) extra memory as internal workspace.
gsl::matrix::svd_jacobi xgsl::matrix::svd_solve (u, s, v) bAx=b, using the SVD of A. svd_solve takes the result (u,s,v) of a svd call, and a column vector b of the appropriate dimension. The result is another column vector solving the system (possibly in the least-squares sense).
gsl::matrix::pinv xThis module is loaded via the command using gsl::fit and provides Pure wrappers for the GSL least-squares fitting routines found in Chapter 36 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Least_002dSquares-Fitting.html.
gsl::fit::linear x::matrix y::matrixgsl_fit_linear without the xstride, ystride, and n parameters. Results are returned as a list [c0, c1, cov00, cov01, cov11, sumsq].
gsl::fit::wlinear x::matrix w::matrix y::matrixgsl_fit_wlinear without the xstride, wstride, ystride, and n parameters. Results are given as a list [c0, c1, cov00, cov01, cov11, chisq].
gsl::fit::linear_est x c0::double c1::double cov00::double cov01::double cov11::doublegsl_fit_linear_est. Results are returned as a list [y, y_err].
gsl::fit::mul x::matrix y::matrixgsl_fit_mul omitting the parameters xstride, ystride, and n. Results are returned as a list [c1, cov11, sumsq].
gsl::fit::wmul x::matrix w::matrix y::matrixgsl_fit_wmul omitting the parametrs xstride, ystride, and n. Results are returned as a list [c1, cov11, sumsq].
gsl::fit::mul_est x c1::double cov11::doublegsl_fit_mul_est. Results are returned as a list [y, y_err].
Usage of each implemented library routine is illustrated below.
> using gsl::fit;
> using namespace gsl::fit;The following code determines the equation for the least-squares line through the points (1,0.01), (2,1.11), (3,1.9), (4,2.85), and (5,4.01).
> Y x = '(a + b * x)
> when
> a:b:_ = linear {1,2,3,4,5} {0.01,1.11,1.9,2.85,4.01}
> end;
> Y x;
-0.946+0.974*x
> eval $ Y 2;
1.002The following code illustrates estimating y-values without constructing an equation for the least-squares line determined by the points {x1,x2,x3,...,xn}, {y1,y2,y3,...,yn}. Here we estimate the y-value at x = 1, x = 2, and x = 3. Compare the output above at x = 2 to the output at x = 2 below.
> let c0:c1:cov00:cov01:cov11:_ = linear {1,2,3,4,5}
> {0.01,1.11,1.9,2.85,4.01};
> linear_est 1 c0 c1 cov00 cov01 cov11;
[0.028,0.0838570211729465]
> linear_est 2 c0 c1 cov00 cov01 cov11;
[1.002,0.0592958683214944]
> linear_est 3 c0 c1 cov00 cov01 cov11;
[1.976,0.0484148737476408]Next, we determine a least-squares line through the points (1,0.01), (2,1.11), (3,1.9), (4,2.85), and (5,4.01) using weights 0.1, 0.2, 0.3, 0.4, and 0.5.
> W x = '(a + b * x)
> when
> a:b:_ = wlinear (matrix (1..5))
> {0.1, 0.2, 0.3, 0.4, 0.5}
> {0.01, 1.11, 1.9, 2.85, 4.01};
> end;
> W u;
-0.99+0.986*u
> eval $ W 2;
0.982The least-squares slope for Y = c1 * X using the points (1,3), (2,5), and (3,7) is calculated below. Also, the y-values and standard error about x = 1, 2, and 3 are given.
> let c1:cov11:sumsq:_ = mul {1,2,3} {3,5,7};
> mul_est 1 c1 cov11;
[2.42857142857143,0.123717914826348]
> mul_est 2 c1 cov11;
[4.85714285714286,0.247435829652697]
> mul_est 3 c1 cov11;
[7.28571428571428,0.371153744479045]The least-squares slope for Y = c1 * X using the points (1,3), (2,5), and (3,7), and weights 0.4, 0.9, and 0.4 is calculated below. The approximation of y-values and standard error about x = 1, 2, and 3 follows.
> let c1:cov11:sumsq:_ = wmul {1,2,3} {0.4,0.9,0.4} {3,5,7};
> mul_est 1 c1 cov11;
[2.44736842105263,0.362738125055006]
> mul_est 2 c1 cov11;
[4.89473684210526,0.725476250110012]
> mul_est 3 c1 cov11;
[7.34210526315789,1.08821437516502]This module is loaded via the command using gsl::stats and provides Pure wrappers for the GSL Statistics routines found in Chapter 20 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Statistics.html.
gsl::stats::mean data::matrixgsl_stats_mean without stride and n arguments.
gsl::stats::variance data::matrixgsl_stats_variance without stride and n arguments.
gsl::stats::variance data::matrix meangsl_stats_variance_m without stride and n arguments.
gsl::stats::sd data::matrixgsl_stats_sd without stride and n arguments.
gsl::stats::sd_m data::matrix meangsl_stats_sd_m without stride and n arguments.
gsl::stats::tss data::matrixgsl_stats_tss without stride and n arguments.
gsl::stats::tss_m data::matrix meangsl_stats_tss_m without stride and n arguments.
gsl::stats::variance_with_fixed_mean data::matrix meangsl_stats_variance_with_fixed_mean without stride and n arguments.
gsl::stats::sd_with_fixed_mean data::matrix meangsl_stats_sd_with_fixed_mean without stride and n arguments.
gsl::stats::absdev data::matrixgsl_stats_absdev without stride and n arguments.
gsl::stats::absdev_m data::matrix meangsl_stats_absdev_m without stride and n arguments.
gsl::stats::skew data::matrix meangsl_stats_skew without stride and n arguments.
gsl::stats::skew_m_sd data::matrix mean sdgsl_stats_skew_m_sd without stride and n arguments.
gsl::stats::kurtosis data::matrixgsl_stats_kurtosis without stride and n arguments.
gsl::stats::kurtosis_m_sd data::matrix mean sdgsl_stats_kurtosis_m_sd without stride and n arguments.
gsl::stats::lag1_autocorrelation data::matrixgsl_stats_lag1_autocorrelation without stride and n arguments.
gsl::stats::lag1_autocorrelation_m data::matrix meangsl_stats_lag1_autocorrelation_m without stride and n arguments.
gsl::stats::covariance d1::matrix d2::matrixgsl_stats_covariance without stride1, stride2, and n arguments.
gsl::stats::covariance_m d1::matrix d2::matrix mean1 mean2gsl_stats_covariance_m without stride1, stride2, and n arguments.
gsl::stats::correlation d1::matrix d2::matrixgsl_stats_correlation without stride1, stride2, and n arguments.
gsl::stats::wmean weight::matrix data::matrixgsl_stats_wmean without stride and n arguments.
gsl::stats::wvariance weight::matrix data::matrixgsl_stats_wvariance without stride and n arguments.
gsl::stats::wvariance_m weight::matrix data::matrix meangsl_stats_wvariance_m without stride and n arguments.
gsl::stats::wsd weight::matrix data::matrixgsl_stats_wsd without stride and n arguments.
gsl::stats::wsd_m weight::matrix data::matrix meangsl_stats_wsd_m without stride and n arguments.
gsl::stats::wvariance_with_fixed_mean weight::matrix data::matrix meangsl_stats_wvariance_with_fixed_mean without stride and n arguments.
gsl::stats::wsd_with_fixed_mean weight::matrix data::matrix meangsl_stats_wsd_with_fixed_mean without stride and n arguments.
gsl::stats::wtss weight::matrix data::matrixgsl_stats_wtss without stride and n arguments.
gsl::stats::wtss_m weight::matrix data::matrix meangsl_stats_wtss_m without stride and n arguments.
gsl::stats::wabsdev weight::matrix data::matrixgsl_stats_wabsdev without stride and n arguments.
gsl::stats::wabsdev_m weight::matrix data::matrix meangsl_stats_wabsdev_m without stride and n arguments.
gsl::stats::wskew weight::matrix data::matrixgsl_stats_wskew without stride and n arguments.
gsl::stats::wskew_m_sd weight::matrix data::matrix mean sdgsl_stats_wskew_m_sd without stride and n arguments.
gsl::stats::wkurtosis weight::matrix data::matrixgsl_stats_wkurtosis without stride and n arguments.
gsl::stats::wkurtosis_m_sd weight::matrix data::matrixgsl_stats_wkurtosis_m_sd without stride and n arguments.
gsl::stats::max data::matrixgsl_stats_max without stride and n arguments.
gsl::stats::min data::matrixgsl_stats_min without stride and n arguments.
gsl::stats::minmax data::matrixgsl_stats_minmax without stride and n arguments. Results are returned as a list [min, max].
gsl::stats::min_index data::matrixgsl_stats_min_index without stride and n arguments.
gsl::stats::max_index data::matrixgsl_stats_max_index without stride and n arguments.
gsl::stats::minmax_index data::matrixgsl_stats_minmax_index without stride and n arguments. Results are returned as a list [min_index, max_index].
gsl::stats::median_from_sorted_data data::matrixgsl_stats_median_from_sorted_data without stride and n arguments.
gsl::stats::quantile_from_sorted_data data::matrix f::doublegsl_stats_quantile_from_sorted_data without stride and n arguments.
The following illustrates the use of each function in the stats module.
> using gsl::stats;
> using namespace gsl::stats;
> mean {1,2,3,4,5};
3.0
> variance {1,2,3,4,5};
2.5
> variance_m {1,2,3,4,5} 4;
3.75
> sd {1,2,3,4,5};
1.58113883008419
> sd_m {1,2,3,4,5} 4;
1.93649167310371
> tss {1,2,3,4,5};
10.0
> tss_m {1,2,3,4,5} 4;
15.0
> variance_with_fixed_mean {0.0,1.2,3.4,5.6,6.0} 4.1;
6.314
> sd_with_fixed_mean {0.0,1.2,3.4,5.6,6.0} 4.1;
2.51276739870606
> absdev {2,2,3,4,4};
0.8
> absdev_m {2,2,3,4,4} 4;
1.0
> skew {1,1,1,1,2,2,2,2,2,2,2,2,3,30};
2.94796699504537
> skew_m_sd {1,2,2,3,3,3,3,3,3,3,4,4,5} 3 1;
0.0
> kurtosis {1,2,2,3,3,3,3,3,3,3,4,4,5};
-0.230769230769231
> kurtosis_m_sd {1,2,2,3,3,3,3,3,3,3,4,4,5} 3 1;
-0.230769230769231
> lag1_autocorrelation {1,2,3,4,5};
0.4
> lag1_autocorrelation_m {1,2,3,4,5} 2.5;
0.444444444444444
> covariance {1,2,3,4,5} {3.0,4.5,6.0,7.5,9.0};
3.75
> covariance_m {1,2,3,4,5} {3.0,4.5,6.0,7.5,9.0} 3 6;
3.75
> correlation {1,2,3,4} {2,3,4,5};
1.0
> wmean {0.4,0.2,0.3,0.3,0.3} {2,3,4,5,6};
3.93333333333333
> wvariance {0.4,0.2,0.3,0.3,0.3} {2,3,4,5,6};
2.7752808988764
> wvariance_m {0.4,0.2,0.3,0.3,0.3} {2,3,4,5,6} 3.0;
3.87640449438202
> wsd {0.4,0.2,0.3,0.3,0.3} {2,3,4,5,6};
1.66591743459164
> wsd_m {0.4,0.2,0.3,0.3,0.3} {2,3,4,5,6} 3.0;
1.96885867811329
> wvariance_with_fixed_mean {1,2,3,4} {1,2,3,4} 2.5;
1.25
> wsd_with_fixed_mean {1,2,3,4} {1,2,3,4} 2.5;
1.11803398874989
> wtss {1,1,2,2} {2,3,4,5};
6.83333333333333
> wtss_m {1,1,2,2} {2,3,4,5} 3.1;
10.06
> wabsdev {1,1,2,2} {2,3,4,5};
0.888888888888889
> wabsdev_m {1,1,2,2} {2,3,4,5} 3.1;
1.13333333333333
> wskew {1,1,2,2} {2,3,4,5};
-0.299254338484713
> wskew_m_sd {1,1,2,2} {2,3,4,5} 3.1 1.2;
1.33526234567901
> wkurtosis {1,1,2,2} {2,3,4,5};
-1.96206512878137
> wkurtosis_m_sd {1,1,2,2} {2,3,4,5} 3.1 1.2;
-0.681921939300412
> min {9,4,2,1,9};
1
> max {9.1,4.2,2.6,1.1,9.2};
9.2
> minmax {9.0,4.0,2.0,1.0,9.0};
[1.0,9.0]
> min_index {9.1,4.2,2.6,1.1,9.2};
3
> max_index {9,4,2,1,9};
0
> minmax_index {9,4,2,1,0,9};
[4,0]
> median_from_sorted_data {1.0,2.0,3.0};
2.0
> quantile_from_sorted_data {1.0,2.0,3.0} 0.25;
1.5This module is loaded via the command using gsl::randist and provides Pure wrappers for the GSL random distribution routines found in Chapter 19 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html.
There are two namespaces provided by randist.pure, gsl::ran for probability densitity functions and gsl::cdf for cumulative distribution functions. The two namespaces minimize typing of the prefixes gsl_ran_ and gsl_cdf_ respectively.
gsl::ran::ugaussian_pdf xgsl_ran_ugaussian.
gsl::ran::gaussian_pdf x sigmagsl_ran_gaussian_pdf.
gsl::ran::gaussian_tail_pdf x a sigmagsl_ran_gaussian_tail_pdf.
gsl::ran::ugaussian_tail_pdf x agsl_ran_ugaussian_tail_pdf.
gsl::ran::bivariate_gaussian_pdf x agsl_ran_bivariate_gaussian_pdf.
gsl::ran::exponential_pdf x mugsl_ran_exponential_pdf.
gsl::ran::laplace_pdf x agsl_ran_laplace_pdf.
gsl::ran::exppow_pdf x a bgsl_ran_exppow_pdf.
gsl::ran::cauchy_pdf x agsl_ran_cauchy_pdf.
gsl::ran::rayleigh_pdf x sigmagsl_ran_rayleigh_pdf.
gsl::ran::rayleigh_tail_pdf x a sigmagsl_ran_rayleigh_tail_pdf.
gsl::ran::landau_pdf xgsl_ran_landau_pdf.
gsl::ran::gamma_pdf x a bgsl_ran_gamma_pdf.
gsl::ran::flat_pdf x a bgsl_ran_flat_pdf.
gsl::ran::lognormal_pdf x zeta sigmagsl_ran_lognormal_pdf.
gsl::ran::chisq_pdf x nugsl_ran_chisq_pdf.
gsl::ran::fdist_pdf x nu1 nu2gsl_ran_fdist_pdf.
gsl::ran::tdist_pdf x nugsl_ran_tdist_pdf.
gsl::ran::beta_pdf x a bgsl_ran_beta_pdf.
gsl::ran::logistic_pdf x agsl_ran_logistic_pdf.
gsl::ran::pareto_pdf x a bgsl_ran_pareto_pdf.
gsl::ran::weibull_pdf x a bgsl_ran_weibull_pdf.
gsl::ran::gumbel1_pdf x a bgsl_ran_gumbel1_pdf.
gsl::ran::gumbel2_pdf x a bgsl_ran_gumbel2_pdf.
gsl::ran::dirichlet_pdf alpha::matrix theta::matrixgsl_ran_dirichlet_pdf.
gsl::ran::dirichlet_lnpdf alpha::matrix theta::matrixgsl_ran_dirichlet_lnpdf.
gsl::ran::discrete_preproc p::matrixgsl_ran_discrete_preproc without the K parameter.
gsl::ran::discrete_pdf k::int p::pointergsl_ran_discrete_pdf without the K parameter.
gsl::ran::discrete_free p::pointergsl_ran_discrete_free
gsl::ran::poisson_pdf k::int mugsl_ran_poisson_pdf.
gsl::ran::bernoulli_pdf k::int pgsl_ran_bernoulli_pdf.
gsl::ran::binomial_pdf k::int p n::intgsl_ran_binomial_pdf.
gsl::ran::multinomial_pdf p::matrix n::matrixgsl_ran_multinomial_pdf.
gsl::ran::multinomial_lnpdf p::matrix n::matrixgsl_ran_multinomial_lnpdf.
gsl::ran::negative_binomial_pdf k::int p ngsl_ran_negative_binomial_pdf.
gsl::ran::pascal_pdf k::int p n::intgsl_ran_pascal_pdf.
gsl::ran::geometric_pdf k::int pgsl_ran_geometric_pdf.
gsl::ran::hypergeometric_pdf k::int n1::int n2::int t::intgsl_ran_hypergeometric_pdf.
gsl::ran::logarithmic_pdf k::int pgsl_ran_logarithmic_pdf.
gsl::cdf::ugaussian_P xgsl_cdf_ugaussian_P.
gsl::cdf::ugaussian_Q xgsl_cdf_ugaussian_Q.
gsl::cdf::ugaussian_Pinv pgsl_cdf_ugaussian_Pinv.
gsl::cdf::ugaussian_Qinv qgsl_cdf_ugaussian_Qinv.
gsl::cdf::gaussian_P x sigmagsl_cdf_gaussian_P.
gsl::cdf::gaussian_Q x sigmagsl_cdf_gaussian_Q.
gsl::cdf::gaussian_Pinv p sigmagsl_cdf_gaussian_Pinv.
gsl::cdf::guassian_Qinv q sigmagsl_cdf_gaussian_Qinv.
gsl::cdf::exponential_P x mugsl_cdf_exponential_P.
gsl::cdf::exponential_Q x mugsl_cdf_exponential_Q.
gsl::cdf::exponential_Pinv p mugsl_cdf_exponential_Pinv.
gsl::cdf::exponential_Qinv q mugsl_cdf_exponential_Qinv.
gsl::cdf::laplace_P x agsl_cdf_laplace_P.
gsl::cdf::laplace_Q x agsl_cdf_laplace_Q.
gsl::cdf::laplace_Pinv p agsl_cdf_laplace_Pinv.
gsl::cdf::laplace_Qinv q agsl_cdf_laplace_Qinv.
gsl::cdf::exppow_P x a bgsl_cdf_exppow_P.
gsl::cdf::exppow_Q x a bgsl_cdf_exppow_Q.
gsl::cdf::cauchy_P x agsl_cdf_cauchy_P.
gsl::cdf::cauchy_Q x agsl_cdf_cauchy_Q.
gsl::cdf::cauchy_Pinv p agsl_cdf_cauchy_Pinv.
gsl::cdf::cauchy_Qinv q agsl_cdf_cauchy_Qinv.
gsl::cdf::rayleigh_P x sigmagsl_cdf_rayleigh_P.
gsl::cdf::rayleigh_Q x sigmagsl_cdf_rayleigh_Q.
gsl::cdf::rayleigh_Pinv p sigmagsl_cdf_rayleigh_Pinv.
gsl::cdf::rayleigh_Qinv q sigmagsl_cdf_rayleigh_Qinv.
gsl::cdf::gamma_P x a bgsl_cdf_gamma_P.
gsl::cdf::gamma_Q x a bgsl_cdf_gamMa_Q.
gsl::cdf::gamma_Pinv p a bgsl_cdf_gamma_Pinv.
gsl::cdf::gamma_Qinv q a bgsl_cdf_gamma_Qinv.
gsl::cdf::flat_P x a bgsl_cdf_flat_P.
gsl::cdf::flat_Q x a bgsl_cdf_flat_Q.
gsl::cdf::flat_Pinv p a bgsl_cdf_flat_Pinv.
gsl::cdf::flat_Qinv q a bgsl_cdf_flat_Qinv.
gsl::cdf::lognormal_P x zeta sigmagsl_cdf_lognormal_P.
gsl::cdf::lognormal_Q x zeta sigmagsl_cdf_lognormal_Q.
gsl::cdf::lognormal_Pinv p zeta sigmagsl_cdf_lognormal_Pinv.
gsl::cdf::lognormal_Qinv q zeta sigmagsl_cdf_lognormal_Qinv.
gsl::cdf::chisq_P x nugsl_cdf_chisq_P.
gsl::cdf::chisq_Q x nugsl_cdf_chisq_Q.
gsl::cdf::chisq_Pinv p nugsl_cdf_chisq_Pinv.
gsl::cdf::chisq_Qinv q nugsl_cdf_chisq_Qinv.
gsl::cdf::fdist_P x nu1 nu2gsl_cdf_fdist_P.
gsl::cdf::fdist_Q x nu1 nu2gsl_cdf_fdist_Q.
gsl::cdf::fdist_Pinv p nu1 nu2gsl_cdf_fdist_Pinv.
gsl::cdf::fdist_Qinv q nu1 nu2gsl_cdf_fdist_Qinv.
gsl::cdf::tdist_P x nugsl_cdf_tdist_P.
gsl::cdf::tdist_Q x nugsl_cdf_tdist_Q.
gsl::cdf::tdist_Pinv p nugsl_cdf_tdist_Pinv.
gsl::cdf::tdist_Qinv q nugsl_cdf_tdist_Qinv.
gsl::cdf::beta_P x a bgsl_cdf_beta_P.
gsl::cdf::beta_Q x a bgsl_cdf_beta_Q.
gsl::cdf::beta_Pinv p a bgsl_cdf_beta_Pinv.
gsl::cdf::beta_Qinv q a bgsl_cdf_beta_Qinv.
gsl::cdf::logistic_P x agsl_cdf_logistic_P.
gsl::cdf::logistic_Q x agsl_cdf_logistic_Q.
gsl::cdf::logistic_Pinv p agsl_cdf_logistic_Pinv.
gsl::cdf::logistic_Qinv q agsl_cdf_logistic_Qinv.
gsl::cdf::pareto_P x a bgsl_cdf_pareto_P.
gsl::cdf::pareto_Q x a bgsl_cdf_pareto_Q.
gsl::cdf::pareto_Pinv p a bgsl_cdf_pareto_Pinv.
gsl::cdf::pareto_Qinv q a bgsl_cdf_pareto_Qinv.
gsl::cdf::weibull_P x a bgsl_cdf_weibull_P.
gsl::cdf::weibull_Q x a bgsl_cdf_weibull_Q.
gsl::cdf::weibull_Pinv p a bgsl_cdf_weibull_Pinv.
gsl::cdf::weibull_Qinv q a bgsl_cdf_weibull_Qinv.
gsl::cdf::gumbel1_P x a bgsl_cdf_gumbel1_P.
gsl::cdf::gumbel1_Q x a bgsl_cdf_gumbel1_Q.
gsl::cdf::gumbel1_Pinv p a bgsl_cdf_gumbel1_Pinv.
gsl::cdf::gumbel1_Qinv q a bgsl_cdf_gumbel1_Qinv.
gsl::cdf::gumbel2_P x a bgsl_cdf_gumbel2_P.
gsl::cdf::gumbel2_Q x a bgsl_cdf_gumbel2_Q.
gsl::cdf::gumbel2_Pinv p a bgsl_cdf_gumbel2_Pinv.
gsl::cdf::gumbel2_Qinv q a bgsl_cdf_gumbel2_Qinv.
gsl::cdf::poisson_P k::int mugsl_cdf_poisson_P.
gsl::cdf::poisson_Q k::int mugsl_cdf_poisson_Q.
gsl::cdf::binomial_P k::int p n::intgsl_cdf_binomial_P.
gsl::cdf::binomial_Q k::int q n::intgsl_cdf_binomial_Q.
gsl::cdf::negative_binomial_P k::int p ngsl_cdf_negative_binomial_P.
gsl::cdf::negative_binomial_Q k::int p ngsl_cdf_negative_binomial_Q.
gsl::cdf::pascal_P k::int p n::intgsl_cdf_pascal_P.
gsl::cdf::pascal_Q k::int p n::intgsl_cdf_pascal_Q.
gsl::cdf::geometric_P k::int pgsl_cdf_geometric_P.
gsl::cdf::geometric_Q k::int pgsl_cdf_geometric_Q.
gsl::cdf::hypergeometric_P k::int n1::int n2::int t::intgsl_cdf_hypergeometric_P.
gsl::cdf::hypergeometric_Q k::int n1::int n2::int t::intgsl_cdf_hypergeometric_Q.
The following illustrates the use of each function in the randist module. The pdf functions are illustrated first.
> using gsl::stats;
> using namespace gsl::ran;
> ugaussian_pdf 1.2;
0.194186054983213
> gaussian_pdf (-1.3) 1.5;
0.182690978264686
> gaussian_tail_pdf 2.0 1.0 1.5;
0.433042698395299
> ugaussian_tail_pdf 2.0 1.0;
0.34030367841782
> bivariate_gaussian_pdf 1.2 0.9 1.0 1.0 0.95;
0.184646843689817
> exponential_pdf 1.0 0.5;
0.270670566473225
> laplace_pdf 1.5 2.0;
0.118091638185254
> exppow_pdf 0.0 1.0 1.5;
0.553866083716236
> cauchy_pdf (-1.0) 1.0;
0.159154943091895
> rayleigh_pdf 2.5 1.0;
0.109842334058519
> rayleigh_tail_pdf 1.5 1.0 1.0;
0.802892142778485
> landau_pdf 1.1;
0.140968737919623
> gamma_pdf 1.0 1.0 1.5;
0.342278079355061
> flat_pdf 1.0 0.5 2.5;
0.5
> lognormal_pdf 0.01 0.0 1.0;
0.000990238664959182
> chisq_pdf 1.0 2.0;
0.303265329856317
> fdist_pdf 0.5 3.0 2.0;
0.480970043785452
> tdist_pdf 0.1 10.0;
0.386975225815181
> beta_pdf 0.5 4.0 1.0;
0.499999999999999
> logistic_pdf (-1.0) 2.0;
0.117501856100797
> pareto_pdf 0.01 3.0 2.0;
0.0
> weibull_pdf 0.01 1.0 1.0;
0.990049833749168
> gumbel1_pdf 0.01 1.0 1.0;
0.367861108816436
> gumbel2_pdf 0.01 1.0 1.0;
3.72007597602084e-40
> dirichlet_pdf {0.1,0.2,0.8} {2.0,2.0,2.0};
0.00501316294425874
> dirichlet_lnpdf {0.1,0.2,0.8} {2.0,2.0,2.0};
-5.29568823688856
> poisson_pdf 4 0.4;
0.000715008049104682
> bernoulli_pdf 1 0.7;
0.7
> binomial_pdf 3 0.5 9;
0.1640625
> multinomial_pdf {0.1,0.2,0.7} {2,2,2};
0.0
> multinomial_lnpdf {0.1,0.2,0.7} {2,2,2};
-1728120799.71174
> negative_binomial_pdf 10 0.5 3.5;
0.0122430486923836
> pascal_pdf 10 0.5 3;
0.00805664062499999
> geometric_pdf 5 0.4;
0.05184
> hypergeometric_pdf 1 5 20 3;
0.413043478260872
> logarithmic_pdf 10 0.7;
0.00234619293712492
> test_discrete
> = v
> when
> px = discrete_preproc {0.1,0.3,0.4};
> v = discrete_pdf 0 px +
> discrete_pdf 1 px +
> discrete_pdf 2 px;
> _ = discrete_free px
> end;
> test_discrete;
1.0The cumulative distribution functions are shown.
> using namespace gsl::cdf;
> ugaussian_P (-1.3);
0.0968004845856103
> ugaussian_Q (-1.3);
0.90319951541439
> ugaussian_Pinv 0.84;
0.994457883209753
> ugaussian_Qinv 0.84;
-0.994457883209753
> gaussian_P (1.3) 1.5;
0.806937662858093
> gaussian_Q (1.3) 1.5;
0.193062337141907
> gaussian_Pinv 0.4 5.0;
-1.266735515679
> gaussian_Qinv 0.4 5.0;
1.266735515679
> exponential_P 1.0 0.5;
0.864664716763387
> exponential_Q 1.0 0.5;
0.135335283236613
> exponential_Pinv 0.6 0.5;
0.458145365937077
> exponential_Qinv 0.6 0.5;
0.255412811882995
> laplace_P 1.5 2.0;
0.763816723629493
> laplace_Q 1.5 2.0;
0.236183276370507
> laplace_Pinv 0.6 2.0;
0.446287102628419
> laplace_Qinv 0.4 2.0;
0.446287102628419
> exppow_P 0.0 1.0 2.5;
0.5
> exppow_Q 0.0 1.0 0.5;
0.5
> cauchy_P (-1.0) 1.0;
0.25
> cauchy_Q (-1.0) 1.0;
0.75
> cauchy_Pinv 0.75 1.0;
1.0
> cauchy_Qinv 0.25 1.0;
1.0
> rayleigh_P 1.5 2.0;
0.245160398010993
> rayleigh_Q 0.5 1.0;
0.882496902584595
> rayleigh_Pinv 0.5 1.0;
1.17741002251547
> rayleigh_Qinv 0.5 1.0;
1.17741002251547
> gamma_P 1.0 1.0 3.0;
0.283468689426211
> gamma_Q 1.0 1.0 3.0;
0.716531310573789
> gamma_Pinv 0.5 1.0 1.0;
0.693147180559945
> gamma_Qinv 0.5 1.0 1.0;
0.693147180559945
> flat_P 2.0 1.2 4.8;
0.222222222222222
> flat_Q 2.0 1.2 4.8;
0.777777777777778
> flat_Pinv 0.2 0.5 2.5;
0.9
> flat_Qinv 0.2 0.5 2.5;
2.1
> lognormal_P 0.01 0.0 1.0;
2.06064339597172e-06
> lognormal_Q 0.01 0.0 1.0;
0.999997939356604
> lognormal_Pinv 0.1 0.0 1.0;
0.27760624185201
> lognormal_Qinv 0.1 0.0 1.0;
3.60222447927916
> chisq_P 1.0 2.0;
0.393469340287367
> chisq_Q 1.0 2.0;
0.606530659712633
> chisq_Pinv 0.5 2.0;
0.221199216928595
> chisq_Qinv 0.5 2.0;
1.38629436111989
> fdist_P 1.0 3.0 2.0;
0.46475800154489
> fdist_Q 1.0 3.0 2.0;
0.53524199845511
> fdist_Pinv 0.5 3.0 2.0;
1.13494292261288
> fdist_Qinv 0.5 3.0 2.0;
1.13494292261288
> tdist_P 2.1 10.0;
0.968961377898891
> tdist_Q (-2.1) 10.0;
0.968961377898891
> tdist_Pinv 0.68 10.0;
0.482264205919689
> tdist_Qinv 0.68 10.0;
-0.482264205919689
> beta_P 0.75 2.0 2.0;
0.84375
> beta_Q 0.75 2.0 2.0;
0.15625
> beta_Pinv 0.75 2.0 2.0;
0.673648177666931
> beta_Qinv 0.25 2.0 2.0;
0.673648177666931
> logistic_P (-1.0) 2.0;
1
> logistic_Q (-1.0) 2.0;
0.622459331201855
> logistic_Pinv 0.75 1.0;
1.09861228866811
> logistic_Qinv 0.25 1.0;
1.09861228866811
> pareto_P 2.01 3.0 2.0;
0.0148512406901899
> pareto_Q 2.01 3.0 2.0;
0.98514875930981
> pareto_Pinv 0.1 3.0 2.0;
2.07148833730257
> pareto_Qinv 0.1 3.0 2.0;
4.30886938006377
> weibull_P 1.01 1.0 2.0;
0.639441117518024
> weibull_Q 1.01 2.0 3.0;
0.879160657465162
> weibull_Pinv 0.1 1.0 2.0;
0.324592845974501
> weibull_Qinv 0.1 1.0 2.0;
1.51742712938515
> gumbel1_P 1.01 1.0 1.0;
0.694739044426344
> gumbel1_Q 1.01 1.0 1.0;
0.305260955573656
> gumbel1_Pinv 0.1 1.0 1.0;
-0.834032445247956
> gumbel1_Qinv 0.1 1.0 1.0;
2.25036732731245
> gumbel2_P 1.01 1.0 1.0;
0.371539903071873
> gumbel2_Q 1.01 1.0 1.0;
0.628460096928127
> gumbel2_Pinv 0.1 1.0 1.0;
0.434294481903252
> gumbel2_Qinv 0.1 1.0 1.0;
9.4912215810299
> poisson_P 4 0.4;
0.999938756672898
> poisson_Q 4 0.6;
0.000394486018340255
> binomial_P 3 0.5 10;
0.171874999999999
> binomial_Q 3 0.5 10;
0.828125000000001
> negative_binomial_P 10 0.5 3.0;
0.98876953125
> negative_binomial_Q 10 0.5 3.0;
0.01123046875
> pascal_P 10 0.5 3;
0.98876953125
> pascal_Q 10 0.5 3;
0.01123046875
> geometric_P 5 0.4;
0.92224
> geometric_Q 5 0.6;
0.01024
> hypergeometric_P 1 5 20 3;
0.908695652173913
> hypergeometric_Q 1 5 20 3;
0.0913043478260873This module is loaded via the command using gsl::sort and provides Pure wrappers for the GSL sorting routines found in Chapter 11 of the GSL manual,
http://www.gnu.org/software/gsl/manual/html_node/Sorting.html.
gsl::sort_vector m::matrixgsl_sort and gsl_sort_int without stride and n parameters.
gsl::sort_vector_index m::matrixgsl_sort_index and gsl_sort_int_index without stride and n parameters.
Usage of each library routine is illustrated below.
> using gsl::sort;
> using namespace gsl;
> sort_vector {0,3,2,4,5};
{0,2,3,4,5}
> sort_vector_index {0.0,1.0,5.0,2.0,8.0,0.0};
{5,0,1,3,2,4}