GNU 과학 라이브러리

GNU Scientific Library
GNU 과학 라이브러리
원저작자마크 갈라시, 제임스 테일러, 브라이언 고프, 제라드 융먼 외 다수
개발자GNU 프로젝트
초기 릴리즈1996년 5월, 26년 전(1996-05)
안정된 릴리스
2[1].7.1 / 2021년 11월 30일
저장소ftpmirror.gnu.org/gsl/
기입처C
유형수치 라이브러리
면허증.2007: GPL-3.0 이후[a]
1996: GPL-2.0 이후[b]
웹 사이트www.gnu.org/software/gsl/

GNU Scientific Library(또는 GSL)는 응용 수학 및 과학 분야의 수치 계산을 위한 소프트웨어 라이브러리입니다.GSL은 C로 기술되어 있습니다.다른 프로그래밍 언어에서는 래퍼를 사용할 수 있습니다.GSL은 GNU[2] 프로젝트의 일부이며 GNU General Public License에 따라 배포됩니다.

프로젝트 이력

GSL 프로젝트는 1996년 로스앨러모스 [3]국립연구소의 물리학자 마크 갈라시와 제임스 테일러에 의해 시작되었습니다.그들은 널리 쓰이지만 Netlib과 [4]같은 다소 구식인 Fortran 라이브러리를 위한 현대적인 대체물을 쓰는 것을 목표로 했다.그들은 전체적인 설계를 수행하고 초기 모듈을 작성했습니다.그 준비로 다른 과학자를 모집해 공헌했습니다.

Brian Gough와 Gerard Jungman[3]"라이브러리의 전반적인 개발과 주요 모듈의 설계 및 구현"을 수행했다.다른 주요 기여자들은 짐 데이비스, 리드 프리도르스키, M. 부스, 그리고 F.였다.로시.[3]

버전 1.0은 2001년에 출시되었습니다.이후 몇 년 동안 라이브러리는 천천히 확장될 뿐이었습니다. 설명서에서 언급한 바와 같이, 유지관리자들은 추가 기능보다는 안정성에 더 관심이 있었습니다.메이저 버전 1은 2013년 7월 릴리즈 1.16으로 종료되었으며, 2012-2014년 3년간 공개 활동은 이뿐이었습니다.

2015년 10월 버전 2.0을 발표하면서 활발한 개발이 재개되었다.최신 버전 2.7은 2021년 6월에 출시되었습니다.

다음 예제 프로그램은 [5]5에 대한 Bessel 함수 값을 계산합니다.

#실패하다 <stdio.h> #실패하다 <gsl/gsl_besel_besel.h>  인트 주된(무효) {   이중으로 하다 x = 5.0;   이중으로 하다 y = gsl_sl_besel_J0(x);   인쇄물("J0(%g) = %.18e\n", x, y);   돌아가다 0; } 

예제 프로그램은 컴파일 시 GSL 라이브러리에 링크해야 합니다.

gcc $(gsl-config --cflags) example.c $(gsl-config --libs)

출력은 다음과 같으며, 2배의 정밀도로 정확해야 합니다.

J0(5) = -1.775967713143382920e-01

특징들

소프트웨어 라이브러리는 다음을 위한 기능을 제공합니다.

프로그래밍 언어 바인딩

GSL은 C로 기술되어 있기 때문에 다른 프로그래밍 언어에 대한 래퍼를 제공하는 것은 간단합니다.이러한 래퍼는 현재 다음에 대해 존재합니다.

C++ 지원

GSL은 C++ 클래스에서 사용할 수 있지만 [23]멤버 함수에 대한 포인터 유형은 포인터마다 다르기 때문에 멤버 함수대한 포인터를 사용할 수 없습니다.대신 정적 함수에 대한 포인터를 사용해야 합니다.또 하나의 일반적인 회피책은 펑터를 사용하는 것입니다.

GSL용 C++ 래퍼를 사용할 [7][8][9][10]수 있습니다.이 모든 것이 정기적으로 유지되는 것은 아닙니다.malloc free 함수를 사용하기 위해 GSL의 인터페이스를 사용할 필요 없이 매트릭스 및 벡터 클래스에 액세스할 수 있습니다.또, 스마트 포인터 클래스처럼 동작하는 워크스페이스의 작성도 서포트하고 있습니다.마지막으로, 사용자가 함수로서 매개 변수화된 함수를 나타내는 클래스를 만들 수 있도록 하기 위한 지원(2020년 4월 현재로 제한됨)이 있다.

엄밀하게 랩퍼는 아니지만 C++ 사용자가 Gnu Scientific Library를 래퍼 기능과 함께 사용할 수 있는 C++ 클래스가 있습니다.

「 」를 참조해 주세요.

메모들

  1. ^ 2007-07-02 이후 GPL-3.0 이후
  2. ^ 1996-07-08부터2007-02까지 GPL-2.0 이후

레퍼런스

  1. ^ "relase 2.7.1 to fix libtool version numbers".
  2. ^ "GNU - Free Software Directory".
  3. ^ a b c GSL 홈페이지
  4. ^ GSL 설계 문서.
  5. ^ 라이브러리 사용. 샘플 프로그램GSL 매뉴얼
  6. ^ GNU Scientific Library용 AMP 바인딩.
  7. ^ a b ccgsl: GNU Scientific Library용 C++ 인터페이스.
  8. ^ a b GSL - GSL용 C++ 래퍼
  9. ^ a b GSLwrap: GNU Scientific Library용 C++ 래퍼 클래스.
  10. ^ a b gslcpp: GNU Scientific Library를 래핑하는 헤더 전용 최신 C++ 라이브러리.
  11. ^ FGSL - GNU Scientific Library에 대한 Fortran 인터페이스.
  12. ^ GSL 특수 기능에 대한 인터페이스인 Hmatrix 특수 패키지.
  13. ^ 선택된 수치 계산에 대한 순수 기능 인터페이스인hmatrix-gsl 패키지는 GSL을 사용하여 내부적으로 구현된다.
  14. ^ GSL용 JavaCPP 프리셋
  15. ^ GSL에 대한 Julia 인터페이스
  16. ^ GSLL, GNU Scientific Library for Lisp.
  17. ^ gsl-ocaml: GSL에 대한 OCaml 바인딩.
  18. ^ GNU Scientific Library용 Python 인터페이스.
  19. ^ RcppGSL: 'GNU GSL' 벡터매트릭스를 위한 'Rcpp' 통합.
  20. ^ gsl: Gnu Scientific Library의 래퍼.
  21. ^ rb-gsl: Ruby/GSL은 GNU Scientific Library에 대한 Ruby 인터페이스로, Ruby를 사용한 수치 계산용입니다.
  22. ^ rust-gsl: GSL 라이브러리(GNU Scientific Library)의 Rust 바인딩.
  23. ^ 멤버 함수에 대한 포인터입니다.Wayback Machine에서 2004-10-13 아카이브 완료.
  24. ^ o2scl 객체 지향 사이언티픽 컴퓨팅 라이브러리
  25. ^

외부 링크