' Error function:
Sub erf(z As Double) As Double
Dim res, fct, sum As Double
Dim k As Int
sum = 0
For i = 0 To 30
If i = 0 Then fct = 1 Else fct = fct * i
k = 2*i+1
sum = sum + Power(-1,i) * Power(z,k)/(fct*k)
Next
res = 1.1283791670955126 *sum ' = (2/sqrt(cpi)) * sum
Return NumberFormat(res,0,7)
End Sub
'LogNormal density:
Sub DpLogNorm(x As Double, mu As Double,sigma As Double) As Double
Dim res As Double
res = Power(cE,-Power((Logarithm(x,cE)-mu),2)/(2*sigma*sigma)) / (x * sigma * (Sqrt((2*cPI))))
Return NumberFormat(res,0,7)
End Sub
'LogNormal cumulative:
Sub Cplognorm(x As Double, mu As Double,sigma As Double) As Double
Dim res As Double
res = 0.5 + 0.5*erf((Logarithm(x,cE)-mu)/(Sqrt(2)*sigma))
Return NumberFormat(res,0,7)
End Sub