GSL?
GNU Scientific Libraries
과학/공학/수학 연구에 사용되는 많은 함수들을 다 만들어 둔 패키지다.

아래 링크에서 구할 수 있다.
http://www.gnu.org/software/gsl/

예전에 공짜로 얻었던 컴퓨터에 리눅스를 설치하고 이걸 갖고 뭘할까 하다가 GSL을 공부해 보기로 마음먹었다.
CPU의 속력이 866MHz밖에 되지 않는 구시대의 유물이지만, 내가 갖고 놀기에는 충분해 보인다.

다음과 같은 것들을 지원한다고 한다.

복소수 방정식의 근
특수 함수들
벡터와 행렬
순열, 조합
정렬
기본 선형대수학
선형 대수학
고유값 시스템
빠른 푸리에 변환
Quadrature 난수
준-난수 수열
난수 분포
통계 히스토그램
N-Tuple
몬테 카를로 적분
Simulated Annealing 미분 방정식
보간법
미분
체비셰프 보간법
Series Acceleration
이산 한켈 변환
근 찾기
최소화
최소 제곱법
물리 상수
IEEE Floating-Point
이산 웨이블릿 변환
Basis splines


그래서. 프로젝트를 정해야 하는데...
그건 나중에 정하고. 아마 그때그때 예제를 조금 응용하는 정도가 되지 않을까...

사용설명서를 읽어보았다.

2.1절에 보면 예제가 있다.
//gsl_example.c
#include <stdio.h>
#include <gsl/gsl_sf_bessel.h>

int main (void)
{
double x = 5.0;
double y = gsl_sf_bessel_J0 (x);
printf ("J0(%g) = %.18e\n", x, y);
return 0;
}
참고로, GSL의 메뉴얼은 GFDL에 의해서 내가 퍼와도 된다.
위의 소스를 실행시키기 위해서

snowall@snowall-desktop:~/projects/gsl_example gcc -o gsl_example gsl_example.c
/tmp/cc3a6993.o: In function `main':
gsl_example.c:(.text+0x1d): undefined reference to `gsl_sf_bessel_J0'
collect2: ld returned 1 exit status

이렇게 에러가 나왔다.
그래서 메뉴얼을 살펴봤다.
2.2 Compling and Linking 을 살펴봤더니

gcc -Wall -I/usr/local/include -c example.c
이렇게 하면 된다고 한다. 그래서 했더니, 바이너리 파일이 만들어지긴 했는데 out 파일이 아니라 o 파일이다. 당연히 실행될리가 없다.
그래서, 다음장인 2.3 Shared Libraries 를 살펴봤다.
gcc -static example.o -lgsl -lgslcblas -lm

이렇게 하라고 시킨다. 그래서 그렇게 했더니 lgslblas가 뭔지 모르겠다고 에러를 뱉었다.
근데, 난 Blas를 설치를 안했으니 당연히 에러가 뜰 것이다. 그래서 lgslblas 옵션을 빼고 컴파일 했다.
된다. ㅋㅋ

2.4 절을 읽어보니 Ansi C와 잘 맞는다고 되어 있어서 그러려니 하면 될 것 같다.

by snowall 2008. 4. 13. 20:49