理學산책

GSL 간단소개

kongbak 2007. 11. 26. 22:20

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/

     

     

  • 관련분야(2)
    - 제어시스템(Control System)
    - 신호처리(Signal Processing)