Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
47
Task/Gamma-function/FreeBASIC/gamma-function.freebasic
Normal file
47
Task/Gamma-function/FreeBASIC/gamma-function.freebasic
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
' 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 7
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue