The GNU Scientific Library is a powerful c,c++ math repository. It covers a wide range of facets, and the code is highly efficient and rich in interfaces. This library was found in a recent project where multiple Gaussian distributions were used.
GNU Scientific library:http://ftpmirror.gnu.org/gsl/
Corresponding Documentation: HTTP://WWW.GNU.ORG/SOFTWARE/GSL/MANUAL/GSL-REF.PS.GZ
You need to add some suffixes at compile time:
g++ XXX.CPP-LGSL-LGSLCBLAS-LM
When calling, only the header file containing the corresponding module will be required (the name of the header that corresponds to the function is indicated in the document)
The library header files are placed in the gsl/directory, when writing, according to the following line.
#include <gsl/xxx.h>
Here is an instance program
http://blog.csdn.net/augusdi/article/details/9983307
Here we give the program interface and routines for how to use GSL based on gsl-doc-pdf. The GSL program uses a header file that is generally placed in the/usr/include/gsl/directory (Libgsl0-dev),
C programs usually use the #include to let the preprocessor CPP read into the corresponding functions, macro declarations, when connected through-lgsl-lgslcblas to the corresponding library, and often may also connect to-LM. In order to
With some inline functions, you can open the Have_inline macro. Note Because long double is not generally recommended for use with platform-dependent.
The naming rules in GSL are roughly prefixed with GSL (no namespace,sigh), and the function is generally gsl_foo_fn (corresponding to double) for GSL_FOO_TYPE_FN, and for types generally gsl_foo or gsl_ Foo_type (no Template,sigh again). The corresponding header file is usually gsl_foo.h (all types included) or gsl_foo_type.h.
GSL inside error handling follow POSIX line libraries, normal return 0, error return nonzero, and according to gsl_errno.h inside set error value. You can use Gsl_strerror to express the return value in a string. By default, the error handler provided by GSL is to print an error and call Abort, which is a gsl_error_handler_t-type function that can be set by the Gsl_set_error_handler () function.
Mathematical Functions common Mathematical functions gsl_math.h
Includes commonly used mathematical constants (m_*), Gsl_posinf, Gsl_neginf, Gsl_nan, and corresponding function Gsl_isnan (), Gsl_isinf (), and Gsl_finite (). In addition, some methods for fast calculation of function values are provided, gsl_log1p () calculates log (1 + x), and gsl_exp1m () calculates EX-1,gsl_hypot () and gsl_hypot3 calculate Euclidean spatial norm, Gsl_acosh (), Gsl_asinh (), Gsl_atanh () are inverse hyperbolic functions, gsl_ldexp (x, y) are computed by X. 2Y,gsl_frexp () calculates the radix portion of X under the binary science notation. The Power Gsl_pow_int or gsl_pow_n (n = 2, ..., 9). Test symbol gsl_sign, parity Gsl_is_even and gsl_is_odd. Take size Gsl_max, gsl_min. The floating-point size is best used with the GSL_FCMP function.
Complex Numbers plural gsl_complex.h, gsl_complex_math.h
Define a complex number can be used Gsl_complex_rect or gsl_complex_polar, in addition to get real, imaginary gsl_real and Gsl_imag, set gsl_set_complex,gsl_set_real and GSL_SET _imag. The angular gsl_complex_arg (), the modulus length gsl_complex_abs (), the modulus length squared gsl_complex_abs2, the modulus length logarithm gsl_complex_logabs () can be obtained. The subtraction of the plural is gsl_complex_op () where op can be add, sub, mul, and Div, in addition to the real number have similar operations Gsl_complex_op_real (), and imaginary numbers have Gsl_complex_op_imag (), conjugate Gsl_complex_conjugate (), Inverse gsl_complex_inverse () and opposite number gsl_complex_negative. In addition, such as the square root gsl_complex_sqrt (for real numbers to add _real), Power Gsl_complex_pow (the number of times is real plus _real), exponential gsl_complex_exp, logarithmic gsl_complex_log (LOH10 or Log_b). In addition there are trigonometric functions, inverse trigonometric function, hyperbolic functions, and inverse hyperbolic function.
Polynomial polynomial gsl_poly.h
Generally can be given a polynomial coefficient, with an array from the lower order to the higher order, call Horner method to find the polynomial function value can be used Gsl_poly_eval (), for the complex number is gsl_poly_complex_eval (), the complex coefficient polynomial is gsl_complex_ Poly_complex_eval (). Another expression is expressed using the Newton difference method, when the input is a differential node to create a polynomial, gsl_poly_dd_init (), to find the function value can be gsl_poly_dd_eval (), but also to convert this type of polynomial to Taylor The expanded form Gsl_poly_dd_taylor (). For the two-time polynomial solution root can be used gsl_poly_solve_quadratic (), complex root can be used gsl_poly_complex_solve_quadratic (). Replace the quadratic with cubic for the three-time equation. There is no analytic solution to the polynomial above 4 times, often using the matrix eigenvalue approximation, GSL provides a solution, first allocates the storage root space with Gsl_poly_complex_workspace_alloc (), then calls Gsl_poly_complex_ Solve () is solved and should be released with Gsl_poly_complex_workspace_free () after solving.
Special Functions Special Functions gsl_sf.h, gsl_sf_*.h
There are generally two forms of invocation, one similar to the normal function gsl_sf_function (), and the other gsl_sf_function_e () passing the address of the return value to the function. Gsl_sf_result.h provides a structure for estimating errors, the general function has three mode control calculation accuracy gsl_prec_double, Gsl_prec_single, and Gsl_prec_approx. The special functions provided are airy (see GSL_SF_AIRY.H) function value, 0 point, derivative, derivative 0 point, Bessel function (see gsl_sf_bessel.h) function value, 0 point, Clausen function (see gsl_sf_ clausen.h), Coulomb function (see GSL_SF_COULOMB.H), coupling coefficient (see gsl_sf_coupling.h), Dawson function (see GSL_SF_DAWSON.H), Debye function (see GSL _sf_debye.h), Dilogorithm function (see GSL_SF_DILOG.H), multiplication error function (see GSL_SF_ELEMENTARY.H), elliptic integral (see gsl_sf_ellint.h), Jacobi elliptic function (see GSL_SF_ELLJAC.H), the error function (see Gsl_sf_erf.h,gnu libc also has a similar function), Gong (see GSL_SF_EXP.H), exponential integration (see GSL_SF_EXPINT.H), Fermi-dirac function (see gsl_sf_fermi_dirac.h), Gamma and Beta functions (see GSL_SF_GAMMA.H), Gegenbauer functions (see GSL_SF_GENGENBAUER.H), hypergeometric functions (see gsl_sf_ hyperg.h), Laguerre function (see gsl_sf_laguerre.h), Lambert W function (see gsl_sf_lambert.h), Legendre function and spherical harmonic function (see gsl_sf_ legendre.h), logarithm and its related functions (see GSL_SF_LOG.H), Mathieu function (see GSL_SF_MATHIEU.H), Power function (see GSL_SF_POW_INT.H), Psi (digamma) function (see GSL_SF _psi.h), synchrotron function (see GSL_SF_SYNCHROTROn.h), transport function (see gsl_sf_transport.h), triangular hyperbolic function (see GSL_SF_TRIG.H), Zeta function (see GSL_SF_ZETA.H).
Vectors and matrices vectors and matrices gsl_block.h, Gsl_vector.h, gsl_matrix.h
Create vectors or matrix, all rely on gsl_block this structure, can be used Gsl_block_alloc () and Gsl_block_calloc () allocation, Gsl_block_free () release, in addition to the convection input and output, such as Gsl_block_fread (), Gsl_block_fwrite (), gsl_block_fprintf (), and gsl_block_fscanf (). Both the vector and the matrix contain a gsl_block pointer that operates like a block. Similar operations for vectors are Gsl_vector_alloc (), Gsl_vector_calloc (), Gsl_vector_fread (), Gsl_vector_fwrite (), Gsl_vector_ fprintf () and gsl_vector_fscanf () can also obtain/set a value for a component by Gsl_vector_get () and Gsl_vector_set (), Gsl_vector_ptr () and Gsl_vector_ Const_ptr () obtains the address of one component, and some functions facilitate the initial vector, such as Gsl_vector_set_all (), Gsl_vector_set_zero (), and gsl_vector_set_basis (). To access a subset of the vector elements, you can use the Vector view object, which can be generated with some functions (with the corresponding const version) and preferably only within the stack (that is, directly manipulating the object itself, not the pointer), such as Gsl_vector_ Subvector () produces a contiguous subset, Gsl_vector_subvector_with_stride () produces a subset with a fixed interval, gsl_vector_complex_real (), and Gsl_vector_ Complex_imag () a view,gsl_vector_view_array () that produces a real or an image part produces a vector to an array view,gsl_vector_view_array_with_ Stride () produces a vector view with a fixed interval. Copy or interchange between vectors with gsl_vector_memcpy () and Gsl_Vector_swap (). Vector elements are exchanged between gsl_vector_swap_elements (), Reverse gsl_vector_reverse (). Arithmetic between vectors gsl_vector_op (), multiply (op = scale), plus constant (op=add_constant). Vector Maximum minimum (op=max, Min, Minmax) or corresponding index (OP = max_index, Min_index, Minmax_index). Determines whether a vector is 0 vectors (op=isnull), positive (Ispos), negative (ISNEG), non-negative (ISNONNEG). The matrix is slightly different from a vector in that it uses two subscript indexes, and most of the preceding functions simply replace the vectors with the matrix. Alternatively, you can establish view,gsl_matrix_ (sub) row/column () or diagonal element gsl_matrix_ (sub, Super) diagonal () for the matrix row or column. Reads/writes a matrix row/column to a vector can be used Gsl_matrix_get/set_row/col (). The Matrix column swaps gsl_matrix_swap_rows/columns () or the array's row and column exchanges Gsl_matrix_swap_rowcol (), transpose or transpose copy Gsl_matrix_transpose (), Gsl_matrix _transpose_memcpy (). In matrix operations, mul_elements and div_elements are pairs of elements.
Permutations Replacement Gsl_permutation.h
This is the basic data structure that produces the permutation, generally allocates memory with Gsl_permutation_ (c) alloc (), Gsl_permutation_init () is initialized to the displacement element, can be copied with gsl_permutation_memcpy () , Gsl_permutation_free () released. Access permutation elements can be used Gsl_permutation_get (), interchange with Gsl_permutation_swap (). Alternatively, the displacement size can be obtained with gsl_permutation_size (), Gsl_permutation_data () obtains a pointer to the permutation, and Gsl_permutation_valid () verifies that it is a legitimate permutation. There are also some permutation operations, such as Gsl_permutation_reverse () reversal, gsl_permutation_inverse () inversion, and the next/previous one with Gsl_permutation_next/prev () according to the dictionary order. Applying permutation to an array can be gsl_permute, or inverse psl_permute_inverse (), the vector can be Gsl_permute_vector (_inverse) (), and several permutations can be multiplied gsl_ Permutation_mul (). Similar permutation have input and output functions. In addition, there is a regular expression method can be converted with gsl_permutation_linear_to_canonical (), you can calculate a permutation containing a few cycle and so on.
Combinations Combination Gsl_combination.h
and permutation-like structures, but it deals with combinatorial problems.
Sorting sort gsl_heapsort.h, gsl_sort_*.h
First provides a quick sort of supplemental heapsort,gsl_heapsort () and Gsl_heapsort_index (). The sorted array or vector can be gsl_sort () or Gsl_sort_vector (), and there are also indexed versions. For the minimum/large k elements, you can use Gsl_sort (_vector) _smallest/largest (_index) ().
BLAS support Basic linear algebra subroutine supports GSL_BLAS.H, gsl_cblas.h
BLAS supports three level operations, Level 1 is vector, Level 2 is Matrix-vector, Level 3 is Matrix-matrix operation. The operands are of type Sdcz corresponding to float, double, float complex, and double complex, the properties of the Matrix are GE (general), GB (General banded Matrix), SY (symmetric), SB (symmetric ribbon), SP (symmetric, packed), HE , HB, HP (Hermite), TR, TB, TP (triangular array). The operation types are DOT (inner product), Axpy (a x + y), MV (Matrix x vector), SV (matrix inverse multiplication vector), MM (matrix multiplication), SM (inverse of matrix to another matrix). The command form provided by GSL is gsl_blas_*.
Linear Algebra linear algebra Gsl_linalg.h
This section includes the most commonly used numerical linear algebra operations, such as Matrix LU decomposition to solve linear equations (with permutation, can be inplace, etc.), QR decomposition (including the selected column), Svd,cholesky decomposition, the diagonal decomposition of the real symmetric matrix (Eigen decomposition), Hermite decomposition of matrix, Hessenberg decomposition of real matrix, Hessenberg decomposition of real matrix pairs, double diagonalization (bidiagonalization), householder transform, householder transform to solve linear equations, Three diagonal arrays, balancing (the norm equivalent of a column by a similar transformation).
Eigensystems Solving Eigenvalue gsl_eigen.h
This part includes the eigenvalues of the real symmetric matrix, the eigenvalues of the Hermite matrix, the eigenvalues of the asymmetric matrices (using Schur decomposition) and the corresponding functions of the generalized eigenvalue problem. Generally need to alloc a workspace, and then call the corresponding function to calculate the eigenvalues, eigenvectors, and finally free off workspace. The corresponding function is also provided for the simultaneous collation of eigenvalues and eigenvectors.
Fast Fourier Transform Quick Fourier transform Gsl_fft_*.h
The fast Fourier transforms are divided here to complex numbers, real numbers (more difficult, need to ensure that inverse transformations are obtained as real numbers, and also halfcomplex expression coefficients used) for both treatments. For the power of the data 2 can be directly used Cooley-tuckey algorithm, not a different set of algorithms (need to pre-allocate workspace). Each algorithm provides forward (compute Fourier transform), inverse (inverse transform), backward (inverse transform without normalization constant) and transform (forward or backward by parameter selection).
Numerical Integration Numerical Integration Gsl_integration.h
The function is named Gsl_integration_* (), Q denotes quadrature routine,n and A (indicates whether it is adaptive), G and W (general integral and integral of the weighted function), S and P (odd points that are easy to digest or provide particularly difficult points), I (Infinity Integral) , O (oscillating integral), F (Fourier integral), C (Cauchy main value). Setting the stop condition inside the integral sets the relative error or absolute error.
Random number Generation the generator gsl_rsg.h
First you need a corresponding type of gsl_rng_alloc () and then Gsl_rng_set () set Seed,gsl_rng_free () to release. It can also be obtained by the environment variables Gsl_rng_type and Gsl_rng_seed and the function Gsl_rng_env_setup (), and then by setting the corresponding generator you can use Gsl_rng_uniform () to produce a uniform distribution of [0, 1), G Sl_rng_uniform_pos () produces a uniform distribution of (0, 1), and Gsl_rng_uniform_int () produces a uniform integer distribution within a specified range. You can also get the name of the generator by Gsl_rng_name (), Gsl_rng_get () returns a random number between gsl_rng_min () and Gsl_rng_max (). If more granular processing of the generator is required, some functions are also provided to handle its state IO. In another chapter, the generation of random numbers under various distributions is described in detail.
Quasi random sequences quasi-stochastic sequence gsl_qrng.h
Unlike the previous chapter, the initial seed is not required, and the invocation structure is similar to the previous chapter.
Random number distribution Distribution Gsl_randist.h
Here are the most commonly used distributions, naming rules as follows Gsl_ran_dist (_), where Dist is a distribution name, such as Gaussian, and so on, if there is no _ to generate a random number, if the _pdf is density, the distribution function in two forms, generally cdf_dist_p and CD F_dist_q and corresponding inverse PINV and QINV. There are several distributions, Gaussian, Gaussian_tail, Bivariate_gaussian, exponential, Laplace, Exppow, Cauchy, Rayleigh, Rayleigh_tail, Landau, Levy, Levy_skew, Gamma, flat, Lognormal, CHISQ, fdist, tdist, beta, Logistic, Pareto, dir_2d, Weibull, Gumbel1, Gumbel2, Dirichlet. For discrete distributions, a finite value can be used Gsl_ran_discrete_preproc () to convert a distribution density column (or a scale factor) into a gsl_ran_discrete_t type structure and pass it to the Gsl_ran_ Discrete () generates a random number, gsl_ran_discrete_pdf () produces a distribution column, and the resulting structure can be released with Gsl_ran_discrete_free (). Also provided are Poisson, Bernoulli, binomial, multinomial, negative_binomial, Pascal, geometric, hypergeometric, logarithmic. In addition to the distribution function, the specified sequence can be randomly disturbed gsl_ran_shuffle (), randomly selected elements gsl_ran_choose (), select a subset Gsl_ran_sample ().
Statistics Statistics Gsl_stats.h
Statistical functions are provided, such as averaging Gsl_stats_mean (), sub-sample variance (unbiased) gsl_stats_variance (), sub-sample variance (known expected, biased) gsl_stats_variance_m (), standard deviation two versions std and std_ M, with expected squared and TSS and Tss_m, the other two are Variance_with_fixed_mean and Sd_with_fixed_mean. Absolute deviations Absdev and absdev_m,skew with skew, SKEW_M_SD, kurtosis kurtosis and kurtosis_m_sd, self-correlation lag1_autocorrelation and Lag1_autocorrelation _m, covariance covariance and covariance_m, correlation coefficients correlation, plus a corresponding weight-value version preceded by W. It also provides a maximum minimum and a function for the index, and a function to calculate the median and the number of bits.
Histograms Histogram gsl_hostogram*.h
Divided into one and two dimensions, the difference is not small, mainly one-dimensional increase of a new variable, named after histogram plus 2d. The approximate method is to Gsl_histogram_alloc () allocate space first, and then Gsl_histogram_set_ranges set the node (or Gsl_histogram_set_ranges_uniform () Set a uniform node), and finally Gsl_histogram_free (). It also provides a function to replicate gsl_histogram_memcpy () and copy Gsl_histogram_clone () itself. You can add an element to a count by Gsl_histogram_increment (), or you can add an arbitrary weight (the real number used by the counter) gsl_histogram_accumulate () to get the weight of a bin Gsl_histogram_ Get (), or the upper and lower bounds of a bin Gsl_histogram_get_range (), the entire histogram gsl_histogram_min/max (), the number of bins gsl_histogram_bins (), and Gsl_histogram_reset () The entire histogram is zeroed. Gsl_histogram_find () returns the bin where a value is located. Another max/min_val/bin returns the maximum value or the bin that appears, and uses this histogram to calculate the mean, Sigma (standard deviation), sum. The other two histogram can use gsl_histogram_equal_bins_p () to see if the add/sub/mul/div can be used, and shift allows all values + constants, and scale to multiply. There are also some functions of IO. You can use Gsl_histogram to create a gsl_histogram_pdf, which is the same as in the previous random number.
N-tuples N-Tuple gsl_ntuple.h
Very simple data structure for writing data to/from a file, providing basic operations with gsl_ntuple_create () Creating an empty file (truncation already exists), Gsl_ntuple_open () opening an existing file, or Gsl_ntuple_write () Writes ntuple to the file, or reads the Ntuple data Gsl_ntuple_read () from the file, and finally requires gsl_ntuple_close () to close. A ntuple data can be read into the feed to histogram for statistics, which mainly uses the Gsl_ntuple_project () function.
Monte Carlo Integration Monte Carlo integral gsl_monte_*.h
The implementation is the most basic three kinds of integration method, in gsl_monte.h the basic form of integral function is declared gsl_monte_function, Gsl_monte_plain.h provides is the simplest uniform sampling integral method, first Gsl_monte_ Plain_alloc () allocates workspace,gsl_monte_plain_init () initialization, then gsl_monte_plain_integrate () integrals, and finally Gsl_monte_plain_free () releases Workspace The Layered Monte Carlo integral used in the gsl_monte_miser.h can be used to control the details of the algorithm using the gsl_monte_miser_state structure. And Gsl_monte_vegas.h is the details of the algorithm using Impartance sampling,gsl_monte_vegas_state control. Complex MCMC and so on are not implemented here.
Simulated annealing simulated annealing gsl_siman.h
There is only one function gsl_siman_solve (), which provides information such as optimization functions to be used.
Ordinary differential equations ordinary differential equation gsl_odeiv.h
The main use of gsl_odeiv_system structures is to provide functions and biases (i.e. Jacobi matrices) in the standard form of equations. In addition, the algorithm is related to the stepping function, such as the Runge-kutta method, there is also an adaptive version, the purpose of this function is to calculate the specified step under the function value. GSL also provides a function (evolve) for calculating a function change (several step) within an interval. But because the numerical solution of ordinary differential equations is not well understood, it is omitted here.
interpolation interpolation gsl_spline.h, gsl_interp.h
Three splines and Akima splines are provided. The low-level function provides the user with very granular control, allocates the required space through Gsl_interp_alloc (), chooses the appropriate algorithm, Gsl_interp_init () initializes the node, and finally Gsl_interp_free () releases. In order to search for a location (so that the value of the function is computed) you can use Gsl_interp_bsearch () or the Gsl_interp_accel object (init First, then find and free). It also provides the most commonly used function values, first-order guides, second-level guides and integrals, and interfaces that correspond to the use of gsl_interp_accel. The functions of high-level are mainly provided in gsl_spline.h. Similar to the Gsl_interp_* series.
Numerical difference differential gsl_deriv.h
Center differential gsl_derive_central (), Forward Gsl_deriv_forward (), and back Gsl_deriv_backward () are provided.
Chebyshev approximation car nearer gsl_chebyshev.h than snow man
Provides a set of orthogonal polynomials on [-1, 1], which corresponds to a function space of 1/sqrt (1-x^2). First, the Gsl_cheb_alloc () allocates space to generate the gsl_cheb_series structure, then gsl_cheb_init () and finally Gsl_cheb_free (). The calculation function value, function value error, derivative function and integral are provided.
Series Acceleration Series Acceleration gsl_sum.h
provided a Levin u-transform thing, never heard of it. The meaning is to reduce the sum and improve the calculation precision. It is used by assigning workspace through Gsl_sum_levin_u_alloc (), and then by Gsl_sum_levin_u_accel () and finally Gsl_sum_levin_free (). If you do not need to estimate the error, you can do it faster.
Wavelet Transform wavelet Transform Gsl_wavelet*.h
Similar to FFT, but no backward type, divided into one and two dimensions, with Daubechies, Haar, and Bspline.
Discrete Hankel Transform discrete Hankel transform gsl_dht.h
Similar to FFT, but to polar coordinates, the invocation method is similar to the FFT.
One-dimensional Root finding one-dimensional function 0 points gsl_roots.h
There are two ways (based on search gsl_root_fsolver and derivative gsl_root_fdfsolver). First select the appropriate solver, the naming method is Gsl_root_*solver_type, and then Alloc. You can then use Gsl_root_*solver_set () to set the initial state, start iterating using Gsl_root_*solver_iterate (), or you can use Gsl_root_*solver_root () to find the root. Alternatively, Gsl_root_fsolver_x_upper () and Gsl_root_fsolver_x_lower () are returned to the control root interval. Relative errors and residuals can be tested by gsl_root_test_* (). The algorithms provided are bisection, Falsepos and Brent, using gradients of Newton, secant, and Steffenson.
One-dimensional minimization one-dimensional function to find minimum gsl_min.h
Minimization is, in a sense, 0 points of the derivative function. So the calling method is very similar to the previous chapter. The algorithm has goldensection and Brent.
Multi-dimensional Root finding multidimensional functions 0 points Gsl_multiroots.h
Similar. The algorithm has Hybridsj,hybridj,newton,gnewton. The algorithm without gradients has hybrids,hybrid,dnewton,broyden.
Multi-dimensional minimization multidimensional function to find the minimum gsl_multimin.h
Similar. The algorithm has CONJUGATE_FR, CONJUGATE_PR, BFGS, Bfgs2, Steepest_descent, Nmsimplex.
Least Square Fitting Least squares fitting gsl_fit.h
Divide single variables and multivariable. Gsl_fit_linear () and Gsl_fit_wlinear () are single-variable fitting (i.e. linear regression) for linear and weighted linear problems, with the addition of Gsl_fit_linear_est () also estimating errors. The multivariate cases are Gsl_fit_mul (), Gsl_fit_wmul () and Gsl_fit_mul_linear (). For generalized LSF problems, it is necessary to use GSL_MULTIFIT_LINEAR_ALLOC () to allocate workspace, finally release, similar functions have gsl_multifit_linear and weighted versions, and _SVD versions, using SVD Calculation results.
Nonlinear Least Square Fitting Nonlinear least squares fitting gsl_multifit_nlin.h
Similar to a multidimensional function minimization.
Basic splines Basic Spline gsl_bspline.h
First Gsl_bspline_alloc () produces workspace, then gsl_bspline_knots () or Gsl_bspline_knots_uniform () sets the node, Gsl_bspline_eval () calculates the function value , and finally Gsl_bspline_free () frees up space.
Physical Constants Physical Constants Gsl_const_mksa.h
Various physical constants that may be used, usually named gsl_const_mksa_*.
IEEE floating point arithmetic float arithmetic gsl_ieee_utils.h
The gsl_ieee_printf_* of the output float and double are provided, and the corresponding computing environment can be set with Gsl_ieee_env_setup ().
GNU Scientific Library