nonius icon indicating copy to clipboard operation
nonius copied to clipboard

Replace boost math functions.

Open bitshifter opened this issue 8 years ago • 2 comments

Tests added using common input values and comparing against the output from original boost::math implementations.

The normal distribution CDF function is taken from the example code at http://en.cppreference.com/w/cpp/numeric/math/erfc.

The erf_inv is based on code accompanying the article "Approximating the erfinv function" in GPU Computing Gems, Volume 2. Orginally I was using the approximation described at https://en.wikipedia.org/wiki/Error_function#Approximation_with_elementary_functions but found them to be a lot less accurate than the boost::math version for some inputs.

I don't have a great background in this kind of maths, I've found algorithm descriptions through Googling and checked correctness by comparing against the values returned by boost math. It seems to be OK.

bitshifter avatar Nov 15 '16 10:11 bitshifter

So this fixes #48? Very cool, thanks! I shall review and merge this with the next batch of free time :D

rmartinho avatar Nov 15 '16 10:11 rmartinho

Yep, I think it should fix #48 :)

bitshifter avatar Nov 15 '16 11:11 bitshifter