This project has moved and is read-only. For the latest updates, please go here.

No inverse normal distribution PDF ?

Jul 15, 2012 at 6:45 PM


I am enjoying the use of Math.Numerics.

However, although there is an inverse CDF function for the normal distribution, there does not appear to be an inverse PDF.

Is this yet to be provided?


Jul 15, 2012 at 8:18 PM
Edited Jul 15, 2012 at 8:18 PM


PDF's are usually not injective, so technically their inverse is not a function in the mathematical sense. However, we could provide a partial function, similar to the inverse of all the trigonometric functions (e.g. arcsin).

Could you by chance point me to a formula or reference algorithm for the inverse normal pdf?
A quick Mathematica query returns (restricted to real values, but needs to be confirmed):

\[Mu] +- Sqrt[2] Sqrt[\[Sigma]^2 Log[1/(Sqrt[2 \[Pi]] y \[Sigma])]]


Jul 15, 2012 at 10:27 PM
Edited Jul 15, 2012 at 10:29 PM


Thanks for the speedy reply.

Maybe I am using the wrong terminology.

What I am looking for is the equivalent to the Excel NormInv and NormsInv.

Algorithms can be found at this site -

In particular I adapted this - - for my needs.

I have coded it as a standalone module for my .NET applications but seeing as your DLL has everything I could ever need (except the inverse functions) then I would like to get NormInv and NormsInv into Math.Numerics so that I don't have to write my own functions in future.

Thank you.

Jul 16, 2012 at 2:29 AM


Unless I'm mistaken, Excel's NormInv and NormSInv are actually the inverse CDF (and supported by Math.NET Numerics), not the inverse PDF.


  • Excel: NORMINV(0.25; 65.5; 2.5) = 63.81377562
  • Math.NET Numerics: new Normal(65.5, 2.5).InverseCumulativeDistribution(0.25) = 63.8137756245098


Jul 16, 2012 at 9:24 AM
Edited Jul 16, 2012 at 10:06 AM

Okay, got there in the end.

It was a little confusing, with the separation of the mean/deviation and the number.

I guess that is object oriented programming for you.

Jul 16, 2012 at 10:12 AM

Yes, we should provide a few more static functions there for single time use (in cases where you're not actually interested in the distribution itself)