The cumulative density function of the normal distribution (CND, or Phi) is defined by @mbozzi as above.
Instead of your function you could compute it from the C++ library using the error function erf(x), which was apparently introduced in the C++11 standard (
http://www.cplusplus.com/reference/cmath/erf/). The relationship is
CND = (1/2)( 1 + erf( x / sqrt(2) ) ) |
The approximation almost certainly comes from an original approximation for the error function given in Abramowitz and Stegun (their equation 7.1.26) - see also
https://en.wikipedia.org/wiki/Error_function
(Note that to compare the constants you will have to play with lots of factors of sqrt(2.pi), sqrt(2); however, they do match.)
Abramowitz and Stegun cite the original reference as:
C.Hastings, Jr, Approximations for digital computers, Princeton University Press, 1955 - I believe this has recently been reprinted. You may find other information on possible original sources at
http://dlmf.nist.gov/7.24
You might also find approximations like this (in C++) in
Numerical Recipes: The Art of Scientific Computing (3rd ed.), New York: Cambridge University Press, 2007 (but I don't have a copy to hand).
Abramowitz and Stegun can be found online at
http://www.cs.bham.ac.uk/~aps/research/projects/as/book.php
It is still a treasure trove of numerical methods for special functions.
I'm not sure that too much can be read into the form
tmp*(A1 + tmp*(A2 + tmp*(A3 + tmp*(A4 + tmp*A5))))
It is simply an efficient way of evaluating polynomials like
a
1t+a
2t
2+a
3t
3+a
4t
4+a
5t
5
EDIT. The precise numbers that you are using come from "Options, futures, and other derivatives" by John Hull - many editions - who has a section on the Cumulative Standard Normal Function. However, he cites Abramowicz and Stegun.