[Abramowitz and Stegun (6.5.1); NIST DLMF 8.2.4]。複素関数サポートが
あれば、a と z は real(a) > 0 の複素数値も許されます。 逆に、上方不完全ガンマ関数に関しては、以下参照: uigamma (16.3.18)。
igamma (a, z) = P(a, z) = za(a, z) = ta-1e-tdt
a, z の値に依存して、以下の 4 つのアルゴリズムを使用します。
ケース (1) a が大きく (>100) (z-a)/a が小さい (<0.2) 場合、
Numerical Recipes 第 3 版 6.2 節 (2007) にある係数での Gauss-Legendre
数値積分公式を利用します。
ケース (2) z > 1 で z > (a+2) の場合、Shea (1988) J. Royal Stat. Soc.
Series C (Applied Statistics) 37:466-473 の連分数を利用します。
ケース (3) z < 0 で a < 75 で imag(a) == 0 の場合は、Abramowitz &
Stegun (6.5.29) の数列を利用します。
ケース (4) その他の場合は、Peason の級数展開を利用します。
全平面では、ある領域でその収束は良くないことに注意してください。選択し たアルゴリズムで 1.E-14 の範囲で収束しなければ、関数は NaN を返し、警 告を表示します。
複素関数サポートがない場合は、定義域は実数の引数の a > 0, z >= 0 に制 限されます。
竹野茂治@新潟工科大学