1 |
greg |
1.4 |
{ RCSid $Id: norm.cal,v 1.3 2017/04/19 22:09:12 greg Exp $ } |
2 |
greg |
1.1 |
{ |
3 |
|
|
Normal Distribution Functions |
4 |
|
|
|
5 |
|
|
10/20/87 |
6 |
|
|
|
7 |
|
|
Z(u) - normal probability density function |
8 |
|
|
|
9 |
|
|
Q(u) - Z(u) integrated from u to infinity |
10 |
|
|
|
11 |
|
|
u(p) - u for known value p = Q(u) |
12 |
|
|
} |
13 |
|
|
|
14 |
|
|
NORMF : 1/sqrt(2*PI) ; |
15 |
|
|
|
16 |
greg |
1.3 |
Z(u) : NORMF * exp(-u*u/2) ; |
17 |
greg |
1.1 |
|
18 |
greg |
1.4 |
{ ### Old approximation: |
19 |
|
|
|
20 |
greg |
1.3 |
Q2(t) : t*(.31938153+t*(-.356563782+t*(1.781477937+ |
21 |
|
|
t*(-1.821255978+t*1.330274429)))) ; |
22 |
greg |
1.1 |
|
23 |
greg |
1.3 |
Q1(u) : Z(u) * Q2(1/(1+.2316419*u)) ; |
24 |
greg |
1.1 |
|
25 |
greg |
1.3 |
Q(u) : if( u, Q1(u), 1-Q1(-u) ) ; |
26 |
greg |
1.1 |
|
27 |
greg |
1.4 |
### erf() gives us exact value: } |
28 |
|
|
|
29 |
|
|
Q(u) : .5 - .5*erf(u/sqrt(2)) ; |
30 |
|
|
|
31 |
greg |
1.3 |
u2(t) : t - (2.515517+t*(.802853+t*.010328))/ |
32 |
|
|
(1+t*(1.432788+t*(.189269+t*.001308))) ; |
33 |
greg |
1.1 |
|
34 |
greg |
1.3 |
u1(p) : u2(sqrt(-2*log(p))) ; |
35 |
greg |
1.1 |
|
36 |
greg |
1.3 |
u(p) : if( .5-p, u1(p), -u1(1-p) ) ; |