InverseGamma Function |
Unit
QESBPCSMath
Declaration
Function InverseGamma(const X: Extended): Extended;
Description
Defined for all values of X.
Accuracy: Gives about 15 digits.
Parameters |
X | Value to process. |
Category
Arithmetic Routines for FloatsImplementation
function InverseGamma (const X: Extended): Extended; var C: array [1..26] of Extended; Z: Extended; XF: Extended; I: Integer; begin C [1] := 1; C [2] := 0.5772156649015329; C [3] := -0.6558780715202538; C [4] := -0.0420026350340952; C [5] := 0.1665386113822915; C [6] := -0.0421977345555443; C [7] := -0.0096219715278770; C [8] := 0.0072189432466630; C [9] := -0.0011651675918591; C [10] := -0.0002152416741149; C [11] := 0.0001280502823882; C [12] := -0.0000201348547807; C [13] := -0.0000012504934821; C [14] := 0.0000011330272320; C [15] := -0.0000002056338417; C [16] := 0.0000000061160950; C [17] := 0.0000000050020075; C [18] := -0.0000000011812746; C [19] := 0.0000000001043427; C [20] := 0.0000000000077823; C [21] := -0.0000000000036968; C [22] := 0.0000000000005100; C [23] := -0.0000000000000206; C [24] := -0.0000000000000054; C [25] := 0.0000000000000014; C [26] := 0.0000000000000001; Result := 0; Z := 1; XF := Frac (X); if XF = 0 then XF := ESBSign (X); for I := 1 to 26 do begin Z := Z * XF; Result := Result + C [I] * Z; end; if X > 0 then begin while XF < X do begin Result := Result / XF; XF := XF + 1; end; end else if X < 0 then begin while XF > X do begin XF := XF - 1; Result := XF * Result; end; end End; |
|