As I was working on a research project with graduate students, I became interested in fast and not necessarily very accurate approximations to the normal cdf Φ and its inverse. Reading through this 2010 paper of Richards et al., using for instance Polya’s
(with another version replacing 2/π with the squared root of π/8) and
not to mention a rational faction. All of which are more efficient (in R), if barely, than the resident pnorm() function.
test replications elapsed relative user.self 3 logistic 100000 0.410 1.000 0.410 2 polya 100000 0.411 1.002 0.411 1 resident 100000 0.455 1.110 0.455
For the inverse cdf, the approximations there are involving numerical inversion except for
which proves slightly faster than qnorm()
test replications elapsed relative user.self 2 inv-polya 100000 0.401 1.000 0.401 1 resident 100000 0.450 1.000 0.450