@@ -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 : %lf\n"
+ "true mean : %lf\n"
+ "sample stddev: %lf\n"
+ "true stddev : %lf\n"
+ "z-score : %lf\n"
+ "p-value : %lf\n"
+ "QH[normality]: %lf\n",
+ samp_mean, mean, samp_stddev, stddev, Z, p_value, QH);
+
+ av_freep(&PRN_arr);
+ }
return 0;
}
@@ -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
new file mode 100644
@@ -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
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 <thomastdt@googlemail.com> --- 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