GNU 과학 라이브러리
GNU Scientific Library원저작자 | 마크 갈라시, 제임스 테일러, 브라이언 고프, 제라드 융먼 외 다수 |
---|---|
개발자 | GNU 프로젝트 |
초기 릴리즈 | 1996년 5월, | 전(
안정된 릴리스 | 2[1].7.1 / 2021년 11월 30일 |
저장소 | ftpmirror |
기입처 | C |
유형 | 수치 라이브러리 |
면허증. | 2007: GPL-3.0 이후[a] 1996: GPL-2.0 이후[b] |
웹 사이트 | www |
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로 기술되어 있기 때문에 다른 프로그래밍 언어에 대한 래퍼를 제공하는 것은 간단합니다.이러한 래퍼는 현재 다음에 대해 존재합니다.
- 앰프[6]
- C++[7][8][9][10]
- 포트란[11]
- 하스켈[12][13]
- 자바[14]
- 줄리아.[15]
- 일반적인 리스프[16]
- 오카멜[17]
- 옥타브
- Perl 데이터 언어
- 파이썬[18]
- R[19][20]
- 루비[21]
- 녹[22]
C++ 지원
GSL은 C++ 클래스에서 사용할 수 있지만 [23]멤버 함수에 대한 포인터 유형은 포인터마다 다르기 때문에 멤버 함수에 대한 포인터를 사용할 수 없습니다.대신 정적 함수에 대한 포인터를 사용해야 합니다.또 하나의 일반적인 회피책은 펑터를 사용하는 것입니다.
GSL용 C++ 래퍼를 사용할 [7][8][9][10]수 있습니다.이 모든 것이 정기적으로 유지되는 것은 아닙니다.malloc 및 free 함수를 사용하기 위해 GSL의 인터페이스를 사용할 필요 없이 매트릭스 및 벡터 클래스에 액세스할 수 있습니다.또, 스마트 포인터 클래스처럼 동작하는 워크스페이스의 작성도 서포트하고 있습니다.마지막으로, 사용자가 함수로서 매개 변수화된 함수를 나타내는 클래스를 만들 수 있도록 하기 위한 지원(2020년 4월 현재로 제한됨)이 있다.
엄밀하게 랩퍼는 아니지만 C++ 사용자가 Gnu Scientific Library를 래퍼 기능과 함께 사용할 수 있는 C++ 클래스가 있습니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ "relase 2.7.1 to fix libtool version numbers".
- ^ "GNU - Free Software Directory".
- ^ a b c GSL 홈페이지
- ^ GSL 설계 문서.
- ^ 라이브러리 사용. 샘플 프로그램GSL 매뉴얼
- ^ GNU Scientific Library용 AMP 바인딩.
- ^ a b ccgsl: GNU Scientific Library용 C++ 인터페이스.
- ^ a b GSL - GSL용 C++ 래퍼
- ^ a b GSLwrap: GNU Scientific Library용 C++ 래퍼 클래스.
- ^ a b gslcpp: GNU Scientific Library를 래핑하는 헤더 전용 최신 C++ 라이브러리.
- ^ FGSL - GNU Scientific Library에 대한 Fortran 인터페이스.
- ^ GSL 특수 기능에 대한 인터페이스인 Hmatrix 특수 패키지.
- ^ 선택된 수치 계산에 대한 순수 기능 인터페이스인hmatrix-gsl 패키지는 GSL을 사용하여 내부적으로 구현된다.
- ^ GSL용 JavaCPP 프리셋
- ^ GSL에 대한 Julia 인터페이스
- ^ GSLL, GNU Scientific Library for Lisp.
- ^ gsl-ocaml: GSL에 대한 OCaml 바인딩.
- ^ GNU Scientific Library용 Python 인터페이스.
- ^ RcppGSL: 'GNU GSL' 벡터 및 매트릭스를 위한 'Rcpp' 통합.
- ^ gsl: Gnu Scientific Library의 래퍼.
- ^ rb-gsl: Ruby/GSL은 GNU Scientific Library에 대한 Ruby 인터페이스로, Ruby를 사용한 수치 계산용입니다.
- ^ rust-gsl: GSL 라이브러리(GNU Scientific Library)의 Rust 바인딩.
- ^ 멤버 함수에 대한 포인터입니다.Wayback Machine에서 2004-10-13 아카이브 완료.
- ^ o2scl 객체 지향 사이언티픽 컴퓨팅 라이브러리
- ^ 얏