From a50ccbd240a958c32078352021b677c5476d734e Mon Sep 17 00:00:00 2001 From: Thomas Turner Date: Tue, 7 Mar 2017 16:36:15 -0800 Subject: [PATCH] avutil/tests/lfg.c: added proper normality test The Chen-Shapiro(CS) test was used to test normality for Lagged Fibonacci PRNG. Normality Hypothesis Test: The null hypothesis formally tests if the population the sample represents is normally-distributed. For CS, when the normality hypothesis is True, the distribution of QH will have a mean close to 1. Information on CS can be found here: http://www.stata-journal.com/sjpdf.html?articlenum=st0264 http://www.originlab.com/doc/Origin-Help/NormalityTest-Algorithm Signed-off-by: Thomas Turner Signed-off-by: Michael Niedermayer --- libavutil/tests/lfg.c | 164 ++++++- tests/fate/libavutil.mak | 4 + tests/ref/fate/lfg | 1007 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 1153 insertions(+), 22 deletions(-) create mode 100644 tests/ref/fate/lfg diff --git a/libavutil/tests/lfg.c b/libavutil/tests/lfg.c index 1425e026b4..9e908d2a90 100644 --- a/libavutil/tests/lfg.c +++ b/libavutil/tests/lfg.c @@ -20,6 +20,85 @@ #include "libavutil/timer.h" #include "libavutil/lfg.h" +static const double Z_TABLE[31][10] = { + {0.5000, 0.5040, 0.5080, 0.5120, 0.5160, 0.5199, 0.5239, 0.5279, 0.5319, 0.5359}, + {0.5398, 0.5438, 0.5478, 0.5517, 0.5557, 0.5596, 0.5636, 0.5675, 0.5714, 0.5753}, + {0.5793, 0.5832, 0.5871, 0.5910, 0.5948, 0.5987, 0.6026, 0.6064, 0.6103, 0.6141}, + {0.6179, 0.6217, 0.6255, 0.6293, 0.6331, 0.6368, 0.6406, 0.6443, 0.6480, 0.6517}, + {0.6554, 0.6591, 0.6628, 0.6664, 0.6700, 0.6736, 0.6772, 0.6808, 0.6844, 0.6879}, + {0.6915, 0.6950, 0.6985, 0.7019, 0.7054, 0.7088, 0.7123, 0.7157, 0.7190, 0.7224}, + {0.7257, 0.7291, 0.7324, 0.7357, 0.7389, 0.7422, 0.7454, 0.7486, 0.7517, 0.7549}, + {0.7580, 0.7611, 0.7642, 0.7673, 0.7704, 0.7734, 0.7764, 0.7794, 0.7823, 0.7852}, + {0.7881, 0.7910, 0.7939, 0.7967, 0.7995, 0.8023, 0.8051, 0.8078, 0.8106, 0.8133}, + {0.8159, 0.8186, 0.8212, 0.8238, 0.8264, 0.8289, 0.8315, 0.8340, 0.8365, 0.8389}, + {0.8413, 0.8438, 0.8461, 0.8485, 0.8508, 0.8531, 0.8554, 0.8577, 0.8599, 0.8621}, + {0.8643, 0.8665, 0.8686, 0.8708, 0.8729, 0.8749, 0.8770, 0.8790, 0.8810, 0.8830}, + {0.8849, 0.8869, 0.8888, 0.8907, 0.8925, 0.8944, 0.8962, 0.8980, 0.8997, 0.9015}, + {0.9032, 0.9049, 0.9066, 0.9082, 0.9099, 0.9115, 0.9131, 0.9147, 0.9162, 0.9177}, + {0.9192, 0.9207, 0.9222, 0.9236, 0.9251, 0.9265, 0.9279, 0.9292, 0.9306, 0.9319}, + {0.9332, 0.9345, 0.9357, 0.9370, 0.9382, 0.9394, 0.9406, 0.9418, 0.9429, 0.9441}, + {0.9452, 0.9463, 0.9474, 0.9484, 0.9495, 0.9505, 0.9515, 0.9525, 0.9535, 0.9545}, + {0.9554, 0.9564, 0.9573, 0.9582, 0.9591, 0.9599, 0.9608, 0.9616, 0.9625, 0.9633}, + {0.9641, 0.9649, 0.9656, 0.9664, 0.9671, 0.9678, 0.9686, 0.9693, 0.9699, 0.9706}, + {0.9713, 0.9719, 0.9726, 0.9732, 0.9738, 0.9744, 0.9750, 0.9756, 0.9761, 0.9767}, + {0.9772, 0.9778, 0.9783, 0.9788, 0.9793, 0.9798, 0.9803, 0.9808, 0.9812, 0.9817}, + {0.9821, 0.9826, 0.9830, 0.9834, 0.9838, 0.9842, 0.9846, 0.9850, 0.9854, 0.9857}, + {0.9861, 0.9864, 0.9868, 0.9871, 0.9875, 0.9878, 0.9881, 0.9884, 0.9887, 0.9890}, + {0.9893, 0.9896, 0.9898, 0.9901, 0.9904, 0.9906, 0.9909, 0.9911, 0.9913, 0.9916}, + {0.9918, 0.9920, 0.9922, 0.9925, 0.9927, 0.9929, 0.9931, 0.9932, 0.9934, 0.9936}, + {0.9938, 0.9940, 0.9941, 0.9943, 0.9945, 0.9946, 0.9948, 0.9949, 0.9951, 0.9952}, + {0.9953, 0.9955, 0.9956, 0.9957, 0.9959, 0.9960, 0.9961, 0.9962, 0.9963, 0.9964}, + {0.9965, 0.9966, 0.9967, 0.9968, 0.9969, 0.9970, 0.9971, 0.9972, 0.9973, 0.9974}, + {0.9974, 0.9975, 0.9976, 0.9977, 0.9977, 0.9978, 0.9979, 0.9979, 0.9980, 0.9981}, + {0.9981, 0.9982, 0.9982, 0.9983, 0.9984, 0.9984, 0.9985, 0.9985, 0.9986, 0.9986}, + {0.9987, 0.9987, 0.9987, 0.9988, 0.9988, 0.9989, 0.9989, 0.9989, 0.9990, 0.9990} }; + +// Inverse cumulative distribution function +static double inv_cdf(double u) +{ + const double a[4] = { 2.50662823884, + -18.61500062529, + 41.39119773534, + -25.44106049637}; + + const double b[4] = {-8.47351093090, + 23.08336743743, + -21.06224101826, + 3.13082909833}; + + const double c[9] = {0.3374754822726147, + 0.9761690190917186, + 0.1607979714918209, + 0.0276438810333863, + 0.0038405729373609, + 0.0003951896511919, + 0.0000321767881768, + 0.0000002888167364, + 0.0000003960315187}; + + double r; + double x = u - 0.5; + + // Beasley-Springer + if (fabs(x) < 0.42) { + + double y = x * x; + r = x * (((a[3]*y+a[2])*y+a[1])*y+a[0]) / + ((((b[3]*y+b[2])*y+b[1])*y+b[0])*y+1.0); + } + else {// Moro + r = u; + if (x > 0.0) + r = 1.0 - u; + r = log(-log(r)); + r = c[0] + r*(c[1]+r*(c[2]+r*(c[3]+r*(c[4]+r*(c[5]+r*(c[6]+ + r*(c[7]+r*c[8]))))))); + if (x < 0.0) + r = -r; + } + + return r; +} int main(void) { int x = 0; @@ -41,34 +120,75 @@ int main(void) { double mean = 1000; double stddev = 53; - double samp_mean = 0.0, samp_stddev = 0.0; - double samp0, samp1; + double samp_mean = 0.0, samp_stddev = 0.0, QH = 0; + double Z, p_value = -1, tot_samp = 1000; + double *PRN_arr = av_malloc_array(tot_samp, sizeof(double)); - av_lfg_init(&state, 42); + if (!PRN_arr) { + fprintf(stderr, "failed to allocate memory!\n"); + return 1; + } - for (i = 0; i < 1000; i += 2) { + av_lfg_init(&state, 42); + for (i = 0; i < tot_samp; i += 2) { double bmg_out[2]; av_bmg_get(&state, bmg_out); - samp0 = bmg_out[0] * stddev + mean; - samp1 = bmg_out[1] * stddev + mean; - samp_mean += samp0 + samp1; - samp_stddev += samp0 * samp0 + samp1 * samp1; - av_log(NULL, AV_LOG_INFO, - "%f\n%f\n", - samp0, - samp1); + PRN_arr[i ] = bmg_out[0] * stddev + mean; + PRN_arr[i+1] = bmg_out[1] * stddev + mean; + samp_mean += PRN_arr[i] + PRN_arr[i+1]; + samp_stddev += PRN_arr[i] * PRN_arr[i] + PRN_arr[i+1] * PRN_arr[i+1]; + printf("PRN%d : %f\n" + "PRN%d : %f\n", + i, PRN_arr[i], i+1, PRN_arr[i+1]); } - /* TODO: add proper normality test */ - samp_mean /= 1000; - samp_stddev /= 999; - samp_stddev -= (1000.0/999.0)*samp_mean*samp_mean; + samp_mean /= tot_samp; + samp_stddev /= (tot_samp - 1); + samp_stddev -= (tot_samp * 1.0 / (tot_samp - 1))*samp_mean*samp_mean; samp_stddev = sqrt(samp_stddev); - av_log(NULL, AV_LOG_INFO, "sample mean : %f\n" - "true mean : %f\n" - "sample stddev: %f\n" - "true stddev : %f\n", - samp_mean, mean, samp_stddev, stddev); - } + Z = (mean - samp_mean) / (stddev / sqrt(tot_samp)); + { + int x, y, a, b, flag = 0; + + if (Z < 0.0) { + flag = !flag; + Z = Z * -1.0; + } + + a = (int)(Z * 100); + b = ((int)Z * 100); + x = Z * 10; + y = (b > 0) ? a % b : a; + y = y % 10; + if (x > 30 || y > 9) { + av_log(NULL, AV_LOG_INFO, "error: out of bounds! tried to access" + "Z_TABLE[%d][%d]\n", x, y); + goto SKIP; + } + p_value = flag ? 1 - Z_TABLE[x][y] : Z_TABLE[x][y]; + } +SKIP: for (i = 0; i < tot_samp; ++i) { + + if ( i < (tot_samp - 1)) { + double H_diff; + H_diff = inv_cdf((i + 2.0 - (3.0/8.0)) / (tot_samp + (1.0/4.0))); + H_diff -= inv_cdf((i + 1.0 - (3.0/8.0)) / (tot_samp + (1.0/4.0))); + + QH += ((PRN_arr[i + 1] - PRN_arr[i]) / H_diff); + } + } + QH = 1.0 - QH / ((tot_samp - 1.0) * samp_stddev); + + printf("sample mean : %f\n" + "true mean : %f\n" + "sample stddev: %f\n" + "true stddev : %f\n" + "z-score : %f\n" + "p-value : %f\n" + "QH[normality]: %f\n", + samp_mean, mean, samp_stddev, stddev, Z, p_value, QH); + + av_freep(&PRN_arr); + } return 0; } diff --git a/tests/fate/libavutil.mak b/tests/fate/libavutil.mak index a7bf739dff..2e3830ed88 100644 --- a/tests/fate/libavutil.mak +++ b/tests/fate/libavutil.mak @@ -101,6 +101,10 @@ FATE_LIBAVUTIL += fate-imgutils fate-imgutils: libavutil/tests/imgutils$(EXESUF) fate-imgutils: CMD = run libavutil/tests/imgutils +FATE_LIBAVUTIL += fate-lfg +fate-lfg: libavutil/tests/lfg$(EXESUF) +fate-lfg: CMD = run libavutil/tests/lfg + FATE_LIBAVUTIL += fate-md5 fate-md5: libavutil/tests/md5$(EXESUF) fate-md5: CMD = run libavutil/tests/md5 diff --git a/tests/ref/fate/lfg b/tests/ref/fate/lfg new file mode 100644 index 0000000000..2d00f4d8a2 --- /dev/null +++ b/tests/ref/fate/lfg @@ -0,0 +1,1007 @@ +PRN0 : 993.985459 +PRN1 : 1033.987435 +PRN2 : 1047.662570 +PRN3 : 1063.912250 +PRN4 : 991.171781 +PRN5 : 981.734708 +PRN6 : 970.361179 +PRN7 : 998.599410 +PRN8 : 1001.562108 +PRN9 : 1094.675286 +PRN10 : 1026.730733 +PRN11 : 1001.794662 +PRN12 : 1063.992962 +PRN13 : 1003.176291 +PRN14 : 975.451418 +PRN15 : 963.164272 +PRN16 : 1035.042964 +PRN17 : 936.289221 +PRN18 : 1031.696061 +PRN19 : 1033.960882 +PRN20 : 970.449088 +PRN21 : 910.742009 +PRN22 : 1062.832837 +PRN23 : 972.315035 +PRN24 : 1094.553302 +PRN25 : 1004.366061 +PRN26 : 1067.940967 +PRN27 : 954.763340 +PRN28 : 923.089263 +PRN29 : 1053.286222 +PRN30 : 1012.639887 +PRN31 : 948.568149 +PRN32 : 1027.339362 +PRN33 : 953.080426 +PRN34 : 1035.425106 +PRN35 : 966.976740 +PRN36 : 1064.841657 +PRN37 : 904.714740 +PRN38 : 1054.112231 +PRN39 : 986.084454 +PRN40 : 964.995134 +PRN41 : 1064.898415 +PRN42 : 1049.385860 +PRN43 : 946.010664 +PRN44 : 914.563520 +PRN45 : 1054.057798 +PRN46 : 921.007266 +PRN47 : 1055.600575 +PRN48 : 984.003285 +PRN49 : 1064.479044 +PRN50 : 989.128936 +PRN51 : 972.772486 +PRN52 : 1028.824527 +PRN53 : 948.999392 +PRN54 : 926.982512 +PRN55 : 1028.107269 +PRN56 : 1018.971292 +PRN57 : 979.049159 +PRN58 : 1078.652930 +PRN59 : 1059.268785 +PRN60 : 966.062302 +PRN61 : 952.298249 +PRN62 : 965.484659 +PRN63 : 957.131298 +PRN64 : 1101.631483 +PRN65 : 991.328207 +PRN66 : 947.868071 +PRN67 : 977.329736 +PRN68 : 1039.860026 +PRN69 : 1005.357641 +PRN70 : 926.524754 +PRN71 : 1065.337110 +PRN72 : 1016.266500 +PRN73 : 1005.771115 +PRN74 : 1013.342260 +PRN75 : 1016.421157 +PRN76 : 918.857846 +PRN77 : 1084.126406 +PRN78 : 1013.273197 +PRN79 : 1009.859699 +PRN80 : 953.978276 +PRN81 : 966.195381 +PRN82 : 966.041526 +PRN83 : 1034.313935 +PRN84 : 1028.006502 +PRN85 : 988.667994 +PRN86 : 951.447243 +PRN87 : 950.197401 +PRN88 : 1004.492867 +PRN89 : 1018.726549 +PRN90 : 1002.135383 +PRN91 : 1015.553223 +PRN92 : 968.825638 +PRN93 : 909.251629 +PRN94 : 927.430200 +PRN95 : 1026.839173 +PRN96 : 1001.209732 +PRN97 : 903.997372 +PRN98 : 1029.582853 +PRN99 : 998.221588 +PRN100 : 874.533368 +PRN101 : 1008.158727 +PRN102 : 1064.130097 +PRN103 : 1020.425429 +PRN104 : 914.904591 +PRN105 : 1050.711960 +PRN106 : 1019.491585 +PRN107 : 968.062305 +PRN108 : 946.755388 +PRN109 : 1012.508705 +PRN110 : 997.922624 +PRN111 : 962.447265 +PRN112 : 1065.410496 +PRN113 : 1059.470790 +PRN114 : 1036.427789 +PRN115 : 963.516351 +PRN116 : 970.000982 +PRN117 : 978.030226 +PRN118 : 1041.883687 +PRN119 : 924.311759 +PRN120 : 987.574757 +PRN121 : 1020.188441 +PRN122 : 979.109616 +PRN123 : 1076.652961 +PRN124 : 905.994009 +PRN125 : 999.425282 +PRN126 : 1012.521111 +PRN127 : 893.443447 +PRN128 : 978.578327 +PRN129 : 1068.476732 +PRN130 : 960.687195 +PRN131 : 954.211448 +PRN132 : 1031.587651 +PRN133 : 1069.561334 +PRN134 : 948.293168 +PRN135 : 999.185195 +PRN136 : 967.284970 +PRN137 : 1004.112868 +PRN138 : 989.683149 +PRN139 : 1008.154639 +PRN140 : 1043.953748 +PRN141 : 1082.131379 +PRN142 : 1006.528611 +PRN143 : 942.893040 +PRN144 : 1120.072970 +PRN145 : 908.369273 +PRN146 : 1039.338207 +PRN147 : 1011.429056 +PRN148 : 1058.020374 +PRN149 : 1007.346274 +PRN150 : 916.830032 +PRN151 : 1000.237008 +PRN152 : 977.470622 +PRN153 : 985.066693 +PRN154 : 1020.675449 +PRN155 : 1026.074199 +PRN156 : 1087.961390 +PRN157 : 993.836698 +PRN158 : 1008.510268 +PRN159 : 1013.336576 +PRN160 : 1022.611211 +PRN161 : 996.211550 +PRN162 : 1025.772152 +PRN163 : 1058.268017 +PRN164 : 911.997787 +PRN165 : 1052.556722 +PRN166 : 998.536098 +PRN167 : 915.837410 +PRN168 : 979.313138 +PRN169 : 1045.691152 +PRN170 : 1018.832329 +PRN171 : 1086.959291 +PRN172 : 1065.875576 +PRN173 : 1018.341432 +PRN174 : 1101.511906 +PRN175 : 1130.164468 +PRN176 : 1043.232574 +PRN177 : 1086.907863 +PRN178 : 1025.378136 +PRN179 : 999.601323 +PRN180 : 1036.776794 +PRN181 : 988.653272 +PRN182 : 973.274518 +PRN183 : 1000.807655 +PRN184 : 1057.386211 +PRN185 : 960.735035 +PRN186 : 904.872645 +PRN187 : 889.117280 +PRN188 : 983.809186 +PRN189 : 912.874411 +PRN190 : 975.589269 +PRN191 : 948.421999 +PRN192 : 947.657566 +PRN193 : 950.000738 +PRN194 : 962.922561 +PRN195 : 1026.301488 +PRN196 : 1029.353812 +PRN197 : 1047.303674 +PRN198 : 1028.695557 +PRN199 : 1070.200632 +PRN200 : 947.575145 +PRN201 : 876.904616 +PRN202 : 1017.701430 +PRN203 : 1049.267498 +PRN204 : 958.139948 +PRN205 : 967.417379 +PRN206 : 968.274143 +PRN207 : 1000.864388 +PRN208 : 1066.802181 +PRN209 : 1014.463051 +PRN210 : 1026.799870 +PRN211 : 1018.450824 +PRN212 : 988.633963 +PRN213 : 904.749119 +PRN214 : 937.323052 +PRN215 : 1037.391158 +PRN216 : 1026.099281 +PRN217 : 907.667691 +PRN218 : 1010.454766 +PRN219 : 1019.473463 +PRN220 : 1005.177530 +PRN221 : 997.361757 +PRN222 : 954.628248 +PRN223 : 1061.917463 +PRN224 : 1039.311045 +PRN225 : 983.843948 +PRN226 : 968.679422 +PRN227 : 970.518863 +PRN228 : 963.038929 +PRN229 : 1086.210292 +PRN230 : 1022.961948 +PRN231 : 964.149961 +PRN232 : 949.462428 +PRN233 : 959.221279 +PRN234 : 987.151293 +PRN235 : 959.017697 +PRN236 : 996.893693 +PRN237 : 965.063094 +PRN238 : 1000.468116 +PRN239 : 1004.755878 +PRN240 : 995.674256 +PRN241 : 996.723454 +PRN242 : 966.714381 +PRN243 : 992.601460 +PRN244 : 1041.656776 +PRN245 : 1061.690153 +PRN246 : 1103.650456 +PRN247 : 1055.668922 +PRN248 : 1052.582092 +PRN249 : 953.461917 +PRN250 : 1006.433285 +PRN251 : 955.606772 +PRN252 : 1039.688043 +PRN253 : 1088.653591 +PRN254 : 942.093968 +PRN255 : 1031.071161 +PRN256 : 946.110148 +PRN257 : 932.761874 +PRN258 : 1052.693974 +PRN259 : 1008.479381 +PRN260 : 1063.720881 +PRN261 : 992.478541 +PRN262 : 915.981089 +PRN263 : 992.027282 +PRN264 : 1024.266535 +PRN265 : 919.165065 +PRN266 : 1010.516440 +PRN267 : 997.213969 +PRN268 : 1021.925225 +PRN269 : 978.883278 +PRN270 : 981.515166 +PRN271 : 980.281886 +PRN272 : 1053.161093 +PRN273 : 912.521231 +PRN274 : 953.132131 +PRN275 : 1004.643842 +PRN276 : 1058.794186 +PRN277 : 984.215138 +PRN278 : 1042.304270 +PRN279 : 972.388973 +PRN280 : 1033.185530 +PRN281 : 969.133442 +PRN282 : 1027.169707 +PRN283 : 1061.483306 +PRN284 : 960.680868 +PRN285 : 1001.272929 +PRN286 : 1017.813674 +PRN287 : 983.331085 +PRN288 : 932.052156 +PRN289 : 1004.348693 +PRN290 : 1086.961051 +PRN291 : 1038.181141 +PRN292 : 1050.191404 +PRN293 : 997.767778 +PRN294 : 1080.797673 +PRN295 : 976.782991 +PRN296 : 1031.633723 +PRN297 : 1011.128806 +PRN298 : 1008.380640 +PRN299 : 1087.552272 +PRN300 : 962.484066 +PRN301 : 942.301619 +PRN302 : 983.039469 +PRN303 : 962.689056 +PRN304 : 947.296230 +PRN305 : 1070.666154 +PRN306 : 1032.115321 +PRN307 : 1021.567324 +PRN308 : 953.506490 +PRN309 : 1002.026680 +PRN310 : 1008.181860 +PRN311 : 1025.392684 +PRN312 : 968.955019 +PRN313 : 1049.458891 +PRN314 : 957.676990 +PRN315 : 1035.683512 +PRN316 : 1112.131175 +PRN317 : 1055.138933 +PRN318 : 1078.236814 +PRN319 : 1125.693872 +PRN320 : 1022.131166 +PRN321 : 1116.997957 +PRN322 : 1089.131000 +PRN323 : 1077.159289 +PRN324 : 945.536432 +PRN325 : 1075.404651 +PRN326 : 946.487332 +PRN327 : 1024.258871 +PRN328 : 1031.225842 +PRN329 : 1016.780255 +PRN330 : 1103.910936 +PRN331 : 1000.846691 +PRN332 : 984.532087 +PRN333 : 1005.306673 +PRN334 : 1113.067840 +PRN335 : 964.786705 +PRN336 : 1031.129909 +PRN337 : 1102.032227 +PRN338 : 1032.427500 +PRN339 : 915.287948 +PRN340 : 1069.521468 +PRN341 : 1037.884311 +PRN342 : 1022.783172 +PRN343 : 1010.113843 +PRN344 : 936.663822 +PRN345 : 967.568134 +PRN346 : 998.248532 +PRN347 : 970.595103 +PRN348 : 1059.133013 +PRN349 : 1002.450372 +PRN350 : 1041.569244 +PRN351 : 1071.151467 +PRN352 : 1074.430879 +PRN353 : 1024.192522 +PRN354 : 1027.316098 +PRN355 : 903.837437 +PRN356 : 1025.087981 +PRN357 : 1078.239201 +PRN358 : 947.160744 +PRN359 : 943.791880 +PRN360 : 982.419379 +PRN361 : 1015.326413 +PRN362 : 930.457683 +PRN363 : 1056.989164 +PRN364 : 1048.214411 +PRN365 : 1011.714309 +PRN366 : 973.561885 +PRN367 : 938.897489 +PRN368 : 898.131351 +PRN369 : 1089.422229 +PRN370 : 1000.737285 +PRN371 : 943.187609 +PRN372 : 980.631385 +PRN373 : 1026.612456 +PRN374 : 914.530023 +PRN375 : 989.137431 +PRN376 : 936.013065 +PRN377 : 1037.484721 +PRN378 : 1005.741041 +PRN379 : 1079.121866 +PRN380 : 1055.031055 +PRN381 : 967.647139 +PRN382 : 1073.874913 +PRN383 : 987.676314 +PRN384 : 1064.291410 +PRN385 : 1036.029393 +PRN386 : 1021.885249 +PRN387 : 971.958380 +PRN388 : 1060.807076 +PRN389 : 944.558349 +PRN390 : 936.791120 +PRN391 : 986.203862 +PRN392 : 934.815474 +PRN393 : 950.177863 +PRN394 : 1053.566520 +PRN395 : 955.717211 +PRN396 : 914.562496 +PRN397 : 1021.237741 +PRN398 : 985.669335 +PRN399 : 1049.267052 +PRN400 : 1096.201981 +PRN401 : 871.290446 +PRN402 : 1056.942788 +PRN403 : 991.680777 +PRN404 : 987.094995 +PRN405 : 1030.857572 +PRN406 : 1014.738174 +PRN407 : 1122.789424 +PRN408 : 1057.378717 +PRN409 : 852.638284 +PRN410 : 979.034993 +PRN411 : 1050.776805 +PRN412 : 1013.760119 +PRN413 : 1013.442288 +PRN414 : 1056.335907 +PRN415 : 1003.833582 +PRN416 : 952.287368 +PRN417 : 983.410711 +PRN418 : 981.610215 +PRN419 : 955.751367 +PRN420 : 1026.024405 +PRN421 : 913.215405 +PRN422 : 1039.587952 +PRN423 : 934.420327 +PRN424 : 1048.085188 +PRN425 : 1069.984971 +PRN426 : 1022.569605 +PRN427 : 994.967729 +PRN428 : 978.231174 +PRN429 : 1091.191368 +PRN430 : 1110.565525 +PRN431 : 993.099640 +PRN432 : 943.356916 +PRN433 : 1008.520337 +PRN434 : 1039.057948 +PRN435 : 995.518711 +PRN436 : 923.381630 +PRN437 : 1008.525954 +PRN438 : 1074.725786 +PRN439 : 973.831465 +PRN440 : 992.850511 +PRN441 : 915.574772 +PRN442 : 935.268901 +PRN443 : 1030.668761 +PRN444 : 1006.389624 +PRN445 : 1070.532520 +PRN446 : 1044.161059 +PRN447 : 1009.868970 +PRN448 : 995.488179 +PRN449 : 1003.676963 +PRN450 : 1036.281447 +PRN451 : 1034.663850 +PRN452 : 1016.940948 +PRN453 : 1041.761449 +PRN454 : 1036.179308 +PRN455 : 927.147021 +PRN456 : 1015.267516 +PRN457 : 1025.120602 +PRN458 : 1003.012895 +PRN459 : 1017.405398 +PRN460 : 1084.152015 +PRN461 : 938.100545 +PRN462 : 982.848682 +PRN463 : 971.208439 +PRN464 : 1024.169902 +PRN465 : 984.026162 +PRN466 : 885.734952 +PRN467 : 970.662665 +PRN468 : 966.626383 +PRN469 : 970.630895 +PRN470 : 1065.729526 +PRN471 : 1087.725051 +PRN472 : 934.663676 +PRN473 : 982.326660 +PRN474 : 1028.573796 +PRN475 : 1042.602736 +PRN476 : 919.644128 +PRN477 : 1117.592528 +PRN478 : 973.727786 +PRN479 : 1017.035309 +PRN480 : 985.948508 +PRN481 : 993.332284 +PRN482 : 913.783006 +PRN483 : 1036.292614 +PRN484 : 944.347075 +PRN485 : 993.774520 +PRN486 : 1004.501737 +PRN487 : 975.074516 +PRN488 : 960.381723 +PRN489 : 1032.461979 +PRN490 : 965.849830 +PRN491 : 959.343865 +PRN492 : 998.303510 +PRN493 : 1098.972429 +PRN494 : 978.774732 +PRN495 : 923.587406 +PRN496 : 934.194464 +PRN497 : 1019.233725 +PRN498 : 998.978470 +PRN499 : 969.151090 +PRN500 : 1008.850844 +PRN501 : 1002.711126 +PRN502 : 991.872449 +PRN503 : 948.998513 +PRN504 : 985.482935 +PRN505 : 1064.356664 +PRN506 : 920.085989 +PRN507 : 957.924976 +PRN508 : 1059.586657 +PRN509 : 948.912499 +PRN510 : 969.734926 +PRN511 : 991.121045 +PRN512 : 980.425651 +PRN513 : 1002.105883 +PRN514 : 1044.420229 +PRN515 : 1050.108383 +PRN516 : 1055.666511 +PRN517 : 1050.562993 +PRN518 : 918.954103 +PRN519 : 1031.398881 +PRN520 : 1015.533157 +PRN521 : 982.110348 +PRN522 : 911.625140 +PRN523 : 908.261708 +PRN524 : 892.515101 +PRN525 : 999.272597 +PRN526 : 1063.535795 +PRN527 : 1001.036057 +PRN528 : 1054.891358 +PRN529 : 970.513392 +PRN530 : 1009.957719 +PRN531 : 994.077721 +PRN532 : 1094.151066 +PRN533 : 987.039498 +PRN534 : 973.811047 +PRN535 : 959.839155 +PRN536 : 961.322994 +PRN537 : 1051.549887 +PRN538 : 931.006138 +PRN539 : 1090.452240 +PRN540 : 967.033966 +PRN541 : 991.451211 +PRN542 : 1042.788825 +PRN543 : 1075.910278 +PRN544 : 1009.225010 +PRN545 : 1005.631562 +PRN546 : 972.521547 +PRN547 : 1001.788406 +PRN548 : 1026.096292 +PRN549 : 943.517653 +PRN550 : 1043.297977 +PRN551 : 1068.734900 +PRN552 : 971.528905 +PRN553 : 1101.736300 +PRN554 : 1064.997347 +PRN555 : 1036.258822 +PRN556 : 921.038528 +PRN557 : 1009.332591 +PRN558 : 908.767369 +PRN559 : 950.432316 +PRN560 : 1025.848851 +PRN561 : 1026.275418 +PRN562 : 1027.138158 +PRN563 : 891.008164 +PRN564 : 966.635315 +PRN565 : 1105.694983 +PRN566 : 901.168653 +PRN567 : 1005.085680 +PRN568 : 986.376781 +PRN569 : 1021.988728 +PRN570 : 1032.032304 +PRN571 : 1066.922843 +PRN572 : 978.165759 +PRN573 : 985.471003 +PRN574 : 1018.542739 +PRN575 : 1104.217604 +PRN576 : 993.366411 +PRN577 : 908.428162 +PRN578 : 1030.181215 +PRN579 : 959.654949 +PRN580 : 1001.943741 +PRN581 : 1024.829762 +PRN582 : 912.207242 +PRN583 : 1016.092124 +PRN584 : 944.519752 +PRN585 : 1115.606496 +PRN586 : 884.228571 +PRN587 : 1080.684296 +PRN588 : 1000.544389 +PRN589 : 1018.277531 +PRN590 : 1069.476533 +PRN591 : 972.380515 +PRN592 : 979.162973 +PRN593 : 1040.650719 +PRN594 : 962.376923 +PRN595 : 929.303273 +PRN596 : 977.208942 +PRN597 : 1009.877287 +PRN598 : 946.361825 +PRN599 : 937.358872 +PRN600 : 1045.706701 +PRN601 : 1001.353164 +PRN602 : 1071.691606 +PRN603 : 1020.971714 +PRN604 : 957.623404 +PRN605 : 970.896382 +PRN606 : 941.442249 +PRN607 : 945.406684 +PRN608 : 980.972425 +PRN609 : 969.174424 +PRN610 : 1031.894081 +PRN611 : 1029.095046 +PRN612 : 957.535746 +PRN613 : 943.186463 +PRN614 : 955.065383 +PRN615 : 988.925782 +PRN616 : 969.603025 +PRN617 : 976.321914 +PRN618 : 1081.982260 +PRN619 : 1021.381110 +PRN620 : 978.594813 +PRN621 : 991.522599 +PRN622 : 1056.221346 +PRN623 : 1005.261003 +PRN624 : 938.437253 +PRN625 : 1005.952092 +PRN626 : 1034.131845 +PRN627 : 1026.000397 +PRN628 : 1056.506798 +PRN629 : 1007.883782 +PRN630 : 948.805620 +PRN631 : 926.033432 +PRN632 : 929.683971 +PRN633 : 1084.549770 +PRN634 : 939.995126 +PRN635 : 1017.329087 +PRN636 : 929.734793 +PRN637 : 968.947835 +PRN638 : 992.543787 +PRN639 : 1051.439605 +PRN640 : 962.215123 +PRN641 : 934.669279 +PRN642 : 873.191979 +PRN643 : 978.156276 +PRN644 : 1036.169440 +PRN645 : 1009.123122 +PRN646 : 1042.696787 +PRN647 : 1004.992474 +PRN648 : 985.307029 +PRN649 : 914.993369 +PRN650 : 883.268853 +PRN651 : 978.492871 +PRN652 : 1037.468856 +PRN653 : 903.697832 +PRN654 : 1016.299145 +PRN655 : 1032.662729 +PRN656 : 971.860043 +PRN657 : 876.217640 +PRN658 : 1076.128497 +PRN659 : 967.662496 +PRN660 : 1118.152109 +PRN661 : 959.402400 +PRN662 : 931.127652 +PRN663 : 963.395502 +PRN664 : 985.039373 +PRN665 : 1130.966014 +PRN666 : 1015.222803 +PRN667 : 979.416557 +PRN668 : 1044.451714 +PRN669 : 1013.521435 +PRN670 : 986.434595 +PRN671 : 1081.668437 +PRN672 : 1118.515896 +PRN673 : 989.972971 +PRN674 : 966.293542 +PRN675 : 960.277413 +PRN676 : 1000.049668 +PRN677 : 1082.002407 +PRN678 : 993.898160 +PRN679 : 1026.534251 +PRN680 : 962.202086 +PRN681 : 1004.697585 +PRN682 : 945.449849 +PRN683 : 1036.296061 +PRN684 : 1025.414145 +PRN685 : 1063.165272 +PRN686 : 993.281842 +PRN687 : 1024.850451 +PRN688 : 978.756895 +PRN689 : 1000.348903 +PRN690 : 886.538615 +PRN691 : 1044.053091 +PRN692 : 1011.514352 +PRN693 : 977.162158 +PRN694 : 1040.123413 +PRN695 : 1049.348768 +PRN696 : 1070.281599 +PRN697 : 994.095158 +PRN698 : 998.311277 +PRN699 : 996.305247 +PRN700 : 926.604115 +PRN701 : 1000.046728 +PRN702 : 992.973540 +PRN703 : 1001.014210 +PRN704 : 950.900234 +PRN705 : 1074.602127 +PRN706 : 987.731174 +PRN707 : 946.971275 +PRN708 : 1027.578158 +PRN709 : 1024.011220 +PRN710 : 959.145194 +PRN711 : 1006.423937 +PRN712 : 981.213721 +PRN713 : 1044.065461 +PRN714 : 979.223485 +PRN715 : 1008.857033 +PRN716 : 1043.892450 +PRN717 : 1060.529980 +PRN718 : 933.250802 +PRN719 : 1061.461152 +PRN720 : 961.259637 +PRN721 : 1058.283064 +PRN722 : 1011.319119 +PRN723 : 996.167947 +PRN724 : 1037.665974 +PRN725 : 865.574895 +PRN726 : 1002.911144 +PRN727 : 978.886205 +PRN728 : 1002.302369 +PRN729 : 945.213366 +PRN730 : 1049.330526 +PRN731 : 1011.089995 +PRN732 : 911.273000 +PRN733 : 1030.796132 +PRN734 : 1101.699446 +PRN735 : 868.524288 +PRN736 : 951.807712 +PRN737 : 997.957367 +PRN738 : 953.791979 +PRN739 : 954.430760 +PRN740 : 993.834055 +PRN741 : 1021.300808 +PRN742 : 891.272906 +PRN743 : 879.577939 +PRN744 : 1093.176950 +PRN745 : 961.198091 +PRN746 : 976.086349 +PRN747 : 900.514535 +PRN748 : 911.711376 +PRN749 : 975.997454 +PRN750 : 1007.292432 +PRN751 : 1023.266464 +PRN752 : 1066.723102 +PRN753 : 1060.468262 +PRN754 : 1115.673922 +PRN755 : 1041.290534 +PRN756 : 912.248040 +PRN757 : 1034.518587 +PRN758 : 967.154895 +PRN759 : 1043.478493 +PRN760 : 1026.025257 +PRN761 : 997.795632 +PRN762 : 948.207823 +PRN763 : 970.366980 +PRN764 : 973.390941 +PRN765 : 1008.249734 +PRN766 : 965.810614 +PRN767 : 1034.368743 +PRN768 : 969.130435 +PRN769 : 939.525153 +PRN770 : 939.346863 +PRN771 : 1098.433434 +PRN772 : 973.913623 +PRN773 : 994.629391 +PRN774 : 1019.029751 +PRN775 : 999.068601 +PRN776 : 952.374565 +PRN777 : 1005.413476 +PRN778 : 1008.606450 +PRN779 : 949.586928 +PRN780 : 984.336007 +PRN781 : 966.334220 +PRN782 : 952.353697 +PRN783 : 1081.685083 +PRN784 : 1148.865924 +PRN785 : 1043.881782 +PRN786 : 950.747262 +PRN787 : 1013.342099 +PRN788 : 1021.841738 +PRN789 : 943.202183 +PRN790 : 1018.658753 +PRN791 : 1039.519748 +PRN792 : 1066.745417 +PRN793 : 991.922297 +PRN794 : 989.993508 +PRN795 : 935.256770 +PRN796 : 1049.355101 +PRN797 : 984.271969 +PRN798 : 1046.060384 +PRN799 : 1044.170052 +PRN800 : 920.720627 +PRN801 : 938.453295 +PRN802 : 980.425711 +PRN803 : 974.857425 +PRN804 : 1016.266917 +PRN805 : 1039.658764 +PRN806 : 925.171481 +PRN807 : 982.577139 +PRN808 : 997.552114 +PRN809 : 1063.108389 +PRN810 : 927.965656 +PRN811 : 1049.828313 +PRN812 : 1012.506665 +PRN813 : 962.613627 +PRN814 : 915.580235 +PRN815 : 1003.806599 +PRN816 : 1086.454522 +PRN817 : 968.915000 +PRN818 : 1008.546559 +PRN819 : 856.499306 +PRN820 : 960.536031 +PRN821 : 1025.778766 +PRN822 : 1071.326673 +PRN823 : 993.205599 +PRN824 : 1052.750624 +PRN825 : 1040.987166 +PRN826 : 1034.039072 +PRN827 : 963.048804 +PRN828 : 970.510949 +PRN829 : 1049.829816 +PRN830 : 934.945358 +PRN831 : 980.925084 +PRN832 : 1037.321718 +PRN833 : 1031.532551 +PRN834 : 1049.045828 +PRN835 : 1086.751941 +PRN836 : 1036.770670 +PRN837 : 1032.479988 +PRN838 : 957.264581 +PRN839 : 982.586134 +PRN840 : 1002.144549 +PRN841 : 856.221346 +PRN842 : 1077.732261 +PRN843 : 1023.844204 +PRN844 : 1049.015013 +PRN845 : 1109.868706 +PRN846 : 1032.030843 +PRN847 : 994.431051 +PRN848 : 999.263384 +PRN849 : 1052.311112 +PRN850 : 955.831734 +PRN851 : 958.864423 +PRN852 : 1016.728795 +PRN853 : 1004.874796 +PRN854 : 1004.259084 +PRN855 : 963.819718 +PRN856 : 949.755330 +PRN857 : 987.900168 +PRN858 : 995.226017 +PRN859 : 1098.708859 +PRN860 : 1009.514337 +PRN861 : 948.777253 +PRN862 : 982.680500 +PRN863 : 996.028285 +PRN864 : 1029.124415 +PRN865 : 942.101818 +PRN866 : 1034.222040 +PRN867 : 949.348550 +PRN868 : 965.963597 +PRN869 : 995.021503 +PRN870 : 889.653326 +PRN871 : 951.899055 +PRN872 : 1038.667756 +PRN873 : 1088.885329 +PRN874 : 979.471141 +PRN875 : 1027.647348 +PRN876 : 1054.157446 +PRN877 : 1003.472116 +PRN878 : 914.016815 +PRN879 : 1034.862598 +PRN880 : 936.253104 +PRN881 : 962.254857 +PRN882 : 1042.166034 +PRN883 : 934.618156 +PRN884 : 939.923222 +PRN885 : 998.649324 +PRN886 : 986.753492 +PRN887 : 1095.450118 +PRN888 : 982.660119 +PRN889 : 947.149665 +PRN890 : 893.930985 +PRN891 : 956.589953 +PRN892 : 1067.312301 +PRN893 : 952.406240 +PRN894 : 986.728920 +PRN895 : 1030.999219 +PRN896 : 993.306628 +PRN897 : 972.230094 +PRN898 : 993.227094 +PRN899 : 1008.926188 +PRN900 : 976.391192 +PRN901 : 952.545561 +PRN902 : 1011.157462 +PRN903 : 1056.357455 +PRN904 : 1027.929510 +PRN905 : 986.749151 +PRN906 : 963.462803 +PRN907 : 988.772926 +PRN908 : 1031.930882 +PRN909 : 981.130300 +PRN910 : 1073.463235 +PRN911 : 1081.696380 +PRN912 : 1020.678551 +PRN913 : 906.544270 +PRN914 : 1097.495849 +PRN915 : 1113.146380 +PRN916 : 1058.443029 +PRN917 : 902.487848 +PRN918 : 1009.914281 +PRN919 : 1057.100054 +PRN920 : 940.428079 +PRN921 : 941.473058 +PRN922 : 905.716759 +PRN923 : 997.789107 +PRN924 : 962.306176 +PRN925 : 1072.504216 +PRN926 : 946.554822 +PRN927 : 972.932223 +PRN928 : 1024.961360 +PRN929 : 1080.513692 +PRN930 : 1047.137658 +PRN931 : 1012.824933 +PRN932 : 976.404512 +PRN933 : 895.604509 +PRN934 : 1114.446905 +PRN935 : 1051.342533 +PRN936 : 1027.204609 +PRN937 : 917.811842 +PRN938 : 882.306487 +PRN939 : 1010.444766 +PRN940 : 978.686109 +PRN941 : 1020.585581 +PRN942 : 989.944335 +PRN943 : 1010.484323 +PRN944 : 936.727744 +PRN945 : 1038.631446 +PRN946 : 1012.530572 +PRN947 : 961.577357 +PRN948 : 988.253770 +PRN949 : 1054.353206 +PRN950 : 964.120426 +PRN951 : 943.486864 +PRN952 : 1052.650937 +PRN953 : 980.334313 +PRN954 : 1137.186817 +PRN955 : 1125.255968 +PRN956 : 964.830093 +PRN957 : 930.646626 +PRN958 : 1043.519941 +PRN959 : 1088.829938 +PRN960 : 1024.017051 +PRN961 : 1065.574266 +PRN962 : 1008.740833 +PRN963 : 972.421950 +PRN964 : 1082.991316 +PRN965 : 963.163028 +PRN966 : 1040.184197 +PRN967 : 865.234238 +PRN968 : 1026.703665 +PRN969 : 991.758625 +PRN970 : 1091.021716 +PRN971 : 1079.872892 +PRN972 : 1042.401875 +PRN973 : 1085.624604 +PRN974 : 1055.314437 +PRN975 : 1138.344149 +PRN976 : 906.958400 +PRN977 : 954.641162 +PRN978 : 1014.840472 +PRN979 : 991.906864 +PRN980 : 947.716713 +PRN981 : 1075.346169 +PRN982 : 913.043943 +PRN983 : 1006.107228 +PRN984 : 940.937691 +PRN985 : 925.827770 +PRN986 : 870.001279 +PRN987 : 1093.348026 +PRN988 : 990.938631 +PRN989 : 1067.552107 +PRN990 : 936.441162 +PRN991 : 956.066787 +PRN992 : 1001.705214 +PRN993 : 1007.198453 +PRN994 : 956.883661 +PRN995 : 1033.645356 +PRN996 : 1036.395999 +PRN997 : 954.941658 +PRN998 : 1015.720547 +PRN999 : 1023.147999 +sample mean : 1000.303825 +true mean : 1000.000000 +sample stddev: 53.233584 +true stddev : 53.000000 +z-score : 0.181279 +p-value : 0.428600 +QH[normality]: 1.015347