[ 
https://issues.apache.org/jira/browse/MATH-981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13667631#comment-13667631
 ] 

Thomas Neidhart commented on MATH-981:
--------------------------------------

It is not actually more accurate than the existing implementation, at least I 
am not sure as I just compared the existing one with the new one. I have no 
idea yet how accurate the existing implementation is. 

The algorithm itself comes with a so-called refinement procedure to reduce the 
error:

||Method||Error vs. Current||Speed vs. Current||
|New|< 1e-8|~ factor 10 faster|
|New + Refinement|< 1e-10|slightly slower|

Now there are some use-cases where the accuracy of this algorithm is sufficient 
and the speed improvement would be quite interesting. One example is the 
RandomGenerator#nextGaussian() method. Right now, the BitsStreamGenerator 
(which is the base class for many of the fast ones like Well and 
MersenneTwister), does use a clever technique involving trigonometry functions 
to do the transformation from [0, 1] to a normally distributed value. This is 
much faster than calling inverseCumulativeProbability() on a normal 
distribution. The proposed algorithm is even faster than this method, so we 
could consider using it for this purpose.

We could also add this algorithm as FastMath#getInverseCDF(boolean 
errorCorrection) in case somebody wants to use a fast but less accurate variant 
of this.

This is especially interesting for Monte Carlo simulations imho.
                
> An improved algorithm for computing the inverse cumulative probability for 
> the normal distribution
> --------------------------------------------------------------------------------------------------
>
>                 Key: MATH-981
>                 URL: https://issues.apache.org/jira/browse/MATH-981
>             Project: Commons Math
>          Issue Type: Sub-task
>            Reporter: Thomas Neidhart
>            Priority: Minor
>
> The following page outlines an algorithm (and alternative algorithms) to 
> compute the inverse cumulative probability for the normal distribution:
> http://home.online.no/~pjacklam/notes/invnorm/
> An implementation of this is also included in the referred contribution for a 
> Monte Carlo engine.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to