25 プラグイン (Plugins)

グラフや数式に利用できる関数群は、共有ライブラリから実行可能な関数を取 り込むプラグインの仕組みにより拡張できます。例えば、gnuplot のバージョ ン 5.4 では、上方不完全ガンマ関数 Q(a,x) は組み込み関数としては実装し ていませんでした。
Q(a, x) = ${\frac{{1}}{{\Gamma(x)}}}$$\intop_{{x}}^{{\infty}}$ta-1e-tdt .        これは、gnuplot 内で直接以下のようにして近似的に定義できます。


     Q(a,x) = 1. - igamma(a,x)

しかし、これは、1 の近くの igamma(a,x) の値の精度に実質的な限界があり ます。より正確な値を返す実装が欲しい場合、プラグインを通して用意するの がいいでしょう (下を参照)。一度取り込めば、関数は、gnuplot 内の他の組 み込み関数、ユーザ定義関数と全く同様に利用できます。 以下参照: import (94)

gnuplot の配布物のディレクトリ demo/plugin には、プラグインライブラリ を生成するための説明とソースコードがあります。簡単なサンプルファイル demo_plugin.c の関数を、あなたの興味ある関数の実装に置き換えて修正し てください。 これには、外部の数学ライブラリの関数の呼び出しも含まれています。

ディレクトリ demo/plugin には、Q(a,x) を実装するプラグインのソースも あります。上で注意したように、このプラグインは、gnuplot バージョン 6 に含まれる uigamma と同じ関数を、以前のバージョンに実装することを可 能にします。


    import Q(a,x) from "uigamma_plugin"
    uigamma(a,x) = ((x<1 || x<a) ? 1.0-igamma(a,x) : Q(a,x))

竹野茂治@新潟工科大学
2023-09-28