nonius
nonius copied to clipboard
Replace boost math functions.
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.
So this fixes #48? Very cool, thanks! I shall review and merge this with the next batch of free time :D
Yep, I think it should fix #48 :)