1
2
3
4
5
6
7
8
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;
166
167 v2 = 2 * this.stream.nextDouble() - 1;
168
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 }