Don't forget the paper "Better approximations to cumulative normal functions" by Graeme West. If I remember correctly, the double precision implementation matches Excel exactly.

Cheers,

Jordy

Indeed. I spent some time on this

1. In C++11 N(x) is essentially a built-in function as already noted.

2. I did extensive (stress) tests (randomly generated parameters) on BVN using Graeeme's code and Quantlib. Same output.

3. As sanity check of 2, I posed BVN as a Goursat PDE that I solved using Box (2nd order) and extrapolated schemes

4. For TVN you can solve it as a Goursat-Fuchs PDE.

5. All tested with Chooser option from Collector's Big Book.

6 So, Excel implements GENZ algorithm?

Tactic 2 (PDE posing) can be posed for any distribution (I examine Student in my 2018 C++ book) and it has a

*gear-box* to tune to desired accuracy.

```
double N(double x)
{ // aka CdfN(x)
return 0.5*std::erfc(-x / std::sqrt(2.0));
}
```