GSLの使い方
2010/08/03
私はプログラムが専門でないこともあって,こういった大規模なライブラリを扱ったことがありません.
なので,メモ書きに使い方を記そうかと思います.
インストール
Debian Lennyではパッケージになっているのでそれを使う.以下のリストにあるパッケージ(iと頭にあるパッケージ)をインストールすればちゃんと動くようだ.
BigOwl:/usr# aptitude search gsl i gsl-bin - GNU 科学ライブラリ (GSL) -- バイナリパッケージ i gsl-ref-html - GNU Scientific Library (GSL) リファレンスマニュアル (HTML形式) i gsl-ref-psdoc - GNU Scientific Library (GSL) リファレンスマニュアル (PostScript) p libgsl-ruby - Ruby bindings for the GNU Scientific Library (GSL) (dummy package) p libgsl-ruby-doc - Documentation for Ruby/GSL (libgsl-ruby) p libgsl-ruby1.8 - Ruby bindings for the GNU Scientific Library (GSL) i libgsl0-dbg - GNU Scientific Library (GSL) -- debug symbols package i libgsl0-dev - GNU Scientific Library (GSL) -- development package i A libgsl0ldbl - GNU Scientific Library (GSL) -- library package p libocamlgsl-ocaml - GNU scientific library for OCaml p libocamlgsl-ocaml-dev - GNU scientific library for OCaml p octave-gsl - GSL binding for Octave p slang-gsl - GNU Scientific Library binding for S-Lang p yorick-yeti-gsl - GSL special functions plugin for the Yorick language BigOwl:/usr#特に,libgsl0-devがないと駄目の模様です.これがヘッダファイルのようです.
動作の確認
例えば,以下のコードをテキストファイルに入力して,一連の作業ができれば大丈夫でしょう.ファイル名はなぜかinterference.c.このプログラムはWikipediaやGSLマニュアル中で例としてそれぞれに載っていたものです.
#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; }コンパイル&実行の例↓
ushi@BigOwl:~/keisan$ gcc $(gsl-config --cflags) interference.c $(gsl-config --libs) ushi@BigOwl:~/keisan$ ./a.out J0(5) = -1.775967713143382920e-01 ushi@BigOwl:~/keisan$
Windowsでのコンパイル
下記のオプションをつけないと,読み込まない.gcc filename.c -lgsl -lgslcblas