' FB 1.05.0 Win64 Const pi = 3.1415926535897932 Const e = 2.7182818284590452 Function gammaStirling (x As Double) As Double Return Sqr(2.0 * pi / x) * ((x / e) ^ x) End Function Function gammaLanczos (x As Double) As Double Dim p(0 To 8) As Double = _ { _ 0.99999999999980993, _ 676.5203681218851, _ -1259.1392167224028, _ 771.32342877765313, _ -176.61502916214059, _ 12.507343278686905, _ -0.13857109526572012, _ 9.9843695780195716e-6, _ 1.5056327351493116e-7 _ } Dim As Integer g = 7 If x < 0.5 Then Return pi / (Sin(pi * x) * gammaLanczos(1-x)) x -= 1 Dim a As Double = p(0) Dim t As Double = x + g + 0.5 For i As Integer = 1 To 8 a += p(i) / (x + i) Next Return Sqr(2.0 * pi) * (t ^ (x + 0.5)) * Exp(-t) * a End Function Print " x", " Stirling",, " Lanczos" Print For i As Integer = 1 To 20 Dim As Double d = i / 10.0 Print Using "#.##"; d; Print , Using "#.###############"; gammaStirling(d); Print , Using "#.###############"; gammaLanczos(d) Next Print Print "Press any key to quit" Sleep