ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cal/cal/norm.cal
Revision: 1.4
Committed: Sun Sep 12 17:04:41 2021 UTC (2 years, 8 months ago) by greg
Branch: MAIN
CVS Tags: rad5R4, HEAD
Changes since 1.3: +7 -1 lines
Log Message:
feat: Added exact calculations

File Contents

# Content
1 { RCSid $Id: norm.cal,v 1.3 2017/04/19 22:09:12 greg Exp $ }
2 {
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 Z(u) : NORMF * exp(-u*u/2) ;
17
18 { ### Old approximation:
19
20 Q2(t) : t*(.31938153+t*(-.356563782+t*(1.781477937+
21 t*(-1.821255978+t*1.330274429)))) ;
22
23 Q1(u) : Z(u) * Q2(1/(1+.2316419*u)) ;
24
25 Q(u) : if( u, Q1(u), 1-Q1(-u) ) ;
26
27 ### erf() gives us exact value: }
28
29 Q(u) : .5 - .5*erf(u/sqrt(2)) ;
30
31 u2(t) : t - (2.515517+t*(.802853+t*.010328))/
32 (1+t*(1.432788+t*(.189269+t*.001308))) ;
33
34 u1(p) : u2(sqrt(-2*log(p))) ;
35
36 u(p) : if( .5-p, u1(p), -u1(1-p) ) ;