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
60
Task/Gamma-function/Visual-FoxPro/gamma-function.visual
Normal file
60
Task/Gamma-function/Visual-FoxPro/gamma-function.visual
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
LOCAL i As Integer, x As Double, o As lanczos
|
||||
CLOSE DATABASES ALL
|
||||
CLEAR
|
||||
CREATE CURSOR results (ZVal B(1), GamVal B(15))
|
||||
INDEX ON zval TAG ZVal COLLATE "Machine"
|
||||
SET ORDER TO 0
|
||||
o = CREATEOBJECT("lanczos")
|
||||
FOR i = 1 TO 20
|
||||
x = i/10
|
||||
INSERT INTO results VALUES (x, o.Gamma(x))
|
||||
ENDFOR
|
||||
UPDATE results SET GamVal = ROUND(GamVal, 0) WHERE ZVal = INT(ZVal)
|
||||
*!* This just creates the output text - it is not part of the algorithm
|
||||
DO cursor2txt.prg WITH "results", .T.
|
||||
|
||||
DEFINE CLASS lanczos As Session
|
||||
#DEFINE FPF 5.5
|
||||
#DEFINE HALF 0.5
|
||||
#DEFINE PY PI()
|
||||
DIMENSION LanCoeff[7]
|
||||
nSize = 0
|
||||
|
||||
PROCEDURE Init
|
||||
DODEFAULT()
|
||||
WITH THIS
|
||||
.LanCoeff[1] = 1.000000000190015
|
||||
.LanCoeff[2] = 76.18009172947146
|
||||
.LanCoeff[3] = -86.50532032941677
|
||||
.LanCoeff[4] = 24.01409824083091
|
||||
.LanCoeff[5] = -1.231739572450155
|
||||
.LanCoeff[6] = 0.0012086509738662
|
||||
.LanCoeff[7] = -0.000005395239385
|
||||
.nSize = ALEN(.LanCoeff)
|
||||
ENDWITH
|
||||
ENDPROC
|
||||
|
||||
FUNCTION Gamma(z)
|
||||
RETURN EXP(THIS.LogGamma(z))
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION LogGamma(z)
|
||||
LOCAL a As Double, b As Double, i As Integer, j As Integer, lg As Double
|
||||
IF z < 0.5
|
||||
lg = LOG(PY/SIN(PY*z)) - THIS.LogGamma(1 - z)
|
||||
ELSE
|
||||
WITH THIS
|
||||
z = z - 1
|
||||
b = z + FPF
|
||||
a = .LanCoeff[1]
|
||||
FOR i = 2 TO .nSize
|
||||
j = i - 1
|
||||
a = a + .LanCoeff[i]/(z + j)
|
||||
ENDFOR
|
||||
lg = (LOG(SQRT(2*PY)) + LOG(a) - b) + LOG(b)*(z + HALF)
|
||||
ENDWITH
|
||||
ENDIF
|
||||
RETURN lg
|
||||
ENDFUNC
|
||||
|
||||
ENDDEFINE
|
||||
Loading…
Add table
Add a link
Reference in a new issue