GSL 간단소개
GSL(GNU Scientific Library) 는 C/C++를 위한 numerical library 입니다. GNU General Public License의 준수하에 무료로 제공하고있습니다. 이 Library는 많은 영역의 수학 함수구현을 제공해주고있는데 예를 들어 random number generator, special functions 및 Least Squares fitting 등등이 있다. 총 1000개가 넘는 함수들이 제공되고있는데 이들은 대체로 아래와 같이 분류할 수 있다.
Complex Numbers |
Roots of Polynomials |
Special Functions |
Vectors and Matrices |
Permutations |
Sorting |
BLAS Support |
Linear Algebra |
Eigensystems |
Fast Fourier Transforms |
Quadrature |
Random Numbers |
Quasi-Random Sequences |
Random Distributions |
Statistics |
Histograms |
N-Tuples |
Monte Carlo Integration |
Simulated Annealing |
Differential Equations |
Interpolation |
Numerical Differentiation |
Chebyshev Approximation |
Series Acceleration |
Discrete Hankel Transforms |
Root-Finding |
Minimization |
Least-Squares Fitting |
Physical Constants |
IEEE Floating-Point |
Discrete Wavelet Transforms |
2. Documentation
GSL은 500 페이지 분량의 document 설명파일을 Texinfo 포맷으로 제공해주고있고 온라인으로 볼수도 있고 다운받아서 참고할 수도 있다. 아래 사이트를 참고하세요.
GSL Reference Manual - HTML
GSL Reference Manual - Gzipped Postscript
3. 지원하는 Platform
GSL은 GNU/LINUX 플랫폼 상에서 gcc로 개발하였고 아래와 같은 플랫폼에서 컴파일을 하였다.
- SunOS 4.1.3 & Solaris 2.x (Sparc)
- Alpha GNU/Linux, gcc
- HP-UX 9/10/11, PA-RISC, gcc/cc
- IRIX 6.5, gcc
- m68k NeXTSTEP, gcc
- Compaq Alpha Tru64 Unix, gcc
- FreeBSD, OpenBSD & NetBSD, gcc
- Cygwin
- Apple Darwin 5.4
- Hitachi SR8000 Super Technical Server, cc
Windows 상에서는 Cygwin상에서 가능하다고 합니다.
4. 기타 Packages 및 확장 응용프로그램
GSL과 관련된 기타 과학용 library는 다음곽 같다.
ATLAS - a portable self-optimising BLAS library with CBLAS interface
GLPK - GNU Linear Programming Kit
FFTW - Large-scale Fast Fourier Transforms
아래는 GSL의 확장용으로 제공되는 3rd Party 과학용 Library 이다.
- ndlinear - simpler interface for N-dimensional least squares fits (Patrick Alken)
- Annealing - reworking of simulating annealing with new API (under development - Marco Maggi)
- jacobi-0.9 - Jacobi polynomials and operations related to Gauss-jacobi quadrature (integration, derivatives and interpolation) (Paulo Jabardo)
- Ziggurat Gaussian - faster gaussian generator using Ziggurat method (Jochen Voss) -- now incorporated in GSL 1.8
- Marsaglia-Tang Gamma - faster gamma generator using Marsaglia-Tang method (J.D. Lamb) -- now incorporated in GSL 1.8
- wigner.c - alternative Wigner coefficient calculations (large j) (J. Underwood)
- adaptint.c - adaptive multidimensional integration, similar to cubpack (Steven G. Johnson)
- jsqrng - higher dimensional quasi-random sequences (J. Scott)
- qrngextra - extended dimensionality QRNGs (Philipp Baecker)
- CQP - solves convex quadratic problems (Ewgenij Hübner)
- Bundle - powerful bundle minimisation algorithm (needs CQP) (Ewgenij Hübner - upgraded to v1.2, Oct 2006)
- Geczy - additional minimisation algorithms (Peter Geczy)
- Quartic - quartic polynomial solver (Andrew Steiner)
- Fresnel - sine and cosine fresnel integrals (Aleksey Dmitriev)
- SimplexImproved - alternative simplex minimiser (Ivo Alxneit)
- TAMUANOVA - the TAMU ANOVA package, provides single and two factor ANOVA.
- OOL - the "Open Optimization Library", provides GSL-compatible constrained optimization methods (under development).
- rngextra-0.2 - additional random number generators (Brian Gough, example package)
Other packages:
- Dieharder - extensive random number test suite for GSL based on Marsaglia's Diehard tests and the NIST Statistical Test Suite (Robert G. Brown)
- VFGEN - generates C source code for GSL ODE systems from a user-supplied specification of a vector field (Warren Weckesser)
Some applications using GSL that we know of:
- NEMO -N-body stellar dynamics toolbox, a unix-like toolset of libraries and programs, also has tools to operate on ascii tables and other types of data
- LUSH - Lisp Universal Shell, an object-oriented programming language with full interfaces to GSL, LAPACK, and BLAS.
- NumExp - interactive graphical exploration of numerical functions and algorithms (uses Gtk)
- LabPlot - software for data analysis and visualisation
- Qumax - a Quantum Monte Carlo Software for Atoms, Molecules and Solids
- ORSA - Orbit Reconstruction, Simulation and Analysis.
- QtiPlot - scientific plotting and data analysis application
- Rlabplus - libraries for Rlab, a high-level language for numerics
Wrappers for Other Languages (not necessarily complete):
- FGSL - Fortran interface to GSL (under development)
- PyGSL - Python Bindings for GSL
- PyrexGsl - Pyrex interface to GSL (Pyrex is a version of Python which allows mixing of Python and C datatypes)
- ctypesGsl - Python ctypes-style interface to GSL (under development)
- Ruby/GSL - Ruby Bindings for GSL
- PDL::GSL - Perl Data Language interface to GSL Random Numbers (included in the main PDL distribution)
- R gsl - package, bindings for GSL special functions in GNU R
- S-lang/GSL - bindings for GSL and S-Lang
- Zoom - C++ wrappers for GSL special functions
- OCAML GSL - bindings for the OCAML functional language
- O2scl - a numerical C++ class library which is compatible with GSL datatypes (A.Steiner)
5. Licensing
GNU General Public License(GPL) License 조약하에 무료로 사용할 수 있는데 자세한 건 아래 내용을 참고하기 바란다.
http://www.gnu.org/copyleft/gpl.html
6. Project Background
본 프로젝트는 1996년 Los Alamos National Laboratory 의 Dr M. Galassi and Dr J. Theiler 에 의해 구상되었고 후에 몇몇 물리학자의 참여로 완성되었다. 이들은 모두 libraries의 License 조약들이 연구자들의 연구협력에 저애한다는 걸 느끼고 통일된 그리고 구조적으로 잘 설계된 libraries를 원했다.
7. 참고사이트
http://www.gnu.org/software/gsl/
|