/[MITgcm]/MITgcm_contrib/darwin2/pkg/darwin/invnormal.F
ViewVC logotype

Contents of /MITgcm_contrib/darwin2/pkg/darwin/invnormal.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Apr 13 18:56:24 2011 UTC (14 years, 3 months ago) by jahn
Branch: MAIN
CVS Tags: ctrb_darwin2_ckpt64k_20130723, ctrb_darwin2_ckpt65w_20160512, ctrb_darwin2_ckpt65j_20150225, ctrb_darwin2_ckpt63l_20120405, ctrb_darwin2_ckpt66g_20170424, ctrb_darwin2_ckpt64h_20130528, ctrb_darwin2_ckpt66k_20171025, ctrb_darwin2_ckpt66n_20180118, ctrb_darwin2_ckpt62v_20110413, ctrb_darwin2_ckpt65v_20160409, ctrb_darwin2_ckpt65s_20160114, ctrb_darwin2_ckpt65_20140718, ctrb_darwin2_ckpt64m_20130820, ctrb_darwin2_ckpt66d_20170214, ctrb_darwin2_ckpt64r_20131210, ctrb_darwin2_ckpt65m_20150615, ctrb_darwin2_ckpt65q_20151118, ctrb_darwin2_ckpt65o_20150914, ctrb_darwin2_ckpt64f_20130405, ctrb_darwin2_ckpt63f_20111201, ctrb_darwin2_ckpt64a_20121116, ctrb_darwin2_ckpt65p_20151023, ctrb_darwin2_ckpt64n_20130826, ctrb_darwin2_ckpt65e_20140929, ctrb_darwin2_ckpt64o_20131024, ctrb_darwin2_ckpt64v_20140411, ctrb_darwin2_ckpt64z_20140711, ctrb_darwin2_ckpt65l_20150504, ctrb_darwin2_ckpt65z_20160929, ctrb_darwin2_ckpt65n_20150729, ctrb_darwin2_ckpt62y_20110526, ctrb_darwin2_ckpt64y_20140622, ctrb_darwin2_ckpt65d_20140915, ctrb_darwin2_ckpt64t_20140202, ctrb_darwin2_ckpt66h_20170602, ctrb_darwin2_ckpt64i_20130622, ctrb_darwin2_ckpt62x_20110513, ctrb_darwin2_ckpt64s_20140105, ctrb_darwin2_ckpt62w_20110426, ctrb_darwin2_ckpt64x_20140524, ctrb_darwin2_ckpt63o_20120629, ctrb_darwin2_ckpt64e_20130305, ctrb_darwin2_ckpt65x_20160612, ctrb_darwin2_ckpt66f_20170407, ctrb_darwin2_ckpt63c_20111011, ctrb_darwin2_ckpt63i_20120124, ctrb_darwin2_ckpt65g_20141120, ctrb_darwin2_ckpt63m_20120506, ctrb_darwin2_ckpt63s_20120908, ctrb_darwin2_ckpt65k_20150402, ctrb_darwin2_ckpt63e_20111107, ctrb_darwin2_ckpt64w_20140502, ctrb_darwin2_ckpt63b_20110830, ctrb_darwin2_ckpt63j_20120217, ctrb_darwin2_ckpt66a_20161020, ctrb_darwin2_ckpt63r_20120817, ctrb_darwin2_ckpt64g_20130503, ctrb_darwin2_ckpt64l_20130806, ctrb_darwin2_ckpt63g_20111220, ctrb_darwin2_ckpt65f_20141014, ctrb_darwin2_ckpt64c_20130120, ctrb_darwin2_ckpt63a_20110804, ctrb_darwin2_ckpt66b_20161219, ctrb_darwin2_ckpt64u_20140308, ctrb_darwin2_ckpt64j_20130704, ctrb_darwin2_ckpt65i_20150123, ctrb_darwin2_ckpt66j_20170815, ctrb_darwin2_ckpt65y_20160801, ctrb_darwin2_ckpt63h_20111230, ctrb_darwin2_ckpt63p_20120707, ctrb_darwin2_ckpt66c_20170121, ctrb_darwin2_ckpt65a_20140728, ctrb_darwin2_ckpt65b_20140812, ctrb_darwin2_ckpt65t_20160221, ctrb_darwin2_ckpt64p_20131118, ctrb_darwin2_ckpt63d_20111107, ctrb_darwin2_ckpt63q_20120731, ctrb_darwin2_ckpt63_20110728, ctrb_darwin2_ckpt64b_20121224, ctrb_darwin2_ckpt64d_20130219, ctrb_darwin2_ckpt66o_20180209, ctrb_darwin2_ckpt66e_20170314, ctrb_darwin2_ckpt64_20121012, ctrb_darwin2_ckpt64q_20131118, ctrb_darwin2_baseline, ctrb_darwin2_ckpt64p_20131024, ctrb_darwin2_ckpt65u_20160315, ctrb_darwin2_ckpt65r_20151221, ctrb_darwin2_ckpt66i_20170718, ctrb_darwin2_ckpt63n_20120604, ctrb_darwin2_ckpt63k_20120317, ctrb_darwin2_ckpt65c_20140830, ctrb_darwin2_ckpt62z_20110622, ctrb_darwin2_ckpt66l_20171025, ctrb_darwin2_ckpt65h_20141217, ctrb_darwin2_ckpt66m_20171213, HEAD
darwin2 initial checkin

1 C $Header$
2 C $Name$
3
4 c Inverse normal distribution
5 c returns inverse normal cumulative distribution
6 c from p:[0,1] -> y:[-inf,+inf] centered on mu with stdev of sigma
7 c p is RandNo passed in, y is return variable for deviate
8 c
9 c Scott Grant, Spring 2006
10
11 SUBROUTINE invnormal(y,p,mean,sigma)
12 implicit none
13
14 c local variables
15 real*8 mean
16 real*8 sigma
17 real*8 q
18 real*8 r
19 real*8 x
20 real*8 p
21 real*8 plow
22 real*8 phigh
23 real*8 y
24 real*8 a(6)
25 real*8 b(5)
26 real*8 c(6)
27 real*8 d(4)
28
29
30 c Create random variable from -inf to +inf
31 c Coefficients in rational approximations.
32 a(1) = -3.969683028665376d+01
33 a(2) = 2.209460984245205d+02
34 a(3) = -2.759285104469687d+02
35 a(4) = 1.383577518672690d+02
36 a(5) = -3.066479806614716d+01
37 a(6) = 2.506628277459239d+00
38
39 b(1) = -5.447609879822406d+01
40 b(2) = 1.615858368580409d+02
41 b(3) = -1.556989798598866d+02
42 b(4) = 6.680131188771972d+01
43 b(5) = -1.328068155288572d+01
44
45 c(1) = -7.784894002430293d-03
46 c(2) = -3.223964580411365d-01
47 c(3) = -2.400758277161838d+00
48 c(4) = -2.549732539343734d+00
49 c(5) = 4.374664141464968d+00
50 c(6) = 2.938163982698783d+00
51
52 d(1) = 7.784695709041462d-03
53 d(2) = 3.224671290700398d-01
54 d(3) = 2.445134137142996d+00
55 d(4) = 3.754408661907416d+00
56
57 c Define break-points.
58
59 plow = 0.02425d0
60 phigh = 1.d0 - plow
61
62 c Rational approximation for lower region.
63
64 if ((0.d0 .lt. p) .and. (p .lt. plow))then
65 q = sqrt(-2.0d0*log(p))
66 x = (((((c(1)*q+c(2))*q+c(3))*q+c(4))*q+c(5))*q+c(6)) /
67 & ((((d(1)*q+d(2))*q+d(3))*q+d(4))*q+1.d0)
68 endif
69
70 c Rational approximation for central region.
71
72 if ((plow .le. p).and.(p .le. phigh))then
73 q = p - 0.5d0
74 r = q*q
75 x = (((((a(1)*r+a(2))*r+a(3))*r+a(4))*r+a(5))*r+a(6))*q /
76 & (((((b(1)*r+b(2))*r+b(3))*r+b(4))*r+b(5))*r+1.d0)
77 endif
78
79 c Rational approximation for upper region.
80
81 if ((phigh .lt. p).and.(p .lt. 1.d0))then
82 q = sqrt(-2.0d0*log(1.d0-p))
83 x = -(((((c(1)*q+c(2))*q+c(3))*q+c(4))*q+c(5))*q+c(6)) /
84 & ((((d(1)*q+d(2))*q+d(3))*q+d(4))*q+1.d0)
85 endif
86
87 c Normal Deviate about mean
88 c write(6,*)'DEVIATE',x
89 y = sigma*sqrt(2.0d0)*x + mean
90 c write(6,*)'Normal PDF Value INSIDE:',y
91 c write(6,*)'MEAN:',mean
92 c write(6,*)'SIGMA:',sigma
93
94
95 return
96 end

  ViewVC Help
Powered by ViewVC 1.1.22