GSLの使い方

2010/08/03未分類import
GNU Scientific Libraryの略です.C言語の数値計算用のライブラリです.
私はプログラムが専門でないこともあって,こういった大規模なライブラリを扱ったことがありません.
なので,メモ書きに使い方を記そうかと思います.

インストール

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