(Translated by https://www.hiragana.jp/)
GNU Scientific Library - Wikipedia コンテンツにスキップ

GNU Scientific Library

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
GNU Scientific Library
最新さいしんばん
2.7 / 2021ねん6がつ1にち (3ねんまえ) (2021-06-01)
リポジトリ ウィキデータを編集
対応たいおう言語げんご C言語げんご
種別しゅべつ ライブラリ
ライセンス GNU General Public License
公式こうしきサイト www.gnu.org/software/gsl/
テンプレートを表示ひょうじ

GNU Scientific Library (GSL) は、C言語げんご記述きじゅつされた科学かがく技術ぎじゅつ計算けいさん関数かんすうライブラリである。オープンソースであり、GNU General Public Licenseのもとで配布はいふされている。

このプロジェクトは1996ねんロスアラモス国立こくりつ研究所けんきゅうじょのDr. M. GalassiとDr. J. Theilerの着想ちゃくそうはじまり、計算けいさん物理ぶつり専門せんもん家集かしゅうだん(Dr G. Jungman、Dr B. Gough、Dr J. Davies、R. Priedhorsky、Dr M. Booth、Dr F. Rossi、Dr D. Eddelbuettelら)を中心ちゅうしん作成さくせいされた。

線形せんけい計算けいさんについてはBLASをサポートしており、CBLAS インターフェイスを実装じっそうしている。

Linuxをはじめ、UnixけいOSを中心ちゅうしんにサポートしている。Microsoft Visual Studioようのバイナリもある。

参考さんこう論文ろんぶんのレファレンス、文献ぶんけんとう充実じゅうじつしている (リファレンス・マニュアルには日本語にほんごやくがある)。リファレンス・マニュアルにはサンプル・コードも多数たすう収録しゅうろくされている。PSPPPerl Data Language (en)、O2scl[1]などのフリーウェア・プロジェクトでも利用りようされている。

複素数ふくそすうがたやベクトル/行列ぎょうれつがたなどは ANSI C規定きていされている構造こうぞうたい実装じっそうされており、C++ のクラスではない。そのためたとえば、複素数ふくそすうオブジェクト同士どうし加算かさんが + 演算えんざんおこなえるようになっているわけではなく、加算かさんのための関数かんすう (この場合ばあい gsl_complex_add) を、ふたつの複素数ふくそすうオブジェクトを引数ひきすうとしてばねばならない。なお複素数ふくそすうがたについて、gsl-2.7 以降いこうで C11に対応たいおうするCコンパイラをもちい、 ヘッダファイルを適切てきせつにインクルードすれば、gsl_complex がたを C11標準ひょうじゅん複素数ふくそすうがた同様どうようあつかえるようになった[2]

拡張かくちょう倍精度ばいせいど以上いじょう精度せいどにおける計算けいさんは、変数へんすう内部ないぶ表現ひょうげん言語げんご仕様しよう標準ひょうじゅんされておらず、さらに環境かんきょう依存いぞんして精度せいどおおきく変化へんかするために対応たいおうしていない。

開発かいはつ

[編集へんしゅう]

GSL の開発かいはつチームは、GSL が GNUプロジェクトのパッケージであることを明示めいじしており、GSL のコードはすべてだれもが自由じゆうに、どんな用途ようとにでも使つかえることを保証ほしょうしている。そのために、プロプライエタリなコードや (たとえば 書籍しょせき Numerical Recipes ISBN 4874085601 などの) GNU の定義ていぎするフリーソフトウェアに該当がいとうしないコードとは対立たいりつした開発かいはつ姿勢しせいをとっている。

2011ねん現在げんざいとしに1〜2かいのメンテナンスリリースによるバグ修正しゅうせい対応たいおう基本きほんになっている。一方いっぽうブロックやスライスといったデータ構造こうぞう有用ゆうようせいや C++ 対応たいおう是非ぜひについての議論ぎろんも ML じょうおこなわれており、もし議論ぎろん収束しゅうそくして開発かいはつじんでの合意ごうい形成けいせいされれば将来しょうらいのバージョンで反映はんえいされる可能かのうせいがあるが、具体ぐたいてきなスケジュールを考慮こうりょするような段階だんかいではない。

C++ サポート

[編集へんしゅう]

GSL は C 言語げんごライブラリであるため、C++のクラスから利用りようできる。しかしメンバー関数かんすうへのポインタは、そのかた関数かんすうへのポインタとはことなる[3]ため、利用りようできない。関数かんすうへのポインタは、静的せいてき定義ていぎされた関数かんすう (C言語げんごにおける一般いっぱんてき関数かんすう定義ていぎによるもの) にたいして利用りようする必要ひつようがある。

C++から GSL を利用りようするためのラッパーも複数ふくすうあるが、いずれも不完全ふかんぜんであり、どの開発かいはつもあまり活発かっぱつではないか、停止ていししている。GSL のヘルプ・メイリング・リストの議論ぎろん[4]では、ラッパーを使つかわなくても普通ふつう関数かんすうぶのに支障ししょうはない、ベクトルようにラッパーをつくって使つかっている、線形せんけい代数だいすう目的もくてきならEigen[5]がある、などの情報じょうほうせられている。

なお、Microsoft Visual Studio 2008ようにまとめられたパッケージが公開こうかいされている[6]

言語げんごとのバインディング

[編集へんしゅう]

FORTRAN から GSL のかく関数かんすう利用りようするためのインターフェイスが開発かいはつちゅうであり、βべーたばんがリリースされている[7]。またラッパーを自作じさくしたい場合ばあい情報じょうほう公開こうかいされている[8]

GNU Octave から GSL の特殊とくしゅ関数かんすう利用りようできるパッケージがリリースされている[9]

GSL のホームページ[10]紹介しょうかいされているもののうち、現在げんざい開発かいはつつづいているおも言語げんごバインディングを以下いかげる。

プログラムれい

[編集へんしゅう]

ベッセル関数かんすう計算けいさんする C プログラムのれい以下いかしめ[11]

#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;
}

GNU Make使つかってうえのプログラムをコンパイルし、GSL とリンクしようとする場合ばあい、そのコマンドは Makefile ファイルちゅうでは以下いかのようになる。

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

うえのコマンドで生成せいせいされた実行じっこうファイルを実行じっこうすると、以下いかのように出力しゅつりょくする。計算けいさん精度せいど倍精度ばいせいど実数じっすうである。

J0(5) = -1.775967713143382920e-01

提供ていきょうする機能きのう

[編集へんしゅう]

関連かんれん項目こうもく

[編集へんしゅう]

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ Object-oriented Scientific Computing Library — o2scl 0.926 documentation”. neutronstars.utk.edu. 2021ねん12月18にち閲覧えつらん
  2. ^ Complex Numbers — GSL 2.7 documentation”. www.gnu.org. 2021ねん12月18にち閲覧えつらん
  3. ^ pointer to member function (英語えいご)
  4. ^ C++ラッパーの有無うむかんする質問しつもん返答へんとう (英語えいご)
  5. ^ Eigen ホームページ (英語えいご)
  6. ^ GSL Visual Studio 移植いしょくばん
  7. ^ http://www.lrz-muenchen.de/services/software/mathematik/gsl/fortran/index.html FGSL: A Fortran interface to the GNU Scientific Library (英語えいご)]FGSL 原著げんちょ論文ろんぶん (英語えいご)
  8. ^ Fortranでgsl (日本語にほんご)
  9. ^ GNU Octave の `gsl' パッケージ
  10. ^ GSL のホームページ (英語えいご)
  11. ^ オンライン・マニュアルちゅうのサンプル・プログラム

関連かんれん書籍しょせき

[編集へんしゅう]
  • Mark Galassi, Jim Davies, James Theiler, Brian Gough, Gerard Jungman, Michael Booth, Fabrice Rossi (2001). Gnu Scientific Library Reference Manual, (English), Network Theory Ltd. ISBN 978-0-9541617-0-5 .

外部がいぶリンク

[編集へんしゅう]