View Javadoc

1   /*
2    * @(#)DistNormal Apr 3, 2003
3    * 
4    * Copyright (c) 2003 Delft University of Technology Jaffalaan 5, 2628 BX Delft,
5    * the Netherlands All rights reserved.
6    * 
7    * This software is proprietary information of Delft University of Technology
8    * The code is published under the General Public License
9    */
10  package nl.tudelft.simulation.jstats.distributions;
11  
12  import nl.tudelft.simulation.jstats.streams.StreamInterface;
13  
14  /***
15   * The Normal distribution. For more information on this distribution see <a
16   * href="http://mathworld.wolfram.com/NormalDistribution.html">
17   * http://mathworld.wolfram.com/NormalDistribution.html </a>
18   * <p>
19   * (c) copyright 2002-2004 <a href="http://www.simulation.tudelft.nl">Delft
20   * University of Technology </a>, the Netherlands. <br>
21   * See for project information <a href="http://www.simulation.tudelft.nl">
22   * www.simulation.tudelft.nl </a> <br>
23   * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
24   * License (GPL) </a>, no warranty <br>
25   * 
26   * @author <a href="http://www.tbm.tudelft.nl/webstaf/alexandv/index.htm">
27   *         Alexander Verbraeck </a> <br>
28   *         <a href="http://www.tbm.tudelft.nl/webstaf/peterja/index.htm"> Peter
29   *         Jacobs </a>
30   * @version 1.10 2004-03-22
31   * @since 1.2
32   */
33  public class DistNormal extends DistContinuous
34  {
35  	/*** mu refers to the mean of the normal distribution */
36  	protected double mu;
37  
38  	/*** mu refers to the mean of the normal distribution */
39  	protected double sigma;
40  
41  	/*** nextNextGaussian is a helper attribute */
42  	private double nextNextGaussian;
43  
44  	/*** haveNextNextGaussian is a helper attribute */
45  	protected boolean haveNextNextGaussian;
46  
47  	/***
48  	 * constructs a normal distribution with mu=0 and sigma=1. Errors of various
49  	 * types, e.g., in the impact point of a bomb; quantities that are the sum
50  	 * of a large number of other quantities by the vitue of the central limit
51  	 * theorem.
52  	 * 
53  	 * @param stream the numberstream
54  	 */
55  	public DistNormal(final StreamInterface stream)
56  	{
57  		super(stream);
58  		this.mu = 0.0;
59  		this.sigma = 1.0;
60  	}
61  
62  	/***
63  	 * constructs a normal distribution with mu=0 and sigma=1
64  	 * 
65  	 * @param stream the numberstream
66  	 * @param mu the medium
67  	 * @param sigma the standard deviation
68  	 */
69  	public DistNormal(final StreamInterface stream, final double mu,
70  			final double sigma)
71  	{
72  		super(stream);
73  		if (sigma >= 0.0)
74  		{
75  			this.sigma = sigma;
76  			this.mu = mu;
77  		} else
78  		{
79  			throw new IllegalArgumentException("Error Normal - sigma<0.0");
80  		}
81  	}
82  
83  	/***
84  	 * @see DistContinuous#draw()
85  	 */
86  	public double draw()
87  	{
88  		return this.mu + this.sigma * nextGaussian();
89  	}
90  
91  	/***
92  	 * returns the cumulative probability of the x-value.
93  	 * 
94  	 * @param x the obsevervation x
95  	 * @return double the cumulative probability
96  	 */
97  	public double getCumulativeProbability(final double x)
98  	{
99  		int z = (int) Math.rint((x - this.mu) / this.sigma * 100);
100 		int absZ = Math.abs(z);
101 		if (absZ > 1000)
102 		{
103 			absZ = 1000;
104 		}
105 		if (z >= 0)
106 		{
107 			return DistNormal.CUMULATIVE_NORMAL_PROPABILITIES[absZ];
108 		}
109 		return 1 - DistNormal.CUMULATIVE_NORMAL_PROPABILITIES[absZ];
110 	}
111 
112 	/***
113 	 * returns the x-value of the given cumulativePropability.
114 	 * 
115 	 * @param cumulativeProbability reflects cum prob
116 	 * @return double the inverse cumulative probability
117 	 */
118 	public double getInverseCumulativeProbability(
119 			final double cumulativeProbability)
120 	{
121 		if (cumulativeProbability < 0 || cumulativeProbability > 1)
122 		{
123 			throw new IllegalArgumentException("1<cumulativeProbability<0 ?");
124 		}
125 		boolean located = false;
126 		double prob = cumulativeProbability;
127 		if (cumulativeProbability < 0.5)
128 		{
129 			prob = 1 - cumulativeProbability;
130 		}
131 		int i = 0;
132 		while (!located)
133 		{
134 			if (DistNormal.CUMULATIVE_NORMAL_PROPABILITIES[i] < prob
135 					&& DistNormal.CUMULATIVE_NORMAL_PROPABILITIES[i + 1] > prob)
136 			{
137 				located = true;
138 			}
139 			i++;
140 		}
141 		if (cumulativeProbability < 0.5)
142 		{
143 			return (0 + i / 100.0) * this.sigma - this.mu;
144 		}
145 		return (0 + i / 100.0) * this.sigma + this.mu;
146 	}
147 
148 	/***
149 	 * Generates the next pseudorandom, Gaussian (normally) distributed double
150 	 * value, with mean 0.0 and standard deviation 1.0 see section 3.4.1 of The
151 	 * Art of Computer Programming, Volume 2 by Donald Knuth.
152 	 * 
153 	 * @return double the next gaussian value
154 	 */
155 	protected synchronized double nextGaussian()
156 	{
157 		if (this.haveNextNextGaussian)
158 		{
159 			this.haveNextNextGaussian = false;
160 			return this.nextNextGaussian;
161 		}
162 		double v1, v2, s;
163 		do
164 		{
165 			v1 = 2 * this.stream.nextDouble() - 1; // between -1.0
166 			// and 1.0
167 			v2 = 2 * this.stream.nextDouble() - 1; // between -1.0
168 			// and 1.0
169 			s = v1 * v1 + v2 * v2;
170 		} while (s >= 1);
171 		double norm = Math.sqrt(-2 * Math.log(s) / s);
172 		this.nextNextGaussian = v2 * norm;
173 		this.haveNextNextGaussian = true;
174 		return v1 * norm;
175 	}
176 
177 	/***
178 	 * @see nl.tudelft.simulation.jstats.distributions.DistContinuous
179 	 *      #probDensity(double)
180 	 */
181 	public double probDensity(final double x)
182 	{
183 		return 1.0
184 				/ (Math.sqrt(2 * Math.PI * Math.pow(this.sigma, 2)))
185 				* Math.exp(-1 * Math.pow(x - this.mu, 2)
186 						/ (2 * Math.pow(this.sigma, 2)));
187 	}
188 
189 	/***
190 	 * @see java.lang.Object#toString()
191 	 */
192 	public String toString()
193 	{
194 		return "Normal(" + this.mu + "," + this.sigma + ")";
195 	}
196 
197 	/***
198 	 * CUMULATIVE_NORMAL_PROPABILITIES represents the NORMAL DISTRIBUTION
199 	 * FUNCTION TABLE. In order to keep this table as fast as possible no x
200 	 * values are stored. The range of the tabel is {0.00,0.01,0.02,...,10.00}
201 	 */
202 	public static final double[] CUMULATIVE_NORMAL_PROPABILITIES = {
203 			0.5000000000000000, 0.5039873616189113, 0.5079763193203305,
204 			0.5119644795160448, 0.5159514436524734, 0.5199368135347197,
205 			0.5239201914458871, 0.5279011802661332, 0.5318793835914418,
206 			0.5358544058520341, 0.5398258524303582, 0.5437933297786074,
207 			0.5477564455357087, 0.5517148086437129, 0.5556680294635363,
208 			0.5596157198900099, 0.5635574934661438, 0.567492965496589,
209 			0.5714217531602216, 0.5753434756217956, 0.5792577541426178,
210 			0.5831642121901748, 0.5870624755466856, 0.5909521724164968,
211 			0.5948329335322977, 0.5987043922600851, 0.6025661847028365,
212 			0.6064179498028396, 0.6102593294426336, 0.6140899685445192,
213 			0.6179095151685767, 0.6217176206091617, 0.6255139394898266,
214 			0.6292981298566381, 0.6330698532698229, 0.6368287748937326,
215 			0.6405745635850643, 0.644306891979308, 0.6480254365753887,
216 			0.6517298778184553, 0.6554199001807951, 0.6590951922408244,
217 			0.6627554467601383, 0.6664003607585898, 0.6700296355873492,
218 			0.6736429769999337, 0.6772400952211824, 0.6808207050141283,
219 			0.684384525744776, 0.6879312814447339, 0.6914607008716991,
220 			0.6949725175677556, 0.6984664699154933, 0.7019423011919023,
221 			0.7053997596200493, 0.7088385984185037, 0.7122585758485337,
222 			0.7156594552589977, 0.719041005128991, 0.722402999108207,
223 			0.7257452160549791, 0.7290674400720636, 0.7323694605400943,
224 			0.7356510721487322, 0.73891207492553, 0.7421522742624731,
225 			0.7453714809402076, 0.7485695111499924, 0.7517461865133215,
226 			0.754901334099275, 0.7580347864395746, 0.761146381541351,
227 			0.764235962897659, 0.7673033794957203, 0.7703484858229172,
228 			0.7733711418705582, 0.7763712131354236, 0.779348570619097,
229 			0.7823030908251122, 0.7852346557539338, 0.7881431528957866,
230 			0.79102847522134, 0.7938905211703059, 0.7967291946379159,
231 			0.7995444049593787, 0.8023360668922485, 0.8051041005968205,
232 			0.8078484316145099, 0.810568990844285, 0.8132657145171739,
233 			0.8159385441688476, 0.8185874266103501, 0.8212123138969823,
234 			0.8238131632953734, 0.8263899372487721, 0.8289426033406134,
235 			0.831471134256341, 0.8339755077435994, 0.8364557065707554,
236 			0.8389117184838284, 0.8413435361618438, 0.8437511571706939,
237 			0.8461345839154543, 0.8484938235912971, 0.8508288881329673,
238 			0.8531397941628848, 0.8554265629379223, 0.8576892202948876,
239 			0.8599277965947512, 0.8621423266656558, 0.8643328497447642,
240 			0.866499409418988, 0.8686420535645871, 0.8707608342857796,
241 			0.872855807852312, 0.8749270346360735, 0.8769745790467864,
242 			0.8789985094668413, 0.8809988981852741, 0.8829758213309686,
243 			0.8849293588050865, 0.886859594212814, 0.8887666147944305,
244 			0.8906505113557653, 0.8925113781980463, 0.8943493130472426,
245 			0.8961644169828942, 0.8979567943664809, 0.8997265527693831,
246 			0.9014738029004713, 0.9031986585333613, 0.9049012364333603,
247 			0.9065816562841962, 0.9082400406144879, 0.9098765147240866,
248 			0.9114912066102397, 0.9130842468937037, 0.9146557687447538,
249 			0.9162059078092082, 0.9177348021344403, 0.9192425920954638,
250 			0.9207294203210978, 0.9221954316202577, 0.9236407729084056,
251 			0.9250655931341809, 0.9264700432062887, 0.9278542759206125,
252 			0.9292184458876369, 0.9305627094602053, 0.9318872246616042,
253 			0.9331921511140636, 0.9344776499676445, 0.9357438838296055,
254 			0.9369910166942079, 0.9382192138730403, 0.9394286419258764,
255 			0.940619468592069, 0.941791862722541, 0.9429459942123697,
256 			0.944082033934012, 0.9452001536711674, 0.9463005260533299,
257 			0.9473833244910284, 0.9484487231117875, 0.94949689669682,
258 			0.9505280206184922, 0.9515422707785594, 0.9525398235471815,
259 			0.9535208557027719, 0.9544855443726583, 0.9554340669746081,
260 			0.9563666011591815, 0.9572833247529947, 0.9581844157028426,
261 			0.9590700520207252, 0.9599404117298032, 0.9607956728112474,
262 			0.9616360131520566, 0.9624616104937792, 0.9632726423822178,
263 			0.9640692861180821, 0.9648517187086078, 0.9656201168201517,
264 			0.9663746567317699, 0.9671155142897785, 0.9678428648633103,
265 			0.9685568833008597, 0.9692577438878406, 0.9699456203051116,
266 			0.9706206855885555, 0.971283112089614, 0.9719330714368619,
267 			0.9725707344985791, 0.9731962713463076, 0.973809851219447,
268 			0.9744116424908279, 0.9750018126333039, 0.9755805281873245,
269 			0.9761479547295168, 0.9767042568422514, 0.9772495980842009,
270 			0.9777841409618732, 0.9783080469021415, 0.9788214762257182,
271 			0.979324588121612, 0.9798175406225412, 0.9803004905813041,
272 			0.9807735936480722, 0.981237004248657, 0.9816908755636616,
273 			0.9821353595085873, 0.9825706067148376, 0.9829967665116119,
274 			0.9834139869087157, 0.9838224145802272, 0.9842221948490532,
275 			0.9846134716723274, 0.9849963876276845, 0.9853710839003452,
276 			0.985737700271045, 0.9860963751047681, 0.9864472453402844,
277 			0.9867904464804915, 0.9871261125835228, 0.9874543762546124,
278 			0.9877753686387415, 0.9880892194139929, 0.988396056785651,
279 			0.9886960074810209, 0.9889891967449299, 0.9892757483359246,
280 			0.989555784523144, 0.9898294260838525, 0.9900967923016145,
281 			0.9903580009651043, 0.9906131683675308, 0.9908624093066779,
282 			0.9911058370855164, 0.9913435635134026, 0.991575698907852,
283 			0.9918023520968361, 0.9920236304216317, 0.9922396397401824,
284 			0.9924504844309792, 0.9926562673974049, 0.992857090072596,
285 			0.9930530524247368, 0.9932442529628207, 0.9934307887428471,
286 			0.9936127553744406, 0.993790247027868, 0.9939633564414762,
287 			0.9941321749294971, 0.9942967923902228, 0.9944572973145361,
288 			0.9946137767947988, 0.9947663165340496, 0.9949150008555357,
289 			0.9950599127125389, 0.9952011336985047, 0.9953387440574476,
290 			0.9954728226946147, 0.9956034471874149, 0.9957306937965966,
291 			0.9958546374776436, 0.9959753518924065, 0.9960929094209239,
292 			0.9962073811734615, 0.9963188370027265, 0.9964273455162624,
293 			0.9965329740889989, 0.9966357888759699, 0.9967358548251734,
294 			0.9968332356905508, 0.9969279940451093, 0.9970201912941401,
295 			0.9971098876885598, 0.9971971423383441, 0.9972820132260181,
296 			0.9973645572202651, 0.9974448300895796, 0.9975228865159886,
297 			0.9975987801088081, 0.9976725634184758, 0.9977442879503817,
298 			0.9978140041787443, 0.9978817615605097, 0.9979476085492539,
299 			0.9980115926090906, 0.9980737602285842, 0.9981341569346482,
300 			0.9981928273064313, 0.9982498149891729, 0.998305162708049,
301 			0.9983589122819604, 0.9984111046372987, 0.9984617798216666,
302 			0.9985109770175317, 0.9985587345558365, 0.9986050899295523,
303 			0.9986500798071501, 0.9986937400460181, 0.9987361057057903,
304 			0.9987772110616016, 0.9988170896172607, 0.9988557741183267,
305 			0.9988932965651068, 0.9989296882255506, 0.9989649796480435,
306 			0.9989992006741035, 0.9990323804509681, 0.9990645474440748,
307 			0.999095729449436, 0.999125953605889, 0.9991552464072354,
308 			0.9991836337142654, 0.9992111407666507, 0.9992377921947238,
309 			0.9992636120311323, 0.9992886237223589, 0.9993128501401143,
310 			0.9993363135925993, 0.9993590358356453, 0.999381038083711,
311 			0.9994023410207445, 0.9994229648109153, 0.9994429291092068,
312 			0.9994622530718738, 0.9994809553667513, 0.9994990541834521,
313 			0.9995165672433891, 0.9995335118096818, 0.9995499046969138,
314 			0.999565762280761, 0.9995811005074615, 0.9995959349031589,
315 			0.9996102805830935, 0.9996241522606701, 0.9996375642563711,
316 			0.9996505305065254, 0.9996630645719558, 0.9996751796464766,
317 			0.9996868885652497, 0.9996982038129988, 0.9997091375321072,
318 			0.999719701530551, 0.9997299072897112, 0.9997397659720517,
319 			0.9997492884286557, 0.9997584852066235, 0.9997673665563579,
320 			0.9997759424386968, 0.9997842225319191, 0.9997922162386252,
321 			0.9997999326924907, 0.999807380764881, 0.999814569071358,
322 			0.9998215059780381, 0.9998281996078514, 0.9998346578466425,
323 			0.9998408883492018, 0.9998468985451213, 0.9998526956445724,
324 			0.999858286643944, 0.9998636783313704, 0.9998688772921471,
325 			0.9998738899140359, 0.9998787223924446, 0.9998833807355126,
326 			0.9998878707690767, 0.9998921981415287, 0.9998963683285831,
327 			0.9999003866379228, 0.9999042582137387, 0.99990798804119,
328 			0.999911580950741, 0.9999150416224173, 0.9999183745899578,
329 			0.9999215842448586, 0.9999246748403525, 0.9999276504952729,
330 			0.9999305151978185, 0.9999332728092672, 0.9999359270675735,
331 			0.9999384815908634, 0.9999409398808894, 0.9999433053263691,
332 			0.9999455812062524, 0.9999477706929066, 0.999949876855225,
333 			0.9999519026616563, 0.9999538509831598, 0.9999557245960793,
334 			0.9999575261849584, 0.9999592583452697, 0.9999609235860767,
335 			0.9999625243326383, 0.9999640629289291, 0.9999655416401065,
336 			0.9999669626549059, 0.9999683280879766, 0.9999696399821539,
337 			0.9999709003106689, 0.9999721109793053, 0.9999732738284871,
338 			0.9999743906353185, 0.9999754631155693, 0.9999764929255975,
339 			0.9999774816642223, 0.9999784308745513, 0.9999793420457469,
340 			0.9999802166147403, 0.9999810559679307, 0.9999818614427762,
341 			0.9999826343293992, 0.9999833758721115, 0.9999840872709006,
342 			0.999984769682885, 0.9999854242237042, 0.9999860519689024,
343 			0.9999866539552403, 0.9999872311819792, 0.9999877846121323,
344 			0.9999883151736708, 0.9999888237607027, 0.9999893112346047,
345 			0.999989778425137, 0.9999902261314975, 0.9999906551233723,
346 			0.9999910661419341, 0.9999914599008299, 0.9999918370871163,
347 			0.999992198362175, 0.9999925443626037, 0.9999928757010765,
348 			0.999993192967172, 0.9999934967281847, 0.9999937875299059,
349 			0.9999940658973759, 0.9999943323356203, 0.9999945873303567,
350 			0.9999948313486832, 0.9999950648397335, 0.9999952882353275,
351 			0.9999955019505884, 0.9999957063845496, 0.9999959019207282,
352 			0.9999960889276895, 0.9999962677595902, 0.9999964387567071,
353 			0.9999966022459394, 0.9999967585412978, 0.9999969079443901,
354 			0.9999970507448684, 0.9999971872208745, 0.9999973176394685,
355 			0.9999974422570479, 0.9999975613197305, 0.9999976750637555,
356 			0.9999977837158475, 0.9999978874935767, 0.9999979866057059,
357 			0.9999980812525245, 0.9999981716261707, 0.9999982579109443,
358 			0.9999983402836066, 0.9999984189136624, 0.999998493963655,
359 			0.9999985655894209, 0.9999986339403611, 0.9999986991596813,
360 			0.9999987613846415, 0.9999988207467845, 0.9999988773721528,
361 			0.9999989313815221, 0.999998982890599, 0.9999990320102132,
362 			0.9999990788465284, 0.9999991235012167, 0.9999991660716405,
363 			0.9999992066510266, 0.99999924532863, 0.9999992821898891,
364 			0.9999993173165908, 0.9999993507870083, 0.999999382676051,
365 			0.9999994130553951, 0.9999994419936197, 0.9999994695563318,
366 			0.999999495806289, 0.9999995208035128, 0.9999995446054075,
367 			0.9999995672668669, 0.9999995888403767, 0.9999996093761104,
368 			0.9999996289220386, 0.9999996475240089, 0.999999665225837,
369 			0.9999996820693978, 0.9999996980947014, 0.9999997133399728,
370 			0.9999997278417341, 0.9999997416348584, 0.9999997547526686,
371 			0.9999997672269785, 0.999999779088168, 0.9999997903652507,
372 			0.9999998010859101, 0.9999998112765858, 0.9999998209625084,
373 			0.9999998301677586, 0.999999838915313, 0.9999998472271051,
374 			0.9999998551240461, 0.9999998626260925, 0.9999998697522797,
375 			0.9999998765207626, 0.999999882948852, 0.9999998890530569,
376 			0.9999998948491172, 0.9999999003520337, 0.9999999055761172,
377 			0.9999999105349969, 0.9999999152416649, 0.9999999197085024,
378 			0.9999999239473055, 0.9999999279693159, 0.9999999317852374,
379 			0.9999999354052702, 0.9999999388391236, 0.9999999420960494,
380 			0.9999999451848542, 0.9999999481139239, 0.9999999508912378,
381 			0.999999953524401, 0.999999956020643, 0.999999958386847,
382 			0.9999999606295614, 0.9999999627550202, 0.999999964769152,
383 			0.9999999666775974, 0.9999999684857224, 0.9999999701986259,
384 			0.9999999718211613, 0.9999999733579436, 0.9999999748133596,
385 			0.9999999761915778, 0.9999999774965675, 0.9999999787320892,
386 			0.9999999799017258, 0.9999999810088808, 0.9999999820567871,
387 			0.9999999830485156, 0.9999999839869854, 0.9999999848749658,
388 			0.9999999857150916, 0.999999986509861, 0.9999999872616481,
389 			0.9999999879727063, 0.9999999886451735, 0.9999999892810812,
390 			0.9999999898823579, 0.9999999904508311, 0.9999999909882377,
391 			0.9999999914962242, 0.9999999919763545, 0.9999999924301094,
392 			0.9999999928588945, 0.9999999932640453, 0.9999999936468255,
393 			0.9999999940084324, 0.9999999943500043, 0.9999999946726192,
394 			0.9999999949772991, 0.9999999952650122, 0.999999995536675,
395 			0.9999999957931576, 0.9999999960352846, 0.999999996263837,
396 			0.9999999964795528, 0.9999999966831338, 0.9999999968752427,
397 			0.9999999970565085, 0.9999999972275259, 0.9999999973888581,
398 			0.9999999975410393, 0.9999999976845725, 0.9999999978199366,
399 			0.9999999979475838, 0.9999999980679412, 0.9999999981814149,
400 			0.999999998288388, 0.9999999983892215, 0.9999999984842588,
401 			0.9999999985738248, 0.9999999986582248, 0.9999999987377505,
402 			0.9999999988126743, 0.9999999988832565, 0.9999999989497415,
403 			0.9999999990123608, 0.9999999990713334, 0.9999999991268663,
404 			0.9999999991791552, 0.9999999992283836, 0.9999999992747264,
405 			0.9999999993183496, 0.9999999993594075, 0.9999999993980476,
406 			0.9999999994344076, 0.9999999994686192, 0.9999999995008081,
407 			0.9999999995310868, 0.9999999995595689, 0.999999999586359,
408 			0.9999999996115511, 0.9999999996352417, 0.9999999996575185,
409 			0.9999999996784616, 0.9999999996981475, 0.9999999997166537,
410 			0.9999999997340464, 0.9999999997503924, 0.9999999997657535,
411 			0.9999999997801852, 0.9999999997937458, 0.9999999998064829,
412 			0.9999999998184489, 0.9999999998296857, 0.9999999998402402,
413 			0.9999999998501493, 0.9999999998594546, 0.9999999998681913,
414 			0.9999999998763954, 0.9999999998840915, 0.9999999998913157,
415 			0.9999999998980964, 0.9999999999044622, 0.9999999999104311,
416 			0.9999999999160324, 0.9999999999212845, 0.9999999999262145,
417 			0.9999999999308378, 0.9999999999351717, 0.999999999939236,
418 			0.9999999999430531, 0.9999999999466233, 0.9999999999499747,
419 			0.9999999999531113, 0.9999999999560638, 0.9999999999588188,
420 			0.9999999999613983, 0.9999999999638182, 0.9999999999660865,
421 			0.9999999999682123, 0.9999999999702063, 0.99999999997208,
422 			0.9999999999738262, 0.9999999999754482, 0.9999999999769803,
423 			0.9999999999784355, 0.999999999979752, 0.9999999999810224,
424 			0.9999999999821866, 0.9999999999832953, 0.9999999999843139,
425 			0.9999999999852993, 0.9999999999861725, 0.9999999999870456,
426 			0.9999999999878133, 0.9999999999885409, 0.9999999999892686,
427 			0.9999999999898902, 0.9999999999904723, 0.9999999999910544,
428 			0.9999999999916365, 0.9999999999920739, 0.9999999999925104,
429 			0.999999999992947, 0.9999999999933835, 0.9999999999938161,
430 			0.999999999994107, 0.9999999999943981, 0.9999999999946891,
431 			0.9999999999949801, 0.9999999999952712, 0.9999999999955622,
432 			0.9999999999958533, 0.9999999999960634, 0.9999999999962089,
433 			0.9999999999963545, 0.9999999999965, 0.9999999999966455,
434 			0.999999999996791, 0.9999999999969366, 0.999999999997082,
435 			0.9999999999972276, 0.9999999999973731, 0.9999999999975187,
436 			0.9999999999976641, 0.9999999999978096, 0.9999999999979552,
437 			0.9999999999981006, 0.9999999999982462, 0.9999999999982816,
438 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
439 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
440 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
441 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
442 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
443 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
444 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
445 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
446 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
447 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
448 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
449 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
450 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
451 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
452 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
453 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
454 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
455 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
456 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
457 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
458 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
459 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
460 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
461 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
462 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
463 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
464 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
465 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
466 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
467 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
468 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
469 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
470 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
471 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
472 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
473 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
474 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
475 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
476 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
477 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
478 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
479 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
480 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
481 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
482 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
483 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
484 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
485 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
486 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
487 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
488 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
489 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
490 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
491 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
492 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
493 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
494 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
495 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
496 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
497 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
498 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
499 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
500 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
501 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
502 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
503 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
504 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
505 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
506 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
507 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
508 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
509 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
510 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
511 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
512 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
513 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
514 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
515 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
516 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
517 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
518 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
519 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
520 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
521 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
522 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
523 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
524 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
525 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
526 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
527 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
528 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
529 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
530 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
531 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
532 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
533 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
534 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
535 			0.9999999999982816, 0.9999999999982816, 0.9999999999982816,
536 			0.9999999999982816, 1.0000000000000000};
537 }