| 原作者 | マーク・ガラッシ、ジェームズ・タイラー、ブライアン・ガフ、ジェラルド・ユングマン他多数 |
|---|---|
| 開発者 | GNU プロジェクト |
| 初回リリース | 1996年5月 |
| 安定版リリース | 2.8 [1]
/ 2024年5月25日 |
| リポジトリ | ftpmirror.gnu.org/gsl/ |
| 書かれた | C |
| タイプ | 数値ライブラリ |
| ライセンス | 2007: GPL-3.0 以降[a] 1996: GPL-2.0 以降[b] |
| Webサイト | www.gnu.org/software/gsl/ |
GNU科学ライブラリ(GSL)は、応用数学と科学における数値計算用のソフトウェアライブラリです。GSLはC言語で書かれていますが、他のプログラミング言語用のラッパーも利用可能です。GSLはGNUプロジェクト[2]の一部であり、 GNU一般公衆利用許諾書に基づいて配布されています。
プロジェクトの歴史
GSLプロジェクトは、1996年にロスアラモス国立研究所の物理学者マーク・ガラッシとジェームズ・タイラーによって開始されました。[3]彼らは、 Netlibなどの広く使用されているがやや時代遅れのFortranライブラリの現代的な代替品を作成することを目指しました。[4]彼らは全体的な設計を実行し、初期のモジュールを作成しました。それが完了すると、彼らは他の科学者を募集して協力してもらいました。
「ライブラリの全体的な開発と主要モジュールの設計と実装」は、ブライアン・ガフとジェラルド・ユングマンによって行われました。[3]他の主な貢献者は、ジム・デイヴィス、リード・プリードホルスキー、M.ブース、F.ロッシでした。 [3]
バージョン 1.0 は 2001 年にリリースされました。その後数年間、ライブラリはゆっくりとしか拡張されませんでした。ドキュメントに記載されているように、メンテナーは追加機能よりも安定性を重視していました。メジャー バージョン 1 は 2013 年 7 月のリリース 1.16 で終了しました。これは 2012 年から 2014 年の 3 年間で唯一の公開アクティビティでした。
2015 年 10 月にバージョン 2.0 が公開され、活発な開発が再開されました。これには、ユーザーが投稿したパッチが含まれています。最新バージョン 2.8 は 2024 年 5 月にリリースされました。
例
次のサンプルプログラムは、5の第一種0次ベッセル関数の値を計算する。 [5]
#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 ); 0を返す; }
サンプル プログラムは、コンパイル時に GSL ライブラリにリンクする必要があります。
$ gcc $( gsl-config --cflags ) example.c $( gsl-config --libs )
出力は以下のように表示され、倍精度の精度で正しいはずです。
J0(5) = -1.775967713143382920e-01
特徴
ソフトウェア ライブラリは次の機能を提供します。
プログラミング言語バインディング
GSLはC言語で書かれているので、他のプログラミング言語用のラッパーを提供するのは簡単です。現在、そのようなラッパーは以下で存在します。
- AMP [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]これらのすべてが定期的にメンテナンスされているわけではありません。これらは、GSLのmallocおよびfree関数のインターフェースを使用せずに、行列クラスとベクトルクラスへのアクセスを提供します。いくつかは、スマートポインタークラスのように動作するワークスペースの作成もサポートしています。最後に、(2020年4月時点では限定的ですが)パラメーター化された関数を関数として表すクラスをユーザーが作成できるようにするためのサポートがあります。
厳密にはラッパーではありませんが、C++ユーザーがラッパー機能を使用してGnu Scientific Libraryを使用できるようにする C++クラス[24] [25]がいくつかあります。
参照
注記
- ^ 2007-07-02 以降は GPL-3.0 です。
- ^ 1996-07-08 から 2007-07-02 までは GPL-2.0 以降。
参考文献
- ^ 「GSL 2.8 がリリースされました」。
- ^ 「GNU - フリーソフトウェアディレクトリ」。
- ^ abc GSLホームページ。
- ^ GSL 設計ドキュメント。
- ^ ライブラリの使用。サンプルプログラム。GSL ドキュメント。
- ^ GNU Scientific Library の AMPL バインディング。Wayback Machineに 2021-10-28 にアーカイブされています。
- ^ ab ccgsl: GNU 科学ライブラリ用の C++ インターフェース。
- ^ ab GSL - C++ wrappers for GSL Archived 2015-01-29 at the Wayback Machine ;
- ^ ab GSLwrap: GNU Scientific Library 用の C++ ラッパー クラス。
- ^ ab gslcpp: GNU 科学ライブラリをラップするヘッダーのみの最新 C++ ライブラリ。
- ^ FGSL - GNU 科学ライブラリへの Fortran インターフェース。
- ^ hmatrix-special パッケージ、GSL 特殊関数へのインターフェース。
- ^ hmatrix-gsl パッケージは、選択された数値計算への純粋に機能的なインターフェースであり、内部的には GSL を使用して実装されています。
- ^ GSL 用の JavaCPP プリセット。
- ^ GSL への Julia インターフェース。
- ^ GSLL、Lisp 用の GNU 科学ライブラリ。
- ^ gsl-ocaml: GSL への OCaml バインディング。
- ^ GNU Scientific Library 用の Python インターフェース。
- ^ RcppGSL: 「GNU GSL」ベクトルおよび行列の「Rcpp」統合。
- ^ gsl: Gnu Scientific Library のラッパー。
- ^ rb-gsl: Ruby/GSL は、Ruby による数値計算のための、GNU Scientific Library への Ruby インターフェースです。
- ^ rust-gsl: GSL ライブラリ (GNU Scientific Library) 用の Rust バインディング。
- ^ メンバー関数へのポインタ。Wayback Machineに 2004-10-13 にアーカイブされています。
- ^ o2scl オブジェクト指向科学計算ライブラリ;
- ^ yat [永久リンク切れ ]。
外部リンク
- 公式サイト
- GSL 設計ドキュメント
- R (プログラミング言語)用の gsl パッケージ。特殊関数と準乱数ジェネレーターの R ラッパーです。
- FLOSS FOR SCIENCE が Mark Galassi 氏に GSL の歴史についてインタビューしました。
