OK.  My numerical techniques are a bit rusty but the following
function converges to at least 4 decimal places for all except the
extremes for the inverse of the standard normal cumulative
distribution.  And the extremes are well extreme, and I'm using the
approximation to the Normal CDF anyway.  Any comments to improve it
would be appreciated.

Function InvStdCumNormDist (p As Double) As Double
  Const a1 = 0.31938153
  Const a2 = -0.356563782
  Const a3 = 1.781477937
  Const a4 = -1.821255978
  Const a5 = 1.330274429
  Dim L , K, w, dLow,dHigh, d1 As double
  If p<=0 Then p=0.0001
  If p>=1 Then p=0.9999
  If p<0.5 Then
    d1=1-p
  Else
    d1=p
  End If
  dLow=0.0
  dHigh=5.0
  Do
    L=(dLow+dHigh)/2
    K=1.0 / (1.0 + 0.2316419 * L)
    w=1.0 - 1.0 / Sqrt(2.0 * Pi) * Exp(-0.5*L^2) * (a1*K + a2*K^2 +
a3*K^3 + a4*K^4 + a5*K^5)
    If d1-w>0.0 Then
      dLow=L
    Else
      dHigh=L
    End If
  Loop Until Abs(d1-w)<0.000001
  If p<0.5 Then
    Return -L
  Else
    Return L
  End If
End Function

Regards

Paul

On 3/10/06, Paul Rehill <[EMAIL PROTECTED]> wrote:
>
>
> Karen
>
> One more question.  Do you have a good function for the inverse of the 
> standard normal cumulative distribution?
>
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to