1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425
|
------------------------------------------------------------------------
r529 | rgbatduke | 2011-04-01 13:49:31 -0400 (Fri, 01 Apr 2011) | 117 lines
OK, this is a fairly enormously major brutal checkin. Both dieharder
and libdieharder are ALMOST -Wall -pedantic clean. To get it there I
had to learn several things, such as how to get gcc to ignore "unused
variables" that are conveniently in a shared include file but aren't
really used in all the modules that share it, the fact that the various
flavors of C have varying "maximum string size guaranteed to be
supported" limits (none of which are really relevant to gcc, but it
complains about them anyway), and more. And of course I had to delete
all the cruftish lines of e.g. unused loop variables. I'm not quite
done with cleanup -- I may have gone overboard in a place or two and may
need to put some things back or address things that might affect
function -- but I want to get this all checked in.
There are two build errors left -- one is in dieharder/rdieharder.c (and
hence is yours, Dirk) and the other is in the skein code (and hence is
yours, David). David, I also need you to check a fix I made to the
rng_threefish code -- I finally took the time to figure out the dread
"dereferencing type-punned pointer breaks strict aliasing rules"
warning. I replaced the offending line:
*((unsigned long int *) state->block) = s;
with
unsigned long int *blockptr;
...
blockptr = (unsigned long int*) &state->block;
*blockptr = s;
That is, I read what you were trying to do as "Set the contents of
state->block, cast to an unsigned long int pointer, equal to unsigned
long int pointer s" which might work but gcc -Wall hated it even before
-pedantic and (from what I've read) can have undesired side effects. So
I introduced an actual unsigned long int pointer, put the address of
state->block in it, and the set its contents equal to s. It didn't seem
to break threefish -- I tested the first few returns before and after
the fix with -S 1 and they were the same -- and I'm using threefish
right now in a validate.sh run to make sure that I didn't egregiously
break dieharder with all of the changes.
Changes you should be aware of:
* To avoid most of the "too long string" errors I went to -std=c95,
which permits strings a page in size (4095 bytes). That accommodates
the auto-documentation strings in the test headers. There may be
another way of doing this -- in fact there are probably two or three --
but to alter the dh headers at this point would (marginally) break the
API so it will need to wait for v4, I think. Apparently gcc is about to
be dressed up with an __attribute__ that will probably enable extra
large or unlimited data strings without complaints which is sensible
enough since it works on them anyway AFAICT.
* c95 turned off uint translation . I went through a huge block of
code turning uint into the two words unsigned int before getting
irritated enough to look at the headers where I discovered that yeah,
you can turn on the uint -> unsigned int macro with a suitable define.
So I did.
* c95 turned of BSD math macros in math.h, including M_PI. That
seemed really silly, so I turned them back on with a suitable define. I
didn't turn on the long forms (they only really make sense for long
doubles) but we can do that if we ever need PI to 24 places or whatever
it was.
* -Wall -pedantic really hates any sort of data that is included in a
source file where it isn't used. If we were all perfect programmers, I
suppose that we would create enough include files and control where they
were included precisely enough that no source file even included an
include file with a variable it didn't actually use. Alas, I'm not a
perfect programmer and lots of the data structures used only inside
certain tests or by certain generators are shared via libdieharder.h
with program modules that don't use them. Adding
__attribute__((unused)) after the definition but before the = sign
basically tells the compiler "Yes, I know, I planned it that way, now
shut the fuck up" and passes them through -pedantic without complaint.
I suppose that the virtue of the check is that it helps prevent
namespace collision, but of course the compiler checks for that anyway
and general local vs global rules seem like they would handle any
accidents that crop up the right way. If I feel really, really
energetic someday I may go and segregate out the data and either add it
to the sources directly (in a lot of cases that's a good place for it
anyway) or put it in a separate include file per module. OTOH things
like the dh headers are shared because I DO access content from them in
lots of places and want to be able to get to it from anyplace, so there
will always be some ((unused)) attribute variables in the program.
Printing out the test description string for any given test, or looking
up the default tsamples or psamples, for example, is something any sort
of application that uses the libdieharder library might want to do.
* As per current GBT recommendations and Dirk's suggestions, all of
the auto-whatever stuff in autogen.sh is now basically a single
autoreconf call. In fact, it looks like they made autoreconf just
because getting all of the things just right after a major GBT update
is, in fact, the pain in the ass that it has been to me from the
beginning, so this is rather a relief. I did leave the configure call
in the bottom, so running autogen.sh should still take one from a clean
checkout to make-ready, or of course you can enter autoreconf by hand
and run configure by hand as per usual. Hopefully this will all make
Debianheads happy...;-)
Things that I have NOT done yet -- this checkin is basically six hours
of work from 9 to 3 am plus another couple of hours today, so I'm
working as fast as I can as it is -- include debugging the endian
problem in the threefish (or was it AES?) code on e.g. a sparc or
powerpc set to the other endianness and dealing with a few real bug
reports that have come in from users already. I wanted to get the code
clean first as who knows, maybe doing so will help solve the problem?
SO, if you guys could each fix the two remaining problems (or tell me to
play through in spite of the fact that I'm not sure what is being
accomplished and what would break what) then I'll try to move on to the
next step.
rgb
------------------------------------------------------------------------
r523 | rgbatduke | 2011-03-10 11:09:12 -0500 (Thu, 10 Mar 2011) | 4 lines
A last minute oops. I wanted to mark operm5 as good, and mark all of
the monkeys suspect (as they can pretty easily be run to failure for
good generators still).
------------------------------------------------------------------------
r510 | rgbatduke | 2011-01-07 16:19:40 -0500 (Fri, 07 Jan 2011) | 31 lines
This is a WORKING snap and bump to 3.29.6beta. I actually fixed several
things that I broke before in the rng selection process. New features:
rng_kiss -- a damn fine rng. Faster than mt, better than mt except for
period.
rng_XOR -- Select this rng, and a list of others, e.g.
./dieharder -g 207 -g 208 -g 14 -g 6 -g 205 -a
dieharder will then return the output of 208 (kiss), 14 (mt19937_1999),
6 (gfsr4) and 205 (aes) all xor'd together. Period infinite, no LESS
random than the MOST random of the generators alone. The price you pay
is sure, 2, 3, 4 times slower. But this is now the official gold
standard dieharder testing generator, as finding something randomer will
be difficult and of longer period impossible (what is the least common
multiple of 19937, 121, and all the rest? 2 to that power, like that).
I'm working on superkiss, a vectorized version of kiss with an insanely
long period, but the double precision part is broken and I don't see
why. The integer part works. I'll figure it out maybe tonight, and
have a few other Marsaglia generators to add.
Then I'll return (finally) to tests, with the gold standard generator
well and truly in place. At least three dieharder (diehard) tests are
broken, and I'd like to fix at least ONE of them before I get bogged
down teaching again.
rgb
------------------------------------------------------------------------
r508 | rgbatduke | 2010-02-19 13:13:56 -0500 (Fri, 19 Feb 2010) | 9 lines
Oops, forgot to update FIRST. This should get me back in sync. You
guys should ignore this; I'm rearranging my whole source tree on my
laptop(s), dieharder included, and am just trying to make sure that the
rebuilt one is clean.
I also haven't completely forgotten the last post/request for interface
room -- I've just been insanely busy and haven't had time to even think
about it for the last few weeks. But I will get back there, I promise.
------------------------------------------------------------------------
r498 | rgbatduke | 2009-10-28 01:48:25 -0400 (Wed, 28 Oct 2009) | 28 lines
Wow, a lot of stuff. This checkin contains a working -Y 2 option for
"test to destruction" where ttd is by default a return pvalue of
0.000001 or less OR getting to 10000 samples alive (both parameters
can be set on the command line with -X tolerance and -Z cutoff). I
actually did it two ways, and will keep the second (better) one and
shortly remove the cruft in std_test.c. In addition I had to update the
help, I updated the output routines in output_rnds so I could dump a
list of formatted floats (to test another rng tester that alas was so
broken it couldn't read any format I tried anyway), I fixed and updated
the man page, I got rid of the old overlap variable (no longer
desireable or necessary, although I have a bit of cruft left behind to
clean up still).
As a result of the initial ttd test, I am certain that there is a
problem with diehard_dna, one that causes it to fail aes at 0.000001 in
1500-4000 samples. This is odd, since this test has an "exactly"
computed mean and sigma target. I may try threefish in a second to see
if it fails too, in the same general order. Haven't done the auto-xor
generator thing yet.
I still have to implement -Y 1 (resolve ambiguity mode) where it will
force a test to fail or come back up with more samples, but it should be
straightforward. However, it is almost 2 am and I teach way too early,
so it is off to bed.
rgb
------------------------------------------------------------------------
r497 | rgbatduke | 2009-10-22 09:45:52 -0400 (Thu, 22 Oct 2009) | 20 lines
This is a not-quite-yet-broken checkin of -Xtreme mode changes. Three new
control variables are in place. They are parsed (untested). They are
used in std_test to allocate much larger pvalue vectors (Xcutoff in
size) at test initialization time. I'm JUST READY to hack into the main
std_test execution loop with case switches or other conditionals and
implement at least resolve ambiguity and ttd modes. But as usual, I
have to go in and teach. At the moment, though, DH still builds and
runs -a correctly, so it seems like a good idea to check in a still
working snap in case I break everything and want to start over from
here.
Oh, I also am cleaning up a bit and made the multiply_p variable (-m
option) a double, so you CAN enter -m 0.1 and run only 10 psamples for a
fast version of -a(ll). At this point a lot of debugging is just
ensuring that all the tests run, and it is a PITA to wait 30+ minutes
for a -a(ll) run to get through. So you now CAN test fewer than the
default number of psamples in an -all run, even though most people won't
use the option in actual testing. The usual usage, -m 10 or -m 100,
works fine still.
------------------------------------------------------------------------
r495 | rgbatduke | 2009-10-20 14:25:32 -0400 (Tue, 20 Oct 2009) | 34 lines
I'm checking in a lot of changes down below. -m is implemented and
documented. -k is implemented and documented. The man page is fixed
(post good-kstest and aes/threefish). The endian bug went away when I
refreshed the include files, making me wonder if it wasn't some sort of
strange GBT stuff and not a real problem -- I left in the endian code in
configure.ac but don't use it. I re-fixed diehard_runs.c -- it was
broken post patching but now seems good. I filed some documentation and
bug reports. I fixed a number of pernicious warnings about needing
casts (one still remains in threefish, but it is David's and I don't
know how to fix it). I worked on dieharder.html.in pretty substantially
to get it to match all of the above.
Next, -x (and maybe -X).
(p.s. -- Welcome David.)
(p.p.s. -- I'm still testing -- sigh, forever -- but it looks like all
non-deprecated tests are working OK in this snap, and that the -m
feature works nicely. I documented timings for the k options, and
basically it comes down the kstest being too slow to do large numbers of
samples without switching over to the asymptotic form of the test at
some point. I mean, going from three minute runs to over three hours
and still counting when I quit for a factor of 10 difference in the
number of samples, really serious nonlinear gains in the amount of
work/time required, and this was still -k 1 with Marsaglia's more modest
speedup, not even the "exact" mode with no speedup at all.
This will quite possibly require some further hacking of the boundaries
for a crossover that is "practical" and not too inaccurate as we gain
experience with our own patience, especially as we implement a -x like
option that just keeps crankin' on the number of samples to hit a
prespecified tolerance for failure.)
------------------------------------------------------------------------
r494 | rgbatduke | 2009-10-19 09:46:39 -0400 (Mon, 19 Oct 2009) | 3 lines
This is all of the Bauer patches. Some are tested, but the testing
continues.
------------------------------------------------------------------------
r493 | rgbatduke | 2009-10-18 10:43:52 -0400 (Sun, 18 Oct 2009) | 108 lines
This is checking in what will be 3.29.4beta.
Primary fixes so far:
Several changes to configure.ac to eliminate all reference to libaes
and to set macros ENDIAN_BIG or ENDIAN_LITTLE to 1 in the configure
stage of the build. I plan to insert a very simple prequel in Brian
Goodman's brg_endian.h header file that handles endian issues cleanly
and skips most of the stuff below for little endian. I do need to
ensure that it builds on i386 as well (when I'm done) as I have a report
that 3beta doesn't build clean on that architecture due to problems in
this header file.
A fix due to Glenn Emelko, GEmelko@aclara.com, where I correctly
bumped filecount to type off_t in libdieharder.h but failed to redefine
rtot and rptr accordingly in the rng_file_input.c struct and code. He
was running 18 GB raw files and obviously this overflowed uint variables
with bad results. Oops, and thanks Glenn.
I am trying to get sts_serial.h to run at 24 bits by default, not 16
(I think that this will still take a not unreasonable amount of time).
The problem is that sts_serial doesn't use bits.c calls to parse out the
next 24 bits, it just grabs 16 bit, then the next 16 bits, out of 32 bit
uints. This is fast but not scalable. I have to go in and edit the
code to use bits calls to get the next 24 bits, no foolin, or better yet
use -n ntuple to set the maximum number of bits teste (that's my real
goal, with 24 being the default).
Plans: David Bauer sent me a fairly extensive patch against 3.29.3beta
that fixes some memory leaks and/or speed issues in bits (?) as well as
fixing some parts of the diehard OP code -- probably fixing Marsaglia's
bugs and not mine, but hard to say. There are bugs in there and I've
already squashed several so it wouldn't surprise me if there are more
(even more of my own:-). I'm going to TRY to implement most of his
fixes if they work well and seem to fix something that makes sense to
me, although I'd feel better (per fix) if I could find a test case that
illustrates the failure. I may have to ask him how he found the bugs so
I can document them in svn somewhere, later. Memory leaks of course are
relatively easy and again, I could easily have created some -- getting
rid of them is definitely called for. David is also looking at the
rgb_bitdist tests (which SHOULD be as sensitive as the OP tests if
cranked up to the correct degree) -- there may be some fixes there
coming.
Finally, I have a few operational changes in mind -- primarily adding or
altering the new interface in a couple of small ways. Kuiper will go
away as an option (but not the code -- I'll leave a macro in place that
can switch it back on in case there is ever any point in reconsidering
the test, if for example I or David or somebody else figures out an
exact CDF for it so it becomes as accurate and perhaps faster than KS,
or it is needed for a specific rng test in the future. -k flags will be
used to control how hard ks works (and hence how fast vs accurate
dieharder is) with a default of pretty fast, pretty accurate and
alternatives of slow but to-convergence-exact and really fast but only
accurate enough for the short version of the -a(ll) run.
I'd also like to introduce two new run modes controlled by flags. One
of them, -m(ultiplier), will allow the user to enter a scale factor to
be applied to the default 100 -psamples used in -a(ll) runs (otherwise
ignored). So if one want to run all the tests but with 1000 psamples
per test (or 10x whatever the per-test default is) one runs -a -m 10.
This should make it MUCH easier to test to destruction, increase test
resolution, etc.
Second, I want to introduce a flag that runs a test "to failure" --
something I've planned to do for a long time. David has already hacked
in his own version of doing this, and I used to do something very
similar in my numerical simulations. The idea of running in -x(treme)
mode (or whatever I name the flag) would be to start with e.g. 100
pvalues and then add 100 pvalues at a time to the test run until the
final pvalue fails a fairly stringent (user selectable) cutoff.
-d 1 -x 0.000001
would add psamples to the birthdays test until the final pvalue is under
0.000001.
-d 1 -X 0.000001
would do the same thing, but it would run the test to this degree of
failure psamples = 100 times with different rng seeds (if appropriate)
and return something like max, min, mean number of psamples required to
cause a test failure. SOMETHING like this is going to be needed,
because I think it is entirely plausible that some tests have
"poisonous" seeds that have just the right prime modulus to introduce
correlations in their stream, but that NEARLY ALWAYS are started with
seeds that yield good streams.
I'd like to have these last two options work for -a -m runs as well, so
-a -m 10 -X 0.000001
runs all tests until they fail low or high at one part in a million,
1000 times for different seeds per run, returning the average number of
psamples required to reach failure. I'd even like to be able to plot
the distribution of this number so one can pick out e.g. bimodal
distributions (bad seeds!) etc.
At some point being able to do everything that dieharder will want/need
to do is going to require a GUI -- something that can generate scatter
plots, candlesticks, real non-ascii histograms, line graphs, 2d/3d
surfaces. But that's still a ways in the future. -X is going to be
pretty tricky as well, as dieharder isn't equipped to return anything
but a final cumulative "pvalue" in [0,1] for a test. But it is probably
better to do it now in the beta phase where this doesn't really damage
any other future dependent interfaces (e.g R).
------------------------------------------------------------------------
r492 | rgbatduke | 2009-10-12 18:53:13 -0400 (Mon, 12 Oct 2009) | 8 lines
THis is mostly to check in the dieharder NSF proposal from last year as
it has a roadmap for future dieharder development, and I'm thinking hard
about adding a few of the many missing generators now that kstest is
reliable. I'm still working on kstest, mind you, but it is mostly on
the details, not on the basic code.
rgb
------------------------------------------------------------------------
r491 | rgbatduke | 2009-10-12 14:55:55 -0400 (Mon, 12 Oct 2009) | 6 lines
This actually works PRECISELY for all count ranges. It is still in
testing -- I've got a bit of work to do to be ready to release this
globally (including letting David test it and see if he agrees) but it
should COMPLETELY FIX dieharders final kstest (and I'll give it one
last opportunity to fix diehard_sums():-).
------------------------------------------------------------------------
r490 | rgbatduke | 2009-10-12 12:39:51 -0400 (Mon, 12 Oct 2009) | 10 lines
Checking in some key papers (and some stuff getting rid of broken
diehard_sums altogether for now -- leaving in the test but strongly
deprecating it in dieharder). The papers SHOULD permit us to compute
the exact CDF for the one-sided KS test against a uniform distribution
for small N and thereby make the KS test reliable for all sample sizes.
In particular ks_CDF_N.pdf looks like it will do the trick.
rgb
------------------------------------------------------------------------
r489 | rgbatduke | 2009-10-11 11:05:24 -0400 (Sun, 11 Oct 2009) | 32 lines
FINALLY I got threefish to work. brg_endian.h was broken as shit; it
starts off by pulling something from crypt.h that is obviously broken on
modern linux boxes (at least my Fedora 11 x86_64 box). The remaining
code looks quite general and seems to work, although I have to admit I
absolutely hate crap code like this -- it smacks of aimk, imake, and
other crap tools that detect platform type using some sort of transient
trace from one tool or another that breaks three years later (or rather,
requires yet another conditional). I'll leave this in for now in case
somebody wants to port to sparc or some bigendian platform, but since we
are using threefish only to make random numbers and don't care to ever
decrypt the stream of 0's or whatever it is applied to, I honestly doubt
that it matters. Getting endianness wrong sounds like it is at worst an
extra byte shuffle.
Either way, this will be 3.29.2beta and I'll put it up on the dieharder
website in a few minutes (after a full -a run of threefish passes). I
may add a comment to brg_endian.h indicating my hack, lest people be
tempted to use it as if it weren't modified.
Grrr. I'm REALLY tempted to just strip it to the two line definition
that is all that matters in skein_port.h and screw the whole "automagic"
thing. Robust code is robust code, and there are bound to be
intrinsically portable ways to handle endianness IF it is really
necessary in the first place.
At least this finally liberates me to move on and work on kstest and
kuiper again. That's been on hold for a few days, but I'm feeling like
we're getting close to having one or the other work "perfectly" (if I
can find and add the missing O(1/N) correction terms from the
literature).
------------------------------------------------------------------------
r488 | rgbatduke | 2009-10-08 12:50:29 -0400 (Thu, 08 Oct 2009) | 25 lines
This is most of the threefish stuff required, but I'm still having
trouble with the big/smallendian conversions apparently needed by skein
in threefish. One function that is supposed to be defined automagically
is coming out UNdefined in the linker, which is "bad". I may have to
ask David Bauer how he got this to compile. Note that I've added both
bauer and emelko's current round of bug reports and remarks to the Bugs
directory below. David in particular has been really looking hard at
kstests, and with good justification. The kstest is apparently very
poorly defined even in stats texts and the literature. It is apparently
more broken in R than it is in dieharder, and it is still a bit broken
in dieharder.
As is so often the case in dieharder problems, pushing the test suite to
new limits exposes weaknesses in code that has long been taken for
granted because it has never been used for a rigorous analysis of this
sort. But it NEEDS a precise ks or kuiper test, not just a sorta-useful
approximate one, or one cannot rely on its statements of weakness or
failure.
Anyway, this checkin is still broken but is within one #define or so of
working, I think, once I figure out how to do it without violating the
code in the brg_endian.h include that is supposed to automagically
select the right Skein function that is currently undefined.
------------------------------------------------------------------------
r487 | rgbatduke | 2009-10-07 12:19:44 -0400 (Wed, 07 Oct 2009) | 16 lines
David Bauer contribued two cryptographic grade GSL wrapped rngs (one of
which I had been working on myself, but his has no dependencies and it
works already). rng_aes appears to work, very respectably. It has
minimal controls (compared to aespipe) but aespipe is still there if
people want to play with it directly. It isn't too shabby speedwise,
actually, for what should be a world-class rng. I'm going to see if he
(David) cares if I contribute it back to the GSL -- it needs a few
generators like this in its collection. Although as it is GPL the
answer is obviously not, I think.
In a second I'm going to insert rng_3fish as a second one. These are
enormously useful for testing dieharder itself, and as GPL sources will
be useful just being part of the dieharder unless/until they make the
GSL.
------------------------------------------------------------------------
r486 | rgbatduke | 2009-10-06 14:26:39 -0400 (Tue, 06 Oct 2009) | 3 lines
Little fixes, ignore. Added -d 204 to -all properly, fixed its
autodocumentation a bit.
------------------------------------------------------------------------
r485 | rgbatduke | 2009-10-06 14:17:43 -0400 (Tue, 06 Oct 2009) | 35 lines
This records a validation script to use with aespipe to produce a
"standard run" of dieharder in -v3. aespipe with the fixed, trivial
256-bit key in aeskey below, is used to encrypt /dev/zero into a stdin
stream and fed to dieharder -a. The encrypted stream should be as close
to "truly random" as we can currently manage with simple, reasonably
fast tools. The interesting thing is that this stream actually PASSES
ALL OF THE TESTS in dieharder, even the "known bad" tests such as
diehard_operm5. This makes it very, very useful for comparison
purposes. For example, for the first time ever, I feel like I can now
say that mt19937 actually FAILS dieharder (or has weaknesses that are
explicitly exposed by dieharder) when it consistently has tests (even
very specific tests for very specific length ntuples) on which it is
weak or fails or exhibits high bias in its output pvalues.
To be fair, passing all of the tests isn't necessarily a good thing,
since there are over 100 of them including ntuples. One expects 1/100
or 1/200 or thereabouts to be weak for a PERFECT RNG on most runs.
Eyeballing the distribution of final P in the aespipe run reveals that
dieharder still produces a weak high bias in the final distribution of
pvalues, but this is very much in line for the bias revealed by
rgb_kstest_test and is therefore very likely an artifact of using -p 100
as the default for most of the tests in -a(ll).
I'm going to run the validation line:
cat /dev/zero | aespipe -P aeskey | ./dieharder -g 200 -a
with -p 1000 just for grins (which will take the rest of the day, I
expect) and see if it doesn't push the final distribution right back
where it belongs, with less visible bias towards the 0.9-1.0 range and
away from 0.0-0.1 on the bottom.
Still, a perfect PASS for a nearly perfect generator. How cool is that?
------------------------------------------------------------------------
r484 | rgbatduke | 2009-10-06 12:45:36 -0400 (Tue, 06 Oct 2009) | 40 lines
This is a set of changes that:
a) Fix (for the time being) a problem with ltmain.sh, badly. I
suspect that I'll need to add a libtoolize command to the autogen.sh
script in order to prevent drift from local libtools in the long run, or
give in and make it a link to /usr/share/libtool/config/ltmain.sh and
pray that this is portable.
b) Changes the default ks test in dieharder from broken Kuiper or
broken KS to fixed KS. This is an CRITICAL fix and needs to backport to
2.28 as with it dieharder will FINALLY give much more nearly correct
pvalues for the relatively small number of pvalue samples in the kstest
at the end of each test. With the old code one needed two or three
orders of magnitude more samples -- at LEAST -p 10000 -- in order for
the final pvalue to be not VISIBLY high biased when applied to perfect
uniform deviates. With the fix -p 100 works "OK" although -p 1000 would
be better and will probably be the default -a(ll) option in 3.x.
The actual fixes are a single line in dieharder/set_globals.c (change
the comment name but not the default number of the ks_test global), a
single line in libdieharder/kstest.c, and switching the order in
libdieharder/std_test.c so that ks_test == 0 runs kstest, not
kuiper_kstest. Fixing the documentation is probably not worth it in
2.28.
I would suggest still holding out on actually making the fixes for a
bit, as I'm actively playing with things and testing out the new code
(in a moment with aespipe as I still haven't finished rng_aes). The
changes are preserved and saved as 3.29.1beta, though, with the addition
of a very useful and useable rgb_kstest_test routine that can be used to
further debug and/or improve the kstest used to generate final test
pronouncements of pass/fail/weak etc. And we still need to decide if it
is time to move on to v3, as a lot of people are using it and it seems
to be stable and usable and has lots of bug fixes and feature
enhancements (including much better future scalability as I add tests
and generators).
rgb
------------------------------------------------------------------------
r483 | rgbatduke | 2009-10-06 09:08:59 -0400 (Tue, 06 Oct 2009) | 7 lines
The new rgb_kstest_test in this version actually works, but it looks
like we have some sort of libtool derived bug in the build. I'm
checking in clean so I can rerun libtoolize, which will hopefully get me
a new ltmain.sh, which will hopefully build a libtools script that
contains the correct ECHO/echo lines and perhaps deals with MODE
correctly.
------------------------------------------------------------------------
r482 | rgbatduke | 2009-10-04 09:44:12 -0400 (Sun, 04 Oct 2009) | 15 lines
Ignore today's checkins, Dirk. I'm adding a new test (rgb_kstest_test)
to test the kstest routines (as well as to MAYBE function as a new test
in the suite, but I doubt that it will be sensitive enough to be any
use). Basically, I plan to fill a vector with tsamples uniform
deviates, run a kstest on them (which tests for uniformity and generates
a pvalue that should itself be a uniform deviate) to fill in the usual
vector of pvalues and run the final kstest on that. A kstest SHOULD
recursively take uniform deviates to a uniform deviate, for a large
enough set of uniform deviates, and I want to find out a) if this is
true; and b) if it is true just what a "large enough set" is. This test
should help me find out both, and if a) is incorrect, to perhaps "fix"
the kstest as this is their THEORETICAL behavior and failure to
accomplish this indicates a bug in the code or a real problem in the
theory...
------------------------------------------------------------------------
r481 | rgbatduke | 2009-10-02 16:32:30 -0400 (Fri, 02 Oct 2009) | 3 lines
This checks in what might be a VERY IMPORTANT fix to kstest, due to
David Bauer. Needs more testing, though, with a world class crypt.
------------------------------------------------------------------------
r480 | rgbatduke | 2009-03-17 08:27:23 -0400 (Tue, 17 Mar 2009) | 2 lines
Checking in so I can leave.
------------------------------------------------------------------------
r479 | rgbatduke | 2009-03-17 00:28:25 -0400 (Tue, 17 Mar 2009) | 3 lines
This is broken as far as the aes generator is concerned, AND I'll
probably need to put libaes into the dieharder packaging.
------------------------------------------------------------------------
r478 | rgbatduke | 2009-01-29 10:57:43 -0500 (Thu, 29 Jan 2009) | 8 lines
Checking in a LOT of changes and additions associated with v3 -- I've
been holding them so as not to screw up the RDH side of things before
everything stabilizes. A lot of the stuff below is documentation
intended to guide future development and additions. Some of it is fixes
(data and otherwise) in diehard tests. Some of it fixes the way
dieharder (the binary, not library) initializes (and adds local tests)
and runs all tests.
------------------------------------------------------------------------
r477 | rgbatduke | 2008-10-08 15:11:30 -0400 (Wed, 08 Oct 2008) | 3 lines
Sending in a minor change to START fixing up parsecl.c to be more
robust.
------------------------------------------------------------------------
r476 | rgbatduke | 2008-09-29 22:22:38 -0400 (Mon, 29 Sep 2008) | 26 lines
This checkin should make Mattias "perfectly happy". It enables:
rgb@lilith|B:1140>./dieharder -a -D default -D -1 -D prefix -D
no_whitespace -D show_num -s 1
0|rng_name|num|rands/second|
1|mt19937|13|1.17e+08|
0|test_name|num|ntup|tsamples|psamples|p-value|Assessment|Seed
2|diehard_birthdays|0|0|100|100|0.16302070|PASSED|3542794731
2|diehard_operm5|1|5|1000000|100|0.04115096|PASSED|2304163927
2|diehard_rank_32x32|2|0|40000|100|0.92631752|PASSED|2245496723
2|diehard_rank_6x8|3|0|100000|100|0.86585575|PASSED|3223183182
2|diehard_bitstream|4|0|2097152|100|0.60520232|PASSED|2615297461
2|diehard_opso|5|0|2097152|100|0.05852624|PASSED|1542897414
which is, AFAICT, exactly what he wants. Oh, he wants the full test
name as an output field option instead of the short name, but he might
have to wait on that...
This also checks in a couple of minor bugfixes reported by Mattias and
Marc Abel. Marc has another feature request I haven't looked at yet.
Both of them are using dieharder quite heavily in the beta version, so
I'm hoping that it is shaking out. I'm also hoping this round of
changes didn't break anything.
Not quite ready for a release, but perhaps getting closer.
------------------------------------------------------------------------
r475 | rgbatduke | 2008-09-22 19:10:01 -0400 (Mon, 22 Sep 2008) | 2 lines
Added small section to man page on output control.
------------------------------------------------------------------------
r474 | rgbatduke | 2008-09-22 07:24:15 -0400 (Mon, 22 Sep 2008) | 12 lines
Small changes to add dieharder-config.in to the Makefile.am and to
get the rpm to autobuild with a split between @VERSION@ and
@DIEHARDER_LT_VERSION@ -- I basically twinned the latter into
@DIEHARDER_LIB_VERSION@. A slight pain, but it means the library can
have a different version (no beta) compared to the program (with beta).
The successful RPM build means that everything is in place, although
there is still cruft in include and probably libdieharder and there may
be NON-cruft that isn't in the repo. But I gotta go and won't find it
now.
------------------------------------------------------------------------
r473 | rgbatduke | 2008-09-22 03:29:33 -0400 (Mon, 22 Sep 2008) | 24 lines
OK, this is PARTIALLY decrufted -- I doubt that it is finished yet, and
I haven't even started to tackly the proper decrufting of the library.
I've cleaned up the dieharder man page, checked all the autodocumenting
features of dieharder, and run a bunch of tests. I've preemptively
fixed around three or four bugs, and finished implementing a couple of
features that were missing on the previous checkin, e.g. the ability to
use any of:
dieharder -d diehard_sums -g 6
dieharder -d 14 -g gfsr4
...
(all tests AND rngs selectable by name OR number. It is 3:20 am, and I
have to get up by 6:40. It is therefore bedtime.
If I haven't forgotten to checkin any files, it should build and run
pretty well. Probably not perfectly, but pretty well. Matthias should
be happy -- if he uses -c ',' and -D prefix, he'll get close to exactly
what he wants. Everything seems to be working as far as I can tell with
limited testing.
Might be a day or three before I can really tackle this again. G'night.
------------------------------------------------------------------------
r472 | rgbatduke | 2008-09-22 00:13:56 -0400 (Mon, 22 Sep 2008) | 92 lines
OK, this is a checkin of dieharder 3.28.0beta. It is NOT fully
decrufted, but seems to mostly nearly hopefully all work. That probably
means that there are only a dozen or two bugs. There are also a few
API features I haven't implemented in the UI yet -- specifically the
reporting of errors (like a rewind of a file in mid-test). So this
ISN'T really a beta -- more like an alpha.
Dirk, please do not start converting this over into Rdh yet. I'm
checking it in for two reasons -- one is that I have to remove a whole
pile of files to decruft and svn won't let me until I check in. Another
is that I NEED to checkin -- it makes me nervous to have this large a
delta not checked in. There are probably a couple of critical sources
I've forgotten to add entirely and I won't know until I check in and
check out and build a fresh clean copy.
MOST of what I've done, from Rdh's point of view, should be invisible
after Rdh is (fairly minimally) hacked one last time. Basically Rdh
should use its own version of set_globals.c (or patch mine, or ifdef
mine). Note that there are a lot fewer variables, and this list may
shrink a bit more.
ntuple's meaning hasn't changed, and you already handle that.
Seed and strategy work together -- the latter is a new variable and
SHOULDN'T affect Rdh, but just in case, here's what it does.
The default strategy for dieharder is to reseed once when a rng is
chosen. In the default output view, the seed is written to the rng
information part of the header. That way if one wishes to reproduce
a test result, one can enter the seed with -S seed.
However, this is actually a PROBLEM if one runs multiple tests from this
one seed. If one runs tests out of order, the results will be
different. This is true for me running all the tests in order via
dieharder -a if I should ever change test order, and is true for Rdh if
one runs first one test, then another in different orders, from the same
single specification of rng and/or Seed.
Also, there may be situations where one wants to run a single test
multiple times, each time from a newly selected seed to (in essence)
determine if some seeds are "bad" for a given rng. dieharder doesn't
yet support that, but I think that in R it would be pretty easy.
Setting strategy to anything nonzero (say, 1) causes dieharder to reseed
the random number generator at the beginning of any test. If -S seed
was NOT specified, it just generates a new random seed, so that one
could run e.g. diehard_birthdays 100 times in a loop and each one would
reseed anew with a new random seed. If -S seed IS specified, it uses
the specified seed. If a file is being used for input (not stdin) it
forces a rewind at the beginning of each test, which is actually not a
bad thing to do as it conserves rands. (I hope, I haven't yet tested
this latter feature much yet but it should work.:-).
SO, Rdh will probably just leave strategy = 0 alone and either set the
global value of Seed for one-time initialization with a fixed seed or
not, accepting a one-time random seed. But you CAN support strategy if
you ever think you need to.
(From my point of view its primary purpose is to make the creation of a
validation run trivial -- if I run
dieharder -a -S 1 -s 1
I generate a validation table. If I run
dieharder -a -S 1 -s 1 -D test_name -D pvalues
I generate a very sparse validation table (basically, just test name and
pvalue). You can throw a -c ' ' in there if you want white space
separation or -c ',' if you prefer comma separated values, etc. You
have nearly complete control over dieharder's output at this point, see:
dieharder -F
for a listing of output control flags. dieharder -l and dieharder -h
and dieharder -g -1 all work as before, but I've completely flattened
and rationalized test-space so it works just like rng-space (and I mean
JUST like it -- very similar setup.
I completely changed (seriously streamlined and cleaned up) the test
call procedure, so a SINGLE run_test() routine does pretty much all the
work, a SINGLE output() routine does all of THAT work, and so that all
the dieharder CLI-specific stuff is done in parsecl(), and then only if
you enter specific commands, or in dieharder.c (main()). I tried to
label things that are CLI specific there as well.
If you want to grab a copy of this and build it and play with it, feel
free. As soon as this checkin is complete, though, I'm going to start
decrufting and checking to be sure I have all the required modules
actually in the repo.
------------------------------------------------------------------------
r453 | rgb | 2008-09-10 07:16:17 -0400 (Wed, 10 Sep 2008) | 14 lines
Dearie me. This checkin actually works, although I still haven't
implemented the output.c patch needed by Dirk or fixed the missing .h
file in include/dieharder. Still, I >>HAVE<< turned all the tests into
type int's (still no returns) and stripped dieharder.h and split off a
globals.h file that I don't think I'm going to need, actually, although
it was useful while stripping dieharder.h as a reservoir of codelets
that I needed to put back.
Anyway, it is entirely possible that Dirk will read these words as I
ALSO have dieharder.googlecode.com set up with him on it, and while this
checkin is still local (about to be svnsync'd up, not directly checked
in) VERY SOON NOW I may try checkout out from the google repo, which
will of course check BACK into the google repo thereafter.
------------------------------------------------------------------------
r452 | rgb | 2008-09-09 18:38:14 -0400 (Tue, 09 Sep 2008) | 4 lines
This checks in a code fragment that reseeds the rng at the beginning of
each run_whatever segment. This fragment "guarantees" that every test
run uses a fixed Seed if it is set.
------------------------------------------------------------------------
r451 | rgb | 2008-09-08 01:18:25 -0400 (Mon, 08 Sep 2008) | 2 lines
This now works. 2.28.1 indeed I dub thee.
------------------------------------------------------------------------
r450 | rgb | 2008-09-07 23:53:50 -0400 (Sun, 07 Sep 2008) | 3 lines
This seems to fix the output of sts_serial so it is consistent. I do
have a few small bugs to clean up to get a "perfect" display.
------------------------------------------------------------------------
r449 | rgb | 2008-09-07 13:58:56 -0400 (Sun, 07 Sep 2008) | 2 lines
So this is 2.28.1, for the moment and sake of argument.
------------------------------------------------------------------------
r448 | rgb | 2008-09-07 13:58:00 -0400 (Sun, 07 Sep 2008) | 2 lines
This is ready to get some sort of rev boost.
------------------------------------------------------------------------
r447 | rgb | 2008-09-07 10:00:25 -0400 (Sun, 07 Sep 2008) | 6 lines
This adds a "new" test -- the rgb_lagged_sums test, which is the
user test but wrapped up to run on a whole sequence of values, the
way I need to make sts_serial run very shortly. It is sufficient
to CLEARLY SHOW that mt19937 is actually a weak generator -- it
is "too uniform".
------------------------------------------------------------------------
r444 | rgb | 2008-09-06 19:50:52 -0400 (Sat, 06 Sep 2008) | 2 lines
This SHOULD be everything. Table output mode should now work for -a.
------------------------------------------------------------------------
r443 | rgb | 2008-09-06 18:43:39 -0400 (Sat, 06 Sep 2008) | 3 lines
This fixes four more tests. I can now run a LOT of the way through -a
before reverting to the old style output.
------------------------------------------------------------------------
r442 | rgb | 2008-09-06 14:37:53 -0400 (Sat, 06 Sep 2008) | 8 lines
This is coming along nicely. I have pretty much everything set up for
table vs report output and am streamlining the run_whatever routines to
the point where only a tiny bit of test-specific initiation
differentiates them. If I could move it into the test itself, I could
pretty much completely simplify the dieharder CLI code to a single
generic test shell call plus a SMALL set of specialized calls for e.g.
benchmarks or non-standard tests that don't return pvalues per se.
------------------------------------------------------------------------
r441 | rgb | 2008-09-05 15:08:47 -0400 (Fri, 05 Sep 2008) | 7 lines
This actually now works to display tables. Time to hack hack hack
and make ALL the tests work with a table. Right now most of them will
ignore it. I really should combine report and table in "results" and
put a SINGLE CALL to results in run_whatever.c. Results must then
"do it all". Also, I think I'm going to run the benchmarker on ALL
non-filesystem tests to get a timing, IF the table/timing flag is set.
------------------------------------------------------------------------
r440 | rgb | 2008-09-05 08:39:13 -0400 (Fri, 05 Sep 2008) | 3 lines
This applies a small patch from Dirk that just cleans up a few issues in
dieharder.h.
------------------------------------------------------------------------
r439 | rgb | 2008-09-05 07:20:58 -0400 (Fri, 05 Sep 2008) | 3 lines
OK, we'll try ONE LAST change -- commenting out the fclose -- before
sending this to Dirk.
------------------------------------------------------------------------
r438 | rgb | 2008-09-05 07:16:01 -0400 (Fri, 05 Sep 2008) | 15 lines
This is a 2.27.14 checkin. I'll shoot it off to Dirk who is waiting on
it. I noted, however, that my NEW permutations test FAILS (or should
fail) mt19937! It produces too GOOD a spread of permutations,
consistently! This is fascinating information. It means that perhaps
operm5 is NOT broken; maybe getting permutations to work out
multinomially is the most difficult test one can put an rng to.
Something to look at later.
This checkin should fix dieharder and libdieharder so that one can run
multiple tests (including invocation of the same test or different rngs)
from a single dieharder call. This cannot happen in dieharder -- don't
worry. But it can and will happen in Rdh and in gdieharder, so it is an
important fix nonetheless.
------------------------------------------------------------------------
r437 | rgb | 2008-09-04 17:07:26 -0400 (Thu, 04 Sep 2008) | 20 lines
This actually checks in so that we can pop the snapshot number in just a
minute -- a major bugfix relative to Rdh. The two problems addressed
herein are:
a) In order to be able to run many tests, one after another, on many
rngs, one after another, I have to be more careful than I have been
about allocating and freeing test resources on the one hand, rngs (which
must be freed) on the other hand, and resetting the static bit buffers
used in bits.c on the third hand.
b) I also needed to set up startup with a split into two sections, one
that runs only one time period and one that runs every time a new test
is created, executed, and destroyed (with everything reset at the end to
run a new test).
The good thing beyond Rdh in these changes is that several of them are
equally necessary in a GUI version e.g. gdieharder. So nothing being
done here is wasted...
------------------------------------------------------------------------
r436 | rgb | 2008-08-19 12:44:28 -0400 (Tue, 19 Aug 2008) | 4 lines
This really, really should be IT! I dub thee 2.27.12 as I've got to get
on with things. This version works for BOTH x86_64 and i386. It should
build into debian packages. It should rpmbuild --rebuild.
------------------------------------------------------------------------
r435 | rgb | 2008-08-19 12:34:56 -0400 (Tue, 19 Aug 2008) | 5 lines
This is a nearly final (for now) checkin for 2.27.12. It builds
decently. I probably need to put back config.sub as it is one of the
many things that should get automagically rebuilt -- if I have a
placeholder for it already present.
------------------------------------------------------------------------
r434 | rgb | 2008-08-19 12:16:18 -0400 (Tue, 19 Aug 2008) | 4 lines
We'll give this a try -- this defines __auto_build_post at the top of
the specfile and SEEMS to prevent the check-buildroot crash in rpm
building without my particular .rpmmacros.
------------------------------------------------------------------------
r433 | rgb | 2008-08-19 11:50:28 -0400 (Tue, 19 Aug 2008) | 2 lines
With any luck at all, this will be ready to fly.
------------------------------------------------------------------------
r432 | rgb | 2008-08-19 11:42:31 -0400 (Tue, 19 Aug 2008) | 2 lines
We're working our way back to not losing everything we just did, dammit.
------------------------------------------------------------------------
r431 | rgb | 2008-08-19 11:34:04 -0400 (Tue, 19 Aug 2008) | 2 lines
Try try again...
------------------------------------------------------------------------
r430 | rgb | 2008-08-19 11:31:38 -0400 (Tue, 19 Aug 2008) | 3 lines
Sending this towards lucifer. We really need to make sure everything is
in subversion!
------------------------------------------------------------------------
r429 | rgb | 2008-08-19 07:40:00 -0400 (Tue, 19 Aug 2008) | 4 lines
This MAY fix things up so that they rebuild more cleanly. I'll try
sending them on to Dirk directly in tarball form to see if they make him
all happy.
------------------------------------------------------------------------
r428 | rgb | 2008-08-19 06:43:42 -0400 (Tue, 19 Aug 2008) | 4 lines
Well, perhaps we should send this in since we could be suffering from
early hard disk crash syndrome. In fact, I should drag out my 8 GB USB
flash (at least) and back up Src if nothing else.
------------------------------------------------------------------------
r427 | rgb | 2008-08-19 06:22:07 -0400 (Tue, 19 Aug 2008) | 2 lines
Moving math down to bugs, as it is really a set of patches.
------------------------------------------------------------------------
r426 | rgb | 2008-08-19 06:21:33 -0400 (Tue, 19 Aug 2008) | 14 lines
We're rearranging this so I can track bugs a bit better. I've really
got only two outstanding ones -- getting aclocal to find libtool on a
system I don't control or understand (problem possible solved by
rerunning ./autogen.sh on that system) and getting the hard path of
missing out of the toplevel Makefile and replacing it with a relative
one so that it can be built without rerunning autogen.sh, maybe. Oh,
and some sort of rpm build wierdness.
Also, Dirk wants me to decruft to where -Wall produces no unused
variable complaints. We'll see about that -- MAYBE I'll do it,
eventually, but unused variables are really pretty harmless and are
sometimes useful and I usually ignore them until I have too much time on
my hands.
------------------------------------------------------------------------
r425 | rgb | 2008-08-19 06:01:36 -0400 (Tue, 19 Aug 2008) | 4 lines
This removes RDieHarder (which Dirk is maintaining separately at this
point). It fixes the newly improved man page (which was broken). It
removes a redundant R directory.
------------------------------------------------------------------------
r424 | rgb | 2008-08-18 18:10:44 -0400 (Mon, 18 Aug 2008) | 3 lines
This fixes a few small errors in the 2.27.11 abstract; no changes to the
actual program, though.
------------------------------------------------------------------------
r423 | rgb | 2008-08-18 16:15:49 -0400 (Mon, 18 Aug 2008) | 19 lines
This checks in the ChangeLog itself, as well as the last few
minor changes in the tests run with the -a command and the
test listing function in the CLI. I think I declare this to be:
2.27.11
and we'll start working on 12. I think this actually fixes
all the outstanding bugs except for the problem in sums and
the problem in operm5 in diehard (and of course there are tests
half implemented as well).
I THOUGHT I'd fixed diehard_sums, actually, but it still most definitely
fails on large -p. I'll have to check sums out explicitly to see why it
doesn't seem to work at the moment. It's possible I dropped the fixes
when recently changing systems.
Anyway, here it is. Bring on the bugs.
------------------------------------------------------------------------
r422 | rgb | 2008-08-18 15:50:15 -0400 (Mon, 18 Aug 2008) | 21 lines
This might be ready for a production snapshot, or a testing snapshot,
or something like that. At any rate, I have BOTH fixed the generator
problem (where rngs have numbers that can change as new generators
are added. I fixed this by significantly increasing the size of the
types[] vector and working moderately hard to pack it with generators
sparsely and sanely -- sparse so there is plenty of room, sane because
the space is now blocked out by general category with room to grown.
This will NOT GUARANTEE that the GSL will not change its internal order,
and dieharder will continue to follow the GSL order where they overlap
as nothing else makes sense.
I >>also<< think I've fixed -r 5, rgb_permutations. This is a
non-overlapping permutations test and runs to more or less arbitrary
order (and seems to work quite nicely where it runs, although it gets
quite slow when we get to very large permutations as one might expect).
I think it is time to bump the minor-minor number to 11 and post it, for
the time being with -r 5 still marked out as experimental in the
help listing.
------------------------------------------------------------------------
r421 | rgb | 2008-08-18 14:33:06 -0400 (Mon, 18 Aug 2008) | 5 lines
This fixes the only real bug, I think -- dieharder now dies with a
complaint if it is invoked with an invalid -g entry, sort of. Hmmm,
actually I might need to tweak this fix just a bit more to check
on the complete range.
------------------------------------------------------------------------
r420 | rgb | 2008-08-18 14:29:17 -0400 (Mon, 18 Aug 2008) | 3 lines
This actually works and has the number spaces previously discussed
all implemented and everything.
------------------------------------------------------------------------
r419 | rgb | 2008-08-17 20:15:08 -0400 (Sun, 17 Aug 2008) | 6 lines
This is a step in the process of figuring out how to "fix" the numbers
for rngs to test. I think I'm going to have to move my own setup
routine to libdieharder. But I'm still trying to figure out whether or
not I can or should replace the gsl code itself, or run something in
parallel.
------------------------------------------------------------------------
r417 | rgb | 2008-08-17 13:30:41 -0400 (Sun, 17 Aug 2008) | 3 lines
This rearranges the Bugs stuff. I need to create a "cleared" directory
in Bugs so I can see what is done, as well.
------------------------------------------------------------------------
r416 | rgb | 2008-08-17 12:31:18 -0400 (Sun, 17 Aug 2008) | 5 lines
This updates the abstract, which is also important documentation and has
been added to the %doc lines in the specfile. I should really create a
make installdoc target in Makefile.am that can install a bunch of
documents, but that is for another day.
------------------------------------------------------------------------
r415 | rgb | 2008-08-15 19:03:26 -0400 (Fri, 15 Aug 2008) | 4 lines
This is 2.27.10-1, and adds stdin support and fixes a few bugs in the
specfile. I'm posting it for distribution, although it is still not
"finished" -- this is very much development snapshot time.
------------------------------------------------------------------------
r414 | rgb | 2008-08-15 14:14:45 -0400 (Fri, 15 Aug 2008) | 4 lines
This adds the capability to input a binary stream into stdin. This
patch is due to Paul Serice. He also included a (standalone?) rng to
test with, which I'll mess with in a moment.
------------------------------------------------------------------------
r413 | rgb | 2008-08-03 08:40:35 -0400 (Sun, 03 Aug 2008) | 3 lines
Added a version string to help. Probably should add one elsewhere, e.g.
at the top of rng listing and test listing.
------------------------------------------------------------------------
r412 | rgb | 2008-08-01 09:11:10 -0400 (Fri, 01 Aug 2008) | 7 lines
Had to back off the svn2cl in the rpm build -- it now has to be run BY
HAND before just MY rpmbuild (dummy me) so that it won't fail for end
users without svn2cl and an svn repo to match. It still builds
perfectly, and I'll do a full rpm build cycle including this step to get
this last comment into the changelog.
------------------------------------------------------------------------
r411 | rgb | 2008-07-29 12:01:51 -0400 (Tue, 29 Jul 2008) | 46 lines
...And it is. So henceforth ALL of my svn checkins will be duly noted
in the ChangeLog, which will therefore get to be very long indeed, as I
check in a lot.
Damn! I guess this means no more swearing, and I sure hope I haven't
impugned anyone's character in the first 400 plus checkins. At least
not too much. Hmmm, I wonder just what I HAVE said down there. I tend
to treat SVN logs as sort of a free-association commentary about the
project in addition to being a place to document changes. Some changes
have "real" documentation in the form of the svn diffs, as well -- I
haven't been too specific about just EXACTLY what I've changed every
time.
Well, better a ChangeLog up to date and verbose than one months to years
old, and I'll be hogtied and hung by the nose before I write a precisely
formatted description of changes day to day as I work on this -- twice.
So SVN it is (dating back to when it was really CVS, BTW, imported to
SVN).
Next, I suppose we should provide at least >>a<< fix for the problem of
shifting generator numbers, and on my own I want to clean up some
issues with file read -- arrange it so we can read in very large files
and eliminate/document file-based usage redundancies such as needing -g
65 AND -f filename. This will be a bit tricky, as dieharder can read in
raw (binary) as well as ascii in many formats, and using the -g flag to
differentiate at least raw vs cooked has been an easy solution.
Regarding numbers, it has been suggested that we do two things:
a) Take action to ensure that the numbers don't change any more, even if
the gsl or I or a user add new generators. This is actually a bit of a
PITA (much as I see the motivation for doing so, as moving numbers break
user scripts) because the way generators are added is to run through all
the supported ones of each type and just add them in gsl or call order.
However, there are several ways I can do it (some requiring more
programming than others) and I'll see which one looks to be easiest and
most robust.
b) Arrange it so we can call generators by name, not just by number.
Names would presumably not change even if numbers were inserted, and
many users will be interested in testing a single generator they are
thinking of using by name.
rgb
------------------------------------------------------------------------
r410 | rgb | 2008-07-29 11:40:30 -0400 (Tue, 29 Jul 2008) | 5 lines
OK, this seems to work, autobuilding ChangeLog from the svn log of my
timestamp file, that basically picks up a message like this one every
time I do an svn checkin. We'll see in a moment if this is reflected in
ChangeLog on the next build.
------------------------------------------------------------------------
r409 | rgb | 2008-07-29 11:26:48 -0400 (Tue, 29 Jul 2008) | 2 lines
Just testing...
------------------------------------------------------------------------
r407 | rgb | 2008-07-22 09:06:14 -0400 (Tue, 22 Jul 2008) | 5 lines
This is, in fact, a major checkin. A serious won't-build-on-lib64 bug
was identified and resolved, the resolution being the addition of
--libdir=... to the ./configure line in the toplevel specfile.
Truthfully, I should probably add this to autogen.sh.
------------------------------------------------------------------------
r406 | rgb | 2008-03-27 12:33:04 -0400 (Thu, 27 Mar 2008) | 8 lines
This is getting close to a release snapshot once again. We do need to
set the number of tests correctly. I may have to give up on operm5 or
rgb_operm for the time being (again) but at least I have
rgb_permutations and rgb_bitdist, both of which test similar things
along with sts_serial ditto. I do need to try to fix sums. I'd love to
add a couple of the contributed tests. I do need to go through the
opso, dna, etc. tests and "fix" them wrt overlap and so on.
------------------------------------------------------------------------
r405 | rgb | 2008-03-26 21:20:57 -0400 (Wed, 26 Mar 2008) | 4 lines
This APPEARS to be a functional permutations test, as expected/hoped.
It uses NON-overlapping samples, although at a guess it would work
for overlapping ones, just not as well.
------------------------------------------------------------------------
r404 | rgb | 2008-03-26 17:09:43 -0400 (Wed, 26 Mar 2008) | 4 lines
This is one, last, poor attempt to get SOME sort of functioning
permutations test. I actually had this working "inside" rgb_operm()
so I imagine I will have it working again here shortly.
------------------------------------------------------------------------
r403 | rgb | 2008-03-26 13:39:14 -0400 (Wed, 26 Mar 2008) | 6 lines
This appears to be "fixed" so that bitstream runs without complaint. I
will need to check for memory leaks in the long run (heh heh). This
once again takes me to where "everything works" but sums operm5, I
think. I'll do another standard S 1 run in a second to make a new
snapshot with a fixed/reference bitstring.
------------------------------------------------------------------------
r402 | rgb | 2008-03-24 15:39:49 -0400 (Mon, 24 Mar 2008) | 6 lines
This fixes up all the tests that seem to require chisq with explicit
cutoffs (frequently one that will be ignored). Cutoff does matter
in the rgb_bitdist test, though! I think all of these tests are at last
valid through -p 100 and possibly -p 1000, except for sums, bitstream
(which I'll fix shortly) and the perennial operm5.
------------------------------------------------------------------------
r401 | rgb | 2008-03-24 00:18:51 -0400 (Mon, 24 Mar 2008) | 4 lines
I am HOPING that this is all good, finally. It runs and gives very
reasonable answers (once) at -p 1000. Now to see if this is
semiconsistent. I've fixed a few zillion small bugs...
------------------------------------------------------------------------
r400 | rgb | 2008-03-22 18:33:47 -0400 (Sat, 22 Mar 2008) | 6 lines
This repairs one serious bug -- I was misinitializing itail -- and makes
it a bit more precise as far as counting dofs.
------------------------------------------------------------------------
r399 | rgb | 2008-03-22 15:54:02 -0400 (Sat, 22 Mar 2008) | 6 lines
This MAY at long last, actually fix rgb_bitdist by simultaneously fixing
vtests in general. Our chisq now AUTOMATICALLY bundles the tail(s) or
low spots in a chisq, independent of where they occur. It looks like I
failed to set ndof correctly, so there will be another round of tests
and a quick checkin in a moment.
------------------------------------------------------------------------
r398 | rgb | 2008-03-19 02:23:40 -0400 (Wed, 19 Mar 2008) | 13 lines
THIS IS A WORKING STS SERIAL as far as I can tell. It correctly reveals
known weak generators. It seems to pass known "decent" generators. It
is very sensitive to certain kinds of failure.
I now should redo rgb_bitdist to be the NON-overlapping version of this
test, at the very least comparing the freq output (generated with the
same code, I think, ported the other way) to a multinomial chisq on the
expected values. If I can actually check the distribution of each
number against an asymptotically normal curve, that would be great too.
If I could IN THE SAME TEST check the asymptotic fraction -- something
like the monkey tests do -- that would be just fabulous! Especially if
I use a normal and make the comparison very good and not empirical.
------------------------------------------------------------------------
r397 | rgb | 2008-03-18 20:45:03 -0400 (Tue, 18 Mar 2008) | 4 lines
This is very, very close to working perfectly WITH LABELS for
all the histograms generated by sts_serial. We'll save it just because
it looks really useful.
------------------------------------------------------------------------
r396 | rgb | 2008-03-18 17:13:51 -0400 (Tue, 18 Mar 2008) | 9 lines
As far as I can tell, sts_serial now works perfectly. Time to clean up
its act. I will start by decrufting some of the superfluous output from
the library call, then I'm going to FIX the test struct so that each
test has its OWN descriptor line that can be set along with its pvalue
and that will be used by the histogram and/or single line output routine
to identify the associated statistic. I have to make it a bit easier
to make a single test call and get back the MATRIX of p-values for a set
of statistics all generated with the single call.
------------------------------------------------------------------------
r395 | rgb | 2008-03-17 00:58:13 -0400 (Mon, 17 Mar 2008) | 4 lines
This, finally, appears to work perfectly. The last thing I need to do
is to put all of the pvalues somewhere to be passed back to the caller,
in order.
------------------------------------------------------------------------
r394 | rgb | 2008-03-16 21:44:35 -0400 (Sun, 16 Mar 2008) | 3 lines
This fixes a build problem on x86_64 -- must not have an explicit
-L/usr/lib on x86_64 systems, empirically.
------------------------------------------------------------------------
r393 | rgb | 2008-03-16 20:55:43 -0400 (Sun, 16 Mar 2008) | 8 lines
This is much closer. Fixed a few small bugs, and one fairly large one
from the transition to a loop. This is "probably" right at this point.
The interesting question is whether and how we can generate statistics,
pvalues, and results for the whole vector of results. In principle we
can, but I don't know that I've done 14 in a row. OR, maybe I'll figure
out that all I need to do is m = 16 (as it includes all its smaller
cousins, supposedly).
------------------------------------------------------------------------
r392 | rgb | 2008-03-16 15:40:29 -0400 (Sun, 16 Mar 2008) | 3 lines
This isn't really done, but we're going to check it in since it sort of
mostly works.
------------------------------------------------------------------------
r391 | rgb | 2008-03-12 17:47:53 -0400 (Wed, 12 Mar 2008) | 2 lines
Let's see if this revision works...
------------------------------------------------------------------------
r388 | rgb | 2008-03-12 13:34:59 -0400 (Wed, 12 Mar 2008) | 5 lines
Sending it ALL in to Duke and upstairs. There is a bug
of sorts in our chisq -- we don't have a good way of
specifying the number of degrees of freedom for some
of the tests and we need to.
------------------------------------------------------------------------
r385 | rgb | 2008-03-12 07:09:20 -0400 (Wed, 12 Mar 2008) | 3 lines
This is about as fixed as I can make it without doing algebra. Algebra
later, fix code up now.
------------------------------------------------------------------------
r384 | rgb | 2008-03-11 19:26:01 -0400 (Tue, 11 Mar 2008) | 7 lines
This APPEARS to check with John E. Davis's patches. diehard_dna is no
problem -- the drop-in replacement there produces identical numbers,
runs in half the time. rgb_bitdist gives DIFFERENT numbers but is MUCH
faster. I still have several "small bugs" to check out including bugs
in specific tests, and I probably will need to test the static routines
as well.
------------------------------------------------------------------------
r383 | rgb | 2008-03-11 15:49:34 -0400 (Tue, 11 Mar 2008) | 5 lines
Preparing to do the next round(s) of patches. I suppose we'll start
with the get_bit_whatever patches. First I need to generate a "before"
for at least one test that uses them, e.g. birthdays. Then we'll
compare it to after with the fixed seed of 1.
------------------------------------------------------------------------
r382 | rgb | 2008-03-11 00:53:27 -0400 (Tue, 11 Mar 2008) | 3 lines
This is beefing up the tarball so it just works with the usual
preexisting configure.
------------------------------------------------------------------------
r381 | rgb | 2008-03-11 00:25:48 -0400 (Tue, 11 Mar 2008) | 5 lines
RIGHT THIS INSTANT we finally have a clean F8 build with the new
Makefile.am's and a hacked specfile. Alas, to fix the rpath problem
I had to resort to using chrpath, which sucks big time. Unless there
is a libtool directive for fixing it, though, I'm SOL.
------------------------------------------------------------------------
r380 | rgb | 2008-03-10 09:41:26 -0400 (Mon, 10 Mar 2008) | 5 lines
I don't know -- I think that we're getting closer and closer. We will
have the code completely and cleanly GBT based by the end of the
morning, I think. Well, maybe not since I'm going in to see if there
is anything entrepreneurial going on with Thom LaBean.
------------------------------------------------------------------------
r379 | rgb | 2008-03-10 08:08:18 -0400 (Mon, 10 Mar 2008) | 7 lines
OK, this is pretty much all the patches, I think. We should be very
close to BSD-ready. I wonder if I can add the word "beta" to the
"release" or the "8" in VERSION?
Oh, one other thing -- I very definitely need to fix the rpm build
(specfile). Let's install into /tmp and see what we've got.
------------------------------------------------------------------------
r378 | rgb | 2008-03-10 07:54:46 -0400 (Mon, 10 Mar 2008) | 6 lines
Decrufted the makefiles, added a /dev/arandom rng for BSD, fixed tiny
modulus bug in rng list display, added sensible error message extensions
for people running across distros for the /dev/?random devices (I
"could", of course, use fstat to determine if the devices are there and
refuse to add them if they aren't, but that's for the future).
------------------------------------------------------------------------
r377 | rgb | 2008-03-09 22:07:15 -0400 (Sun, 09 Mar 2008) | 4 lines
Checking in a mildly broken set. FWIW, a full build actually works.
OTOH, make rpm does not. Perhaps not too unsurprising. I need to do
a full install into /tmp and see what comes up.
------------------------------------------------------------------------
r376 | rgb | 2008-03-09 15:35:38 -0400 (Sun, 09 Mar 2008) | 4 lines
This actually is getting close to being done "the right way". It still
builds, and I think builds an RPM, but I need to work on the library
side to clean it up as well.
------------------------------------------------------------------------
r375 | rgb | 2008-03-09 14:57:03 -0400 (Sun, 09 Mar 2008) | 2 lines
OK, this is really close to being what freebsd wants.
------------------------------------------------------------------------
r374 | rgb | 2008-03-09 13:55:12 -0400 (Sun, 09 Mar 2008) | 5 lines
OK, looks like the BSD patch for rngs_gnu_r.c works, and I'm guessing
that it will work in general UNLESS it has to be the gnu error()
program to interface with R, in which case the patch will have to be
ifdef'd.
------------------------------------------------------------------------
r373 | rgb | 2008-03-09 13:38:06 -0400 (Sun, 09 Mar 2008) | 6 lines
OK, we are in the middle of a Major Patch Job. We're fixing various
small things that are wrong with our GBT port, trying to get it so that
it will automagically build on a wider set of systems. The stuff I've
done so far still builds (I need to test the rpm build though) and
"should" build on gentoo as well as Debian and Fedora/RH.
------------------------------------------------------------------------
r372 | rgb | 2008-02-12 19:01:04 -0500 (Tue, 12 Feb 2008) | 9 lines
This fixes the Crispin bug, -- a bad number in one column of s[i][j]
relative to the original diehard. Sure hope it is the correct one; the
later (c version) diehard matched what I had.
I really need to compute the r and s directly. But then, I think I
understand the operm5 test well enough to do it "directly" without
overlap as a non-overlapping permutations test. It might even be fun to
make overlap just an option.
------------------------------------------------------------------------
r366 | rgb | 2008-01-30 07:47:48 -0500 (Wed, 30 Jan 2008) | 2 lines
This fixes the abstract AGAIN...
------------------------------------------------------------------------
r365 | rgb | 2008-01-02 11:23:16 -0500 (Wed, 02 Jan 2008) | 4 lines
This should be the absolute minimum needed to build clean from tarball
using "just" ./configure followed by make. Need to fix the configure
script to check for the gsl and anything else that might be needed.
------------------------------------------------------------------------
r362 | rgb | 2007-12-07 12:40:35 -0500 (Fri, 07 Dec 2007) | 2 lines
This checkin just updates the release number.
------------------------------------------------------------------------
r361 | rgb | 2007-12-06 14:39:53 -0500 (Thu, 06 Dec 2007) | 7 lines
This patches two small things -- adds fflush(stdout); so tees of the
results don't make you wait. Removes a development line from
diehard_operm5 that shouldn't be there in any KIND of real release.
Need to bump the snap revision and reinstall.
------------------------------------------------------------------------
r360 | rgb | 2007-11-19 07:38:36 -0500 (Mon, 19 Nov 2007) | 29 lines
This is pretty much a fully functional version. I fixed the last bug,
which turned out to be that I had the right idea but missed the:
I + P + P* + P^2 + P*^2 + ...
and was accidentally doing (when I empirically noted that including k=0
in the sum was necessary) either:
I + P + P^2...
or
2I + P + P* + ...
Added a conditional to eliminate the second k = 0 instance in the core
loop summing the fi*fj and got perfect correspondance through -n 3. The
-n 3 matrix is different, but pretty obviously a permutation of the
AKM matrix as to be expected since the permutation order is arbitrary
and they probably didn't use lexical ordering. The eigenvalues,
however, are dead on the same!
So I'm back up to the point where I should be able to form a test
statistic somehow. I have to covariance matrix precisely in hand --
something at this point about weak inverses (weak because it is singular
and has no inverse?). A bit curious, actually. We'll see.
rgb
------------------------------------------------------------------------
r359 | rgb | 2007-11-19 01:02:46 -0500 (Mon, 19 Nov 2007) | 13 lines
OK, this SEEMS to repair everything, except for some spurious
normalization stuff that is at least consistent between the exact
and experimental matrices. They now come out the same, and I suspect
they are proportional to the nilpotent markov processes paper result.
For k=2 they clearly are -- a factor of 2. For k=3 it is harder to see
for sure. Time to go back to the paper with a calculator.
At least now the matrices are properly symmetric, as well. That means
that their eigenvalues can be computed with my existing code with its
symmetric matrix eigenvalue calls. It does leave me with the
substantial problem of computing a test statistic automagically, but one
small step at a time...
------------------------------------------------------------------------
r358 | rgb | 2007-11-14 07:01:57 -0500 (Wed, 14 Nov 2007) | 7 lines
This works, but my assumptions concerning the inverse of C are incorrect
because (gasp) C isn't invertible. It has eigenvalues and eigenvectors.
I can compute them, apparently -- that's what this snapshot does (I'm
going to compare the results now to what's in my nilpotent processes
paper). I still don't quite see how to make my results into a p-value,
though, and may need help with this...
------------------------------------------------------------------------
r357 | rgb | 2007-11-13 11:53:48 -0500 (Tue, 13 Nov 2007) | 7 lines
It is SO key to preserve this in precisely this state. At this instant
in time, cexact and cexpt are identically formed, one running over all
permutations and the other from sampling, and they work perfectly EXECPT
for the #!)#%@ sign error. I had the sign right, and don't quite see
how I changed the code, so I'm about to look. In the meantime, though,
we mustn't lose this working form...
------------------------------------------------------------------------
r356 | rgb | 2007-10-31 22:11:57 -0400 (Wed, 31 Oct 2007) | 3 lines
This is a broken checkin, but I'm on track for getting operm finished at
last, if only I stick to it.
------------------------------------------------------------------------
r354 | rgb | 2007-10-24 15:19:05 -0400 (Wed, 24 Oct 2007) | 2 lines
Need to send to duke, dummy.s
------------------------------------------------------------------------
r353 | rgb | 2007-10-24 15:18:41 -0400 (Wed, 24 Oct 2007) | 2 lines
This is needed for development, I think.
------------------------------------------------------------------------
r352 | rgb | 2007-10-24 15:17:37 -0400 (Wed, 24 Oct 2007) | 2 lines
Trying again. Dunno how this got screwed up but it is.
------------------------------------------------------------------------
r351 | rgb | 2007-10-03 16:16:38 -0400 (Wed, 03 Oct 2007) | 3 lines
This is actually a pretty solid implementation of
rgb_minimum_distance...
------------------------------------------------------------------------
r350 | rgb | 2007-09-29 17:43:55 -0400 (Sat, 29 Sep 2007) | 3 lines
works perfectly. fixed memory leak. about to improve 2dsphere with
sort, then run -a.
------------------------------------------------------------------------
r349 | rgb | 2007-09-29 11:24:16 -0400 (Sat, 29 Sep 2007) | 2 lines
This is IT and works... rgb_minimum_distance is there.
------------------------------------------------------------------------
r347 | rgb | 2007-09-20 05:37:04 -0400 (Thu, 20 Sep 2007) | 3 lines
I need to fix this, but probably not today. In doc there is a "fix me"
recipe for 2d spheres. I'm currently adding the Linux Magazine invoice.
------------------------------------------------------------------------
r346 | rgb | 2007-09-19 14:44:10 -0400 (Wed, 19 Sep 2007) | 3 lines
Checking in a fix for the BROKEN 2d spheres test. I should be able to
fix 3dspheres as well from it.
------------------------------------------------------------------------
r345 | rgb | 2007-08-28 12:54:51 -0400 (Tue, 28 Aug 2007) | 3 lines
Bug reported by a user, sort of. The README still said you could just
type "make" and you can't. Fixed.
------------------------------------------------------------------------
r344 | rgb | 2007-08-13 18:30:55 -0400 (Mon, 13 Aug 2007) | 2 lines
Will this go in? Time will tell...
------------------------------------------------------------------------
r343 | rgb | 2007-07-16 11:20:54 -0400 (Mon, 16 Jul 2007) | 45 lines
We are working HARD or confirming or denying dieharder_operm5 AND
working out a more general rgb_operm. The convertoperm.pl script
once AGAIN confirms that I'm unpacking and repacking (for C) the
r and s matrices of diehard_operm correctly.
However, AFAICT, the diehard_operm5 JUST tallies up t[120], the count of
the different permutation indices. However, all the permutations should
occur with a SYMMETRIC probability -- I verified this directly by doing
the actual integrals, but in retrospect it is pretty obvious from
symmetry alone. The t-vector therefore has NOTHING TO DO with the
covariance matrix no matter what you do with it, which may be why
diehard_operm5() is a bad test. FWIW, I've added output statements to
diehard_operm5() that dump the t-vector and verified empirically that
yes, it produces a more or less uniform distribution of bin-probability
1/120 -- one could in fact do a chisq test on this directly and very
likely obtain an actual meaningful test, but that is not at all what is
done.
Note well that the sampled distribution of t[] will not SIGNIFICANTLY
vary if computed from overlapping samples! This is simple to see -- it
would be just like computing five distinct samplings of non-overlapping
samples, each of which would be expected to have exactly the same mean
and variance. Because of the overlap there could be a tiny bit of
correlation between the FLUCTUATIONS in the MEASURED mean values for any
given bin, but the bin mean would have to be unchanged for each
overlapping sampling, and for that matter the bin variance for each
sampling would ALSO have to be the same.
The only effect of combining the overlapping five samplings (each with
identical mean and variance!) would therefore be to AT MOST alter the
sampled VARIANCE of the bin distribution, per bin, a tiny bit from what
one might expect analytically from truly iid samples. One certainly
isn't going to see this variation in the variance from two runs -- the
expected statistical noise would overwhelm the signal as this is a
second moment/cumulant effect, a susceptibility if you like, and hence
VERY difficult to resolve.
What we in fact must do is (I'm pretty sure) compute c[][] analytically,
(which I have done) and then simulate the SAME c[][] directly from the
data. Then difference them, which should make the components of
c_exp[][] - c_exact[][] presented as vector a zero mean chisq
distributed object with N! - (N-1)! DoF or something like that -- 120-24
= 96 for N = 5? Here I'll defer to experts, eventually.
------------------------------------------------------------------------
r342 | rgb | 2007-06-16 01:11:57 -0400 (Sat, 16 Jun 2007) | 2 lines
Hopefully this has all the files needed for rgb_operm() checked in.
------------------------------------------------------------------------
r341 | rgb | 2007-06-16 01:09:13 -0400 (Sat, 16 Jun 2007) | 2 lines
This actually builds. Let's see if the new test shows up...
------------------------------------------------------------------------
r340 | rgb | 2007-06-15 20:12:58 -0400 (Fri, 15 Jun 2007) | 23 lines
Checking in several things. rgb_operm.c is a template for my eventual
replacement for operm5. I have about concluded that operm5 is basically
a joke -- it is conceptually incorrect. The correct statistic should be
the overlapping permutations covariance matrix itself. This test just
counts the occurrence of permutations -- the "overlap" part is
completely irrelevant in this context. It returns an aggregate count
vector whose mean is 1/120 (obviously, permutations of 5 objects = 5! =
120). It makes NO DIFFERENCE AT ALL if this vector is evaluated from
overlapping samples or from independent samples -- the mean will be the
same. All that MIGHT change is the variance -- since the samples are
drawn from an overlapping population, one would expect that their
variance would be strictly less than one would expect from truly
independent samples.
In a minute I'll verify this with the overlap flag and a couple of runs
with mt, but I now understand why the test fails. It remains to figure
out how to build a CORRECT overlapping permutations test that uses the
COVARIANCE of overlapping samples as a statistic. I actually think that
this will be pretty easy, but I do have to also understand why the
definition in the nilpotent markov chains paper doesn't (I think) lead
to the numbers that they publish there. Or rather, why my MUCH SIMPLER
algorithm doesn't lead to the same numbers they get.
------------------------------------------------------------------------
r333 | rgb | 2007-06-14 14:54:23 -0400 (Thu, 14 Jun 2007) | 2 lines
This should have no operm in it.
------------------------------------------------------------------------
r332 | rgb | 2007-06-14 14:36:51 -0400 (Thu, 14 Jun 2007) | 2 lines
Probably a good time to update to lucifer, since it is actually up...
------------------------------------------------------------------------
r331 | rgb | 2007-06-08 10:14:04 -0400 (Fri, 08 Jun 2007) | 3 lines
OK, NOW let's actually try to get rng_uvag in, THEN we'll try to
increase its speed...
------------------------------------------------------------------------
r330 | rgb | 2007-05-24 13:35:50 -0400 (Thu, 24 May 2007) | 4 lines
I'm gradually refining the bitstream variance -- 290 is from over
260000 samples. I'm shooting for a s.d. of a couple of tenths, although
honestly it is overkill.
------------------------------------------------------------------------
r329 | rgb | 2007-05-23 01:02:21 -0400 (Wed, 23 May 2007) | 12 lines
OK, this is a major enough checkin. I have at long last fixed
bitstream.c. Marsaglia's published value of sigma is off by close to a
factor of two. sigma is in fact 288.6. I have verified this by
simulation with very excellent RNGs, e.g. MT or gfsr4 AND with HARDWARE
generators (which were failing bitstream before).
Marsaglia couldn't resolve the error (which could just have been due to
a typo at some point that was perpetuated) because his test didn't run
enough times or plot the pvalues in a histogram, but if you plot the
obtained means in a histogram and fit a normal to them, there is
absolutely no doubt.
------------------------------------------------------------------------
r328 | rgb | 2007-05-23 00:35:33 -0400 (Wed, 23 May 2007) | 2 lines
Forgot to check this one in...
------------------------------------------------------------------------
r327 | rgb | 2007-05-23 00:31:03 -0400 (Wed, 23 May 2007) | 2 lines
OK, this is one of two ways to get things to metatron to run faster.
------------------------------------------------------------------------
r326 | rgb | 2007-05-22 21:12:07 -0400 (Tue, 22 May 2007) | 3 lines
This fixes several problems, and is working its way towards a new
release.
------------------------------------------------------------------------
r325 | rgb | 2007-05-22 10:04:12 -0400 (Tue, 22 May 2007) | 2 lines
Silly checkin, as I dropped a file here that goes below.
------------------------------------------------------------------------
r324 | rgb | 2007-05-21 19:46:44 -0400 (Mon, 21 May 2007) | 5 lines
Well, we're making LOTS of little changes here. We're splitting off
Exit() into its own file so it can be shred, we're moving
db_gnu_r_rngs.c to gnu_r_rngs.c, we're adding prototypes and changing
the namespace for RDH. All at once.
------------------------------------------------------------------------
r323 | rgb | 2007-05-21 18:14:19 -0400 (Mon, 21 May 2007) | 3 lines
Fixed small problem in makefile. Otherwise I'm not sure why these files
are changing -- they really shouldn't.
------------------------------------------------------------------------
r322 | rgb | 2007-05-21 15:04:01 -0400 (Mon, 21 May 2007) | 3 lines
I do believe that this now is ready to rock and roll. AFAICT, it "just
works".
------------------------------------------------------------------------
r321 | rgb | 2007-05-21 14:39:08 -0400 (Mon, 21 May 2007) | 6 lines
This is checking in dieharder WITH RDieHarder included and under version
control. RDieHarder now depends on dieharder sources. I still haven't
got the Makefile, with dependencies, built into the existing Makefile
but I will. Basically, I plan three new targets: rdhprep, rdhlib (as
root only) and rdhtgz (to make a "package" out of it).
------------------------------------------------------------------------
r320 | rgb | 2007-05-21 09:34:44 -0400 (Mon, 21 May 2007) | 10 lines
Well, we've been working hard here. Let me try to summarize. I've
instrumented the code to make it "easy" to move it to RDieHarder. Dirk
doesn't understand, quite, how I plan to make RDH a "part of" the
dieharder source tree, but he will when I'm done as it will then be
really easy to prep his cran/debian package. I think, I hope.
I think that I'm going to need to pursue dieharder this summer pretty
aggressively in addition to working on axioms and other books. I should
probably look hard at getting money to support it, as well.
------------------------------------------------------------------------
r319 | rgb | 2007-05-19 08:14:56 -0400 (Sat, 19 May 2007) | 3 lines
We've got to get this to lucifer and then try to unpack it on
metatron...
------------------------------------------------------------------------
r318 | rgb | 2007-04-29 14:06:32 -0400 (Sun, 29 Apr 2007) | 2 lines
This too has to go to lucifer...
------------------------------------------------------------------------
r317 | rgb | 2007-03-12 09:50:39 -0400 (Mon, 12 Mar 2007) | 4 lines
This is the last set of changes associated with 2.24.3 -- which is
hopefully getting really, really close to a release I can live with.
I suppose I should fix the man pages, at least to some extent.
------------------------------------------------------------------------
r316 | rgb | 2007-03-05 10:35:05 -0500 (Mon, 05 Mar 2007) | 6 lines
This looks like it successfully splits off the manual so it is no longer
autobuilt and is not in the rpms.
From here out the manual will be a SEPARATE project aimed square at lulu
publication as a book I might even make money from.
------------------------------------------------------------------------
r315 | rgb | 2007-03-05 10:32:43 -0500 (Mon, 05 Mar 2007) | 2 lines
We'll work our way there by hook or by crook.
------------------------------------------------------------------------
r314 | rgb | 2007-03-05 10:32:03 -0500 (Mon, 05 Mar 2007) | 2 lines
Grrr. I just lost a whole bunch of work...
------------------------------------------------------------------------
r313 | rgb | 2007-03-01 20:00:11 -0500 (Thu, 01 Mar 2007) | 11 lines
This has now been fixed, a la Charles Karney's suggestion and Janusz's
paper demonstrates, to use overlapping samples by default. Some tests
it really DOES matter, if those tests are valid at all (operm5 being a
classic example). I still doubt the bitstream-dna test series -- I
think that there is NO difference between overlapping and
non-overlapping samples there, or at most a tiny shrinking of the
distribution variance in the end, as they don't measure "overlap", only
a CLT-limited mean. Overlapping 20 bit samples should make a tiny shift
in the sample standard deviation and have no other effect in these
tests.
------------------------------------------------------------------------
r312 | rgb | 2007-03-01 19:38:44 -0500 (Thu, 01 Mar 2007) | 4 lines
This fixes the Bug reported by Brian J. Wong, making bl and bu of a
function in bits.c static uint (preserved between calls) instead of
dynamic. Probably my bad...
------------------------------------------------------------------------
r309 | rgb | 2007-02-28 10:39:58 -0500 (Wed, 28 Feb 2007) | 2 lines
Sending this into SVN on general principles.
------------------------------------------------------------------------
r308 | rgb | 2007-02-27 22:38:22 -0500 (Tue, 27 Feb 2007) | 10 lines
This actually seems to work. So we now have 66 random number generators
to test. Tony Pasqualoni's Cellular Automaton rng isn't anywhere NEARLY
as fast as he alleges compared to the GSL routines inside identical
packaging -- in fact it is about par for the course -- but so far it
seems to be 1 bit and 2 bit random, and we're working on a -a run that
will expose it to the latest/greatest operm5. It remains to be seen
whether or not K. Janusz's paper contains algorithms that will let me
check and/or correct Marsaglia's operm5, or perhaps extend the operm5
into a RANGE of tests like rgb_bitdist.
------------------------------------------------------------------------
r307 | rgb | 2007-02-27 22:19:36 -0500 (Tue, 27 Feb 2007) | 6 lines
This is a very first cut of Tony Pasqualoni's Cellular Automaton
random number generator, ported into a gsl standard wrapper. This will
let me test Tony's assertion that this is a good, very fast rng in
exactly the same wrapper that one can study the other "good" (but
slower) rng's.
------------------------------------------------------------------------
r306 | rgb | 2007-02-27 02:10:12 -0500 (Tue, 27 Feb 2007) | 2 lines
This is a really modest checkin, but we'll see if it can manage...
------------------------------------------------------------------------
r305 | rgb | 2007-02-27 02:04:24 -0500 (Tue, 27 Feb 2007) | 13 lines
TAG 2.24.2
I fixed the -q(uiet) flag so that it works, and decided to bundle all of
the above bugfixes and feature shifts into a new minor minor bump. This
is the "official" GBT build, if Dirk concurs when he tries it.
As far as I know, we're at least back where we were when we started
implementing GBT and then some.
Now, if only I could figure out the trunk thing. Maybe I'll try doing a
checkout and build without the trunk movement...
------------------------------------------------------------------------
r304 | rgb | 2007-02-27 01:31:45 -0500 (Tue, 27 Feb 2007) | 5 lines
TAG 2.24.1-2
Fixed documentation and added a hard record of Janusz's bug in operm5.
------------------------------------------------------------------------
r303 | rgb | 2007-02-27 01:06:25 -0500 (Tue, 27 Feb 2007) | 2 lines
Sending this to Duke, at least...
------------------------------------------------------------------------
r302 | rgb | 2007-02-27 01:06:09 -0500 (Tue, 27 Feb 2007) | 47 lines
This contains a change suggested by the following:
%<snip snip -----
From: Janusz Kawczak <jkawczak@gmail.com>
To: Robert G. Brown <rgb@phy.duke.edu>
Cc: Dirk Eddelbuettel <edd@debian.org>
Subject: Re: Random R-Package
Hello, without going to much into peculiarities (for now, at least) of
the rngs and numbers coming from Marsaglia and you (Robert), I would
like to give the result from our paper that is directly applicable to
the operm5 header you cited below:
"...(with # rank 99)..." - this is the point I questioned in our paper.
I asked Marsaglia how he got this rank, but I never received the reply
from him. I can only presume that he either guessed this number or
estimated it (somehow). It remains a mystery to me; like a Marsaglia's
voodoo step. The answer should be 96=5!-4!. It is not a big deal
of a difference in this case, however, the theorem we proved allows one
to consider cased of perm6, perm7 ... and higher with the exact number
of degree of freedom calculations. Thus, exact and not guessed results.
It is my opinion that the operm-type test is very powerful for detecting
local correlations (dependencies) and it should be used for such
purpose. So, any algorithmic PRNG will suffer and most likely do not
dwell well when exposed to this test. I have not had a chance to do
serious experiments on the "natural-random" generators, e.g.
alpha-particle counting, radio noise signals and many others. But, I
suspect that the operm-type test should do well in this situation.
I cannot promise at this time much, but I am going to look at the issues
you addressed in your e-mail. However, the questions you've raised are a
bit different animals to deal with.
In summary, it would be useful, once and for all, to correct 99 degrees
to 96 in the operm5 Marsaglia's header file. Maybe, one day, this will
happen :-)
%<snip snip -----
I've implemented this change -- 99 to 96 -- although I welcome any
comments. The test still fails the big four -- gsfr4, taus2, ranlxd2,
and mt19937 -- nearly all the time, overlapping or not. I still suspect
either errors in r and s or (quite possibly) programming errors, but it
ALMOST works and lacking a gold standard rng it is difficult to resolve
the question numerically.
------------------------------------------------------------------------
r301 | rgb | 2007-02-27 00:16:46 -0500 (Tue, 27 Feb 2007) | 4 lines
This is an important change -- I fixed an annoyance (if not worse) with
the libdieharder setting of the major revision number. I may need to
propagate the expr back to the toplevel Make.
------------------------------------------------------------------------
r300 | rgb | 2007-02-26 23:39:47 -0500 (Mon, 26 Feb 2007) | 7 lines
Dirk found that I was still screwing up the PREFIX thing by stubbornly
refusing to use (lower case) prefix, libdir, and includedir in my make
install target. I think I've stripped out my own versions of these
completely so that they can a) be set by configure and run with "just"
make install or b) overridden on the make line, e.g make prefix=/tmp/usr
install (as apparently he likes to do to make debian packages).
------------------------------------------------------------------------
r299 | rgb | 2007-02-25 14:42:52 -0500 (Sun, 25 Feb 2007) | 3 lines
This is definitely experimental, trying to write a web installer
modification that I cannot test until I get back the net.
------------------------------------------------------------------------
r298 | rgb | 2007-02-25 14:32:05 -0500 (Sun, 25 Feb 2007) | 4 lines
Ok, this is TAG=2.24.1, the first Gnu Build Tools release that builds
rpms clean from (we hope) SVN. I do need to validate this with one
last SVN checkout, but I'm pretty sure it is the case...
------------------------------------------------------------------------
r297 | rgb | 2007-02-25 13:35:17 -0500 (Sun, 25 Feb 2007) | 2 lines
Well, a time to check in. We're about to see if an rpm build works...
------------------------------------------------------------------------
r296 | rgb | 2007-02-25 13:15:29 -0500 (Sun, 25 Feb 2007) | 6 lines
This may be a really nice advance. The dieharder build now uses
../include and ../libdieharder as -I and -L respectively, and plain old
"make" in both cases should work, from a clean checkout. I'm guessing
that I can add a simple Makefile.am to include to do the actual install
of the include files.
------------------------------------------------------------------------
r295 | rgb | 2007-02-25 12:47:10 -0500 (Sun, 25 Feb 2007) | 4 lines
This should be REALLY REALLY close. We'll checkin, do a full checkout,
and try building. If/when we get there, we'll work strictly from build
to build once again.
------------------------------------------------------------------------
r294 | rgb | 2007-02-25 12:27:25 -0500 (Sun, 25 Feb 2007) | 4 lines
OK, this is one whole cut closer, and ALMOST works, but we're definitely
going to have to try this one more time... We also need at some point
to stop svn control of Makefiles and maintain only Makefile.ams
------------------------------------------------------------------------
r293 | rgb | 2007-02-25 12:17:22 -0500 (Sun, 25 Feb 2007) | 3 lines
Adding what MAY be all the things needed to enable full automated Gnu
style builds from the autogen.sh script.
------------------------------------------------------------------------
r292 | rgb | 2007-02-25 12:16:05 -0500 (Sun, 25 Feb 2007) | 4 lines
Finished a first cut at adding GBT support. Need to check in the .in
files and configure.ac files one level down, and do a full checkout to
see if it autobuilds from an svn checkout.
------------------------------------------------------------------------
r291 | rgb | 2007-02-19 09:23:15 -0500 (Mon, 19 Feb 2007) | 3 lines
This dumps buildroot. We don't need or want this in the tarball or rpm
sources.
------------------------------------------------------------------------
r290 | rgb | 2007-02-19 03:47:31 -0500 (Mon, 19 Feb 2007) | 4 lines
We are working quite hard on getting the ChangeLog to be automagically
registered. I'm guessing it should just go into %doc and we should
pretty much forget the tag otherwise.
------------------------------------------------------------------------
r289 | rgb | 2007-02-19 03:05:19 -0500 (Mon, 19 Feb 2007) | 5 lines
This fixes a variety of problems with using shared libraries correctly,
and moves the project much closer to where it could e.g. be included in
FC extras. The library builds nicely now, for example. However, I do
need to switch to using autoconf, however much I generally dislike it.
------------------------------------------------------------------------
r288 | rgb | 2007-02-19 01:32:29 -0500 (Mon, 19 Feb 2007) | 2 lines
OK, this fixes some serious uglyness. Let's see if the rpm builds...
------------------------------------------------------------------------
r287 | rgb | 2007-02-18 16:49:23 -0500 (Sun, 18 Feb 2007) | 3 lines
Updating the svn tree and sync'ing, perhaps for the last time. Will
this now reside on code.google.com? We'll see.
------------------------------------------------------------------------
r286 | rgb | 2007-02-18 08:37:35 -0500 (Sun, 18 Feb 2007) | 3 lines
Let's call this TAG=2.5.24 -- bumping the first minor to announce that
we've cleaned up several bugs and repackaged.
------------------------------------------------------------------------
r285 | rgb | 2007-02-15 13:55:48 -0500 (Thu, 15 Feb 2007) | 28 lines
This fixes a bug reported by Matthias Braeunig <mb.atelier@web.de>, who
was running the test on a file of data just one time per test using more
or less this line:
for t in $(echo "-d"{1..19} "-r"{1..4} "-s"{1..2}); do ./dieharder -q -t9375 -p1 $t;done > results
He noted that kstest_kuiper returned 2.0 for input single pvalues of
0.0, and that the test overall returned a pass even if p=1.0 exactly
(which it also should not do for single pvalues).
I made the following changes. kstest_kuiper now returns a single input
pvalue as its output pvalue -- clearly that's all one can do and the
right thing to do. The test.c assessment that prints out the results
also no longer calls the return a KStest result, and reports failure
a bit differently, flagging the high-p failures as well as the low p
failures, and adjusting the reported failure range accordingly.
To do this I had to use -static in the Makefile to work in the
development tree. I'm guessing that I need to add LDFLAG = -dynamic to
the build make line in the specfile and should LEAVE it -static in the
actual tree so people don't get stymied if they download and build in
the tarball directory ("people" including me) while rpm's will still
autobuild dynamic correctly.
Finally, Matthias reported that the -q flag doesn't work. He's right,
but I'm not sure I'm going to fix that. Rather I should probably just
kill it and let people filter the output results by hand...
------------------------------------------------------------------------
r284 | rgb | 2007-02-05 23:42:45 -0500 (Mon, 05 Feb 2007) | 4 lines
I've just fired this up to the web. I deem it finished enough.
Now to backport the library fix to wulfware, and call it a night, very
much a night.
------------------------------------------------------------------------
r283 | rgb | 2007-02-05 22:06:02 -0500 (Mon, 05 Feb 2007) | 5 lines
OK, it installs and builds PERFECTLY, and THIS time it almost certainly
is dynamically linking to libdieharder.so, as it linked without the .a
library present at all. I'll now have to go retrofit this to wulfware,
as it is not building correctly.
------------------------------------------------------------------------
r282 | rgb | 2007-02-05 21:39:00 -0500 (Mon, 05 Feb 2007) | 3 lines
This actually rand and built! Now to try to rebuild it WITHOUT the .a
library installed...
------------------------------------------------------------------------
r281 | rgb | 2007-02-05 21:30:42 -0500 (Mon, 05 Feb 2007) | 3 lines
Just in case I drop something, I finally seem to have "fixed" the
libdieharder makefile. On to fame and glory.
------------------------------------------------------------------------
r280 | rgb | 2007-02-05 15:06:05 -0500 (Mon, 05 Feb 2007) | 2 lines
OK, this is crawling on closer to ready to go...
------------------------------------------------------------------------
r279 | rgb | 2007-02-05 14:51:33 -0500 (Mon, 05 Feb 2007) | 2 lines
Make this go away, please.
------------------------------------------------------------------------
r277 | rgb | 2007-01-28 10:58:14 -0500 (Sun, 28 Jan 2007) | 6 lines
This has a brand new ultra-cool target, "installrepo" that makes the
rpms and installs them in the repo, from when yum can install them.
BTW, I think I forgot the "requires" tag in the dieharder sources,
partly because it seems that it isn't, in fact, required. Hmmm.
------------------------------------------------------------------------
r276 | rgb | 2007-01-27 19:11:19 -0500 (Sat, 27 Jan 2007) | 2 lines
This works!
------------------------------------------------------------------------
r275 | rgb | 2007-01-27 17:39:42 -0500 (Sat, 27 Jan 2007) | 2 lines
This is getting really close, worth checking in...
------------------------------------------------------------------------
r274 | rgb | 2007-01-27 13:27:14 -0500 (Sat, 27 Jan 2007) | 4 lines
This now builds a perfectly rebuildable tarball. We can think about
just what else we'd like to add to that tarball in a moment, but first
we need to FINALLY get the rpm to build, maybe.
------------------------------------------------------------------------
r273 | rgb | 2007-01-27 12:59:42 -0500 (Sat, 27 Jan 2007) | 2 lines
This updates the abstract.
------------------------------------------------------------------------
r272 | rgb | 2007-01-27 12:50:16 -0500 (Sat, 27 Jan 2007) | 3 lines
OK, this just maybe is working now with a target that rebuilds
both specfiles and Makefiles when the toplevel Makefile is altered.
------------------------------------------------------------------------
r271 | rgb | 2007-01-27 11:57:23 -0500 (Sat, 27 Jan 2007) | 8 lines
This is just peachy. make and make install targets work for BOTH
dieharder_src and libdieharder directories, which is pretty cool,
really. The remaining problem will be how to force a rebuild
of the library in such a way that it works when we're developing but
doesn't barf when we're rpm-ifying.
At this point in time it is high time to try the rpm build.
------------------------------------------------------------------------
r270 | rgb | 2007-01-27 11:41:39 -0500 (Sat, 27 Jan 2007) | 3 lines
OK, this is making progress. Time to go back to libdieharder and get
a build to work there...
------------------------------------------------------------------------
r269 | rgb | 2007-01-27 11:13:18 -0500 (Sat, 27 Jan 2007) | 3 lines
Just making sure this is all ready to run when I start to edit
the Makefile in libdieharder.
------------------------------------------------------------------------
r268 | rgb | 2007-01-27 11:08:45 -0500 (Sat, 27 Jan 2007) | 11 lines
OK, this is a very painful move. We will, of course, mothball and
preserve libdieharder's original svn tree, but now that we're figuring
out how to do one specfile, many packages from a single toplevel
source tree we no longer wish to maintain libdieharder in a separate
subversion project. So we're checking it into this one. All the
change history is preserved, but in pieces -- CVSROOT first,
subversion's libdieharder second, and from now on, here in the one
true dieharder tree and its subversion controlled project.
Next we have to get this so that a make install does the right thing.
------------------------------------------------------------------------
r267 | rgb | 2007-01-27 10:53:36 -0500 (Sat, 27 Jan 2007) | 7 lines
This is a first cut at making dieharder actually build, after
libdieharder is built and installed. From now on BOTH will use ONLY
the include files that are stored in ./include, which will actually
simplify life tremendously. I may symlink them through to the
source directory(s) and may even svn control the symlinks, if svn can
manage them. CVS couldn't...
------------------------------------------------------------------------
r266 | rgb | 2007-01-27 10:31:10 -0500 (Sat, 27 Jan 2007) | 5 lines
OK, we are within a single step (removing or moving some include files)
of being cleaned up and ready to proceed. I'll probably copy at least
part of the sm Makefile to get the hang of looping a make through source
directories in order to achieve the make install in the right sequence.
------------------------------------------------------------------------
r145 | rgb | 2005-03-14 08:57:05 -0500 (Mon, 14 Mar 2005) | 5 lines
This sends in parse.c. Y'know, I'll bet that this is what breaks
Dan's access. Shit, looks like I'll have to kiss "make sync" goodbye...
or give him an "account" locally with the same uid/gid -- nope that
won't work either. Sigh.
------------------------------------------------------------------------
r144 | rgb | 2005-03-10 22:42:00 -0500 (Thu, 10 Mar 2005) | 2 lines
This goes home and into laptop...
------------------------------------------------------------------------
r143 | rgb | 2005-03-10 22:05:41 -0500 (Thu, 10 Mar 2005) | 2 lines
Sending this all home, so I can make it on metatron?
------------------------------------------------------------------------
r141 | rgb | 2004-11-30 09:14:46 -0500 (Tue, 30 Nov 2004) | 5 lines
I think we'll add this to the repository as the "reference run" against
the default generator, dieharder -a > dieharder.all. If we update this
at the end of every new addition, we'll be able to advance to toolset
in a fairly systematic (but generally reliable) way.
------------------------------------------------------------------------
r140 | rgb | 2004-11-29 16:36:23 -0500 (Mon, 29 Nov 2004) | 2 lines
This looks like it ran nicely.
------------------------------------------------------------------------
r139 | rgb | 2004-11-29 14:30:09 -0500 (Mon, 29 Nov 2004) | 3 lines
This MIGHT just be a reference run followed by tag bump and checkin.
Looks pretty nifty, right up to a first draft of histogram.
------------------------------------------------------------------------
r138 | rgb | 2004-11-29 14:03:49 -0500 (Mon, 29 Nov 2004) | 4 lines
Adding the published diehard F90 source code to the tree for
porting convenience, although we will not use any of it verbatim,
obviously, in a c port.
------------------------------------------------------------------------
r137 | rgb | 2004-11-29 12:18:04 -0500 (Mon, 29 Nov 2004) | 3 lines
I'm hoping that this is the needed binary rank program that analyzes
binary (bitlevel) matrices for the diehard binary rank tests.
------------------------------------------------------------------------
r136 | rgb | 2004-11-24 01:14:41 -0500 (Wed, 24 Nov 2004) | 5 lines
This seems to "work", although it is consistently producing an overall
p-value that is in the .9 range and hence "too high". I'm going to
start up a full run of 100 x 40000 in a second to see if I get a
"normal" pvalue.
------------------------------------------------------------------------
r135 | rgb | 2004-11-24 01:00:50 -0500 (Wed, 24 Nov 2004) | 2 lines
Well, not JUST that. I suppose that next we'll have to actually debug.
------------------------------------------------------------------------
r134 | rgb | 2004-11-24 00:58:30 -0500 (Wed, 24 Nov 2004) | 6 lines
This is ALMOST working. I'd say the binary rank part is working, hence
the checkin. It is the rank_32x32 part that isn't, but I'll work on it.
I suspect something really simple, like needing to normalize y by
tsamples...
------------------------------------------------------------------------
r133 | rgb | 2004-11-22 15:08:03 -0500 (Mon, 22 Nov 2004) | 4 lines
This is simply lovely, simply lovely, with a good start on adding
Diehard's Binary Rank test. All I need is a suitably scaled matrix
and a few zillion rands...
------------------------------------------------------------------------
r132 | rgb | 2004-11-22 14:23:11 -0500 (Mon, 22 Nov 2004) | 2 lines
Why didn't these make it to Duke?
------------------------------------------------------------------------
r131 | rgb | 2004-11-22 03:35:19 -0500 (Mon, 22 Nov 2004) | 6 lines
This is 0.5.8 stable, I hope. Time to go beddy-bye, hoping that this is
now ready for real development and grantseeking work. I should be
able to add a couple more diehard tests "easily" at this point, I think.
rgb
------------------------------------------------------------------------
r129 | rgb | 2004-11-22 01:47:07 -0500 (Mon, 22 Nov 2004) | 5 lines
This is VERY VERY close to being a fairly serious tagged checkin.
We've resolved the problem of multiline strings in gcc, snagged a
C tutorial for gcc, completely fixed the documentation -- this is
all pretty awesomely ready for a brave new release.
------------------------------------------------------------------------
r128 | rgb | 2004-11-21 23:24:18 -0500 (Sun, 21 Nov 2004) | 11 lines
This is really close to working with all the changes in the command
line options and associated global variables. In fact, it might BE
working.
Two things that I really really need are a routine that can take a
data object that is one big string and display it to the screen
(something gcc refuses to do any more, which sucks big time) and a 20x
histogram of p-values. Let's see if I can find them on the web before
tackling them -- in particular the former seems like it must have been
written by somebody...
------------------------------------------------------------------------
r127 | rgb | 2004-11-20 13:17:55 -0500 (Sat, 20 Nov 2004) | 6 lines
This is now really truly ready to go, EXCEPT that NOW I have to alter
all sorts of command options according to the latest prescriptions in
the checkin logs and abstract/web page. And get it "working perfectly"
once again. I might even finish this this weekend, if I really hammer
at it.
------------------------------------------------------------------------
r126 | rgb | 2004-11-20 10:55:07 -0500 (Sat, 20 Nov 2004) | 3 lines
This is the REALLY final checkin of rand_rate, I think, before we clone
it into dieharder.
------------------------------------------------------------------------
r125 | rgb | 2004-11-20 10:50:28 -0500 (Sat, 20 Nov 2004) | 87 lines
This is the last checkin of rand_rate AS rand_rate. I'm going to change
the name of this suite to dieharder. I'm also going to change the
test numbering schema and option naming so that e.g.
-d diehard test number
-r rgb test number
-s sts test number
where -1 runs all tests of a given kind, 0 lists a description of all
tests in the suite, -2 runs all tests of a given kind EXACTLY as they
are run in the original code, if possible -- I'm not sure I'm going to
test overlapping bit strings drawn from a single int just to bump the
count of "random numbers" unless the test explicitly calls for it and it
makes sense, as there is this thing about each sample being
"independent" that worries me with overlapping draws.
-p number of p-values in final KS (and possibly other) test(s). This
is the number of times each "test" is run with independent random number
seeds (as the DEFAULT from now on). This defaults to 100, which is
actually a lot and very reasonable but which can be increased if one is
in doubt about whether the distribution of p returned by "the test" is
in fact uniform.
-t number of test samples that go into making up a single test. This
is NOT always a free parameter -- in many of the diehard tests
especially, the number of e.g. points drawn from a 2d or 3d volume in
the minimum distance tests is fixed, and varying it would vary the
target distribution and test statistic. Although this is a bit
unfortunate, since varying the number of test samples is an excellent
way to make marginal failures in the distribution of p resolve into
clear failures, we either live with it or derive general forms for the
asymptotic target distributions as a function of the number of samples
or do simulations and empirically deduce forms ditto (as Marsaglia and
others appear to have done). For the moment we'll live with it.
-b bitstring width. Some tests are applied only to samples that are
"bitstrings" (as opposed to e.g. lists of unsigned integers) of
user-specifiable length. One reason to limit the tests in this way is
to avoid numerical difficulties in e.g. evaluating P_binomial(k,p,n),
where one can easily under or overflow and end up with garbage or a gsl
fault. Another is to "free" some of the existing tests that have a very
specific size of bitstring that they look at so that this can be varied
when the target distribution can still be computed as a function of
bitstring size. This will be overridden as necessary, like -t, for
tests that really do require a fixed bitstring size to approach the
known target distribution.
-n ntuple or window width. A number of tests look at bit ntuples. An
ntuple is a set of n consecutive bits drawn from a bitstring (possibly
of -b specified width) or vector of random uints (possibly of -t
specified length). ntuples are always drawn relative to a bit offset
specified from the right (least significant) with 0 being the rightmost
bit, with cyclic boundary conditions on the entire bitstring >>or<<
sample uint vector, so drawing an ntuple cannot fail for any offset
within the number of significant bits returned by the generator (which
MAY NOT BE 32, or even 31 -- some generators return as few as 16
significant bits!).
For example, an 8-bit bitstring might be:
01100111
and all the 3-tuples drawn from it are given by
offset 3-tuple
=====================
0 111
1 011
2 001
3 100
4 110
5 011
6 101 <- Note wrap around!
7 110 <- Ditto!
A general purpose
get_bit_ntuple(*bitstring,bitstring size,ntuple size,offset)
routine is provided that is used by many tests to get ntuples from a
uint *bitstring of given >>uint vector length<< (not bitstring length).
Other test controls may be added as well, but these are what I'm going
to document right now. Mostly I'm checking in all the placeholders
required for the rest of the diehard tests so I can start to knock them
off systematically. Sure hope I'm past major rewrites!
------------------------------------------------------------------------
r124 | rgb | 2004-11-20 03:07:19 -0500 (Sat, 20 Nov 2004) | 2 lines
Fixed silly spelling error (sigh).
------------------------------------------------------------------------
r123 | rgb | 2004-11-20 02:50:00 -0500 (Sat, 20 Nov 2004) | 3 lines
Well, that was quick. A nasty (but easy) little bug in diehard_runs
squashed (size -> tsamples).
------------------------------------------------------------------------
r122 | rgb | 2004-11-20 02:47:34 -0500 (Sat, 20 Nov 2004) | 14 lines
This should/maybe be a serious v 0.5.3 checkin. We are about to try
-v -1. If it works, it will cycle through all of the working tests
(and all the tests are working). All the tests are now written in
a way that they can use sample and kstest_kuiper() to do the validation
of the p-values obtained from running a possibly size-variable test
on bits or frequencies or runs or whatever.
If this test works, it is off to the website, I'm off to bed, and next
we go back to moving in new diehard tests. With the magical sliding
bitwindow (which really does seem to work pretty well:-) implementing
at least the n-tuple diehard tests should now be pretty easy, and I
can probably do a more rigorous job than GM did because I don't have
to scrimp on rands.
------------------------------------------------------------------------
r120 | rgb | 2004-11-20 02:34:39 -0500 (Sat, 20 Nov 2004) | 2 lines
Try again (network down).
------------------------------------------------------------------------
r119 | rgb | 2004-11-20 02:34:07 -0500 (Sat, 20 Nov 2004) | 4 lines
This clears diehard_birthdays AND diehard_2dsphere. Only one diehard
to go and we'll have EVERYTHING running with sample and the new test
format (but of course rgb_persist, which doesn't count).
------------------------------------------------------------------------
r118 | rgb | 2004-11-19 22:11:12 -0500 (Fri, 19 Nov 2004) | 2 lines
Fixed up diehard_runs so it uses the new test format. Works charmlike.
------------------------------------------------------------------------
r117 | rgb | 2004-11-19 18:38:19 -0500 (Fri, 19 Nov 2004) | 5 lines
This is v 0.5.1, which is nicely fixed for BOTH sts_monobit AND
sts_runs, both in the new format, with a consistent Xtest_eval()
routine. This fixes lots of things -- both tests are very likely
to be "good".
------------------------------------------------------------------------
r115 | rgb | 2004-11-19 18:34:38 -0500 (Fri, 19 Nov 2004) | 7 lines
OK, this looks like sts_runs is now "good" in the new format. However,
it may have broken sts_monobit. The problem is, is there or is there
not a sqrt(2.0) in the erfc relative to sigma, and if there is is
there an EXTRA one in sts_runs vs sts_monobit. Need to clear this up
and either always put it into Xtest or always put it into xtest.sigma,
but not both.
------------------------------------------------------------------------
r114 | rgb | 2004-11-19 16:06:34 -0500 (Fri, 19 Nov 2004) | 2 lines
Sending this home, I hope.
------------------------------------------------------------------------
r113 | rgb | 2004-11-19 15:09:15 -0500 (Fri, 19 Nov 2004) | 8 lines
This is now squeaky clean for rgb_bitdist and sts_monobit, and we're
working on sts_runs. Then a quick dash through the diehards and we'll
be back to where we were but a bit cleaner.
I still MIGHT try to get cleaner still. I'm not at all convinced
that I need the test structs, for example, although perhaps they
allow some encapsulation that is useful.
------------------------------------------------------------------------
r112 | rgb | 2004-11-19 13:55:01 -0500 (Fri, 19 Nov 2004) | 3 lines
This is a checkin to Duke of the nifty neato cool new improved
version. It may be time to change the name and everything.
------------------------------------------------------------------------
r111 | rgb | 2004-11-19 12:35:19 -0500 (Fri, 19 Nov 2004) | 4 lines
OK so there was one more teeny bug in rgb_bitdist() -- wrong order in
the final output statement. Fixed. I also added a feature, reseeding
the rng in sample on an -i flag.
------------------------------------------------------------------------
r110 | rgb | 2004-11-19 12:28:09 -0500 (Fri, 19 Nov 2004) | 4 lines
This is just ensuring that the tag for version 0.5.0 is noted. This
version works through rgb_bitdist, which I'll bet a nickel is a very
powerful test indeed.
------------------------------------------------------------------------
r108 | rgb | 2004-11-19 12:26:42 -0500 (Fri, 19 Nov 2004) | 4 lines
This is a "permanent" checkin. I think that this fixes rgb_bitdist
nicely to use sample() and provides a prototype for doing other
tests.
------------------------------------------------------------------------
r106 | rgb | 2004-11-18 21:09:25 -0500 (Thu, 18 Nov 2004) | 11 lines
This is a fairly major fix -- I was truncating blen in bits.c at
the sizeof(uint), not 8*sizeof(uint). One lesson is that this
truncation isn't right anyway. We rather need to just punt/die.
I'm wondering now if the apparent failure that is still present
(although not nearly as bad) for the larger ntuples is because fewer
bins pass the cutoff in the formation of the primary sample pvalue(s).
We might just try lowering this cutoff a bit. I don't know exactly what
a "degree of freedom" is, but we do need to be pretty careful with it.
------------------------------------------------------------------------
r105 | rgb | 2004-11-18 18:43:21 -0500 (Thu, 18 Nov 2004) | 6 lines
Now it REALLY looks like it works, and even the best rng's look like
they FAIL the test in fairly short order. Now we're cookin' with gas,
although I've got to see the details of the failure soon enough.
Hmmm, maybe I need to have a lot more bins...
------------------------------------------------------------------------
r104 | rgb | 2004-11-18 18:25:52 -0500 (Thu, 18 Nov 2004) | 3 lines
Just to verify that it APPEARS to work to quite high precision through
triplets. We could just keep adding things, I suppose...
------------------------------------------------------------------------
r103 | rgb | 2004-11-18 18:17:39 -0500 (Thu, 18 Nov 2004) | 22 lines
This is now working. Working amazingly well, actually. Well enough
to double the size of the bits in rgb_bitdist_test().
The one MAJOR remaining problem is that I cannot use samples for tests
that return a vector of pvalues. Oh, and it is fairly difficult to
pass arguments to the testing function in when it is an argument TO
samples().
This means that I have two itty bitty problems to solve -- one is to
pass in parameters (possibly by making them global variables). This
makes sense IF I want to be able to control them from the command line
anyway. The other is to return a vector of pvalues. The only way I
can think of doing this is to make pvalues[] a global vector as well
of length (say) 1K. This puts an upper bound on the number of pvalues
that can be returned by a test, but that SHOULDN'T be much of a problem,
as it is really a question of what granularity one wishes to evaluate p
at.
Anyway, just a BIT more work and rgb_bitdist should be production ready,
AND I should be perfectly ready to clean up p-sampling and testing as
separate entities in the other tests.
------------------------------------------------------------------------
r102 | rgb | 2004-11-18 17:28:50 -0500 (Thu, 18 Nov 2004) | 2 lines
This MIGHT be working.
------------------------------------------------------------------------
r101 | rgb | 2004-11-18 15:42:41 -0500 (Thu, 18 Nov 2004) | 2 lines
I sent this home, I did, I did.
------------------------------------------------------------------------
r100 | rgb | 2004-11-18 15:08:32 -0500 (Thu, 18 Nov 2004) | 14 lines
This is still fairly screwed up, at least in the sense that
it doesn't look like rgb_bitdist works. Curiously, it LOOKS like
it WORKS -- walking through the code, it looks VERY much like it
is collecting two bits at a time and correctly incrementing the
correct bit count in the correct vector.
The final histogram, however, comes out wrong, wrong, wrong.
I may have to make this simpler. Or maybe I'm doing something else
wrong -- come to think of it, the totals in the histograms shouldn't
equal the number of samples for EACH value of the ntuple, only the
total should sum to the number of samples. Maybe this is what is
wrong...
------------------------------------------------------------------------
r99 | rgb | 2004-11-18 11:27:27 -0500 (Thu, 18 Nov 2004) | 13 lines
We have to go into Duke, but we are very much ready to finish off bits.c
and rgb_bitdist.c to where we can eliminate BOTH rgb_binomial AND
rgb_bit2.c AND at least one, maybe 3-4 diehard tests AND a couple or
three sts tests as being equivalent to this test, for particular call
values. I have great hope that this rgb_bitdist will become "the" bit
frequency test for all random bit sequences. There may still be a point
to tests that look at intervals >>between<< bit sequences thought.
In fact, I suspect that the best way to proceed with the latter is to
test lagged correlation for arbitrary lags in a long bitstring. This
SAME TEST applied with arbitrary displacements between samples might be
revealing...
------------------------------------------------------------------------
r98 | rgb | 2004-11-17 14:57:04 -0500 (Wed, 17 Nov 2004) | 5 lines
This is HIGHLY BROKEN but is absolutely necessary. We have to break
this code up to unify the replicated pieces and streamline the
testing processes now that we know how a test "works" in the
abstract.
------------------------------------------------------------------------
r97 | rgb | 2004-11-16 22:40:28 -0500 (Tue, 16 Nov 2004) | 16 lines
A bugfix commit. The sanity check in get_bit() is broken and is
commented out -- if I'm going to allocate rand_int[] vectors other than
size in length, I cannot test on a global size to see if get_bit() is
out of bounds. This is STILL broken in that there is a risk with no
warning, but there is also functionality for the moment (and I have
to write a bunch of new bitlevel functions and can rewrite get_bits
at the same time).
More important, I found a real bug in Btest where I was initializing
btest->chisq to zero before accumulation but was accumulating in chisq.
Curiously, it worked a lot of the time the old way, but only for certain
rng's. I may have memory management problem, which isn't surprising
given the slovenliness of the code at this moment...;-)
rgb
------------------------------------------------------------------------
r96 | rgb | 2004-11-16 18:46:17 -0500 (Tue, 16 Nov 2004) | 2 lines
This is a tagged checkin, about to push.
------------------------------------------------------------------------
r94 | rgb | 2004-11-16 18:45:43 -0500 (Tue, 16 Nov 2004) | 2 lines
This appears ready for a checkin.
------------------------------------------------------------------------
r93 | rgb | 2004-11-16 18:19:54 -0500 (Tue, 16 Nov 2004) | 4 lines
This appears to FINALLY fix rgb_binomial so that it reliably works.
It remains to be seen whether or not it is any more senstitive than e.g.
sts_monobit.
------------------------------------------------------------------------
r92 | rgb | 2004-11-16 15:11:18 -0500 (Tue, 16 Nov 2004) | 3 lines
This is STILL broken as far as the Ntests are concerned. I've really
got to figure this out...
------------------------------------------------------------------------
r91 | rgb | 2004-11-16 10:51:23 -0500 (Tue, 16 Nov 2004) | 2 lines
Send this to Duke to finish this morning.
------------------------------------------------------------------------
r90 | rgb | 2004-11-14 12:40:14 -0500 (Sun, 14 Nov 2004) | 61 lines
This is a pretty serious bugfix -- probably need to update the website.
Basically, my kstest was simply wrong last night; now it is working,
I've also added the Kuiper form of the KS test, and will program
Anderson and Darling's version (the one used, apparently, in Diehard)
when I get around to it. However, for tests involving more than a very
few p-values in a vector, it shouldn't really matter -- Kuiper KS and the
regular KS and Anderson-Davis KS should all GENERALLY generate similar
p-distributions -- different perhaps where they don't matter, but very
similar at the ends. The key question is just whether one has a
tendency to pass a vector of p-values where the other would consistently
fail it. So far it looks like USUALLY if one fails the other fails.
I think I'm still going to want to do a histogram picture of binned
pvalues and do a Pearson chisq p-test on the result. This should really
be pretty easy... maybe today, maybe not.
We're getting close to being ready to go BACK and mess with the Ntest
and Xtest stuff. I think that now that I understand Pearson vs the
alternatives, I can PROBABLY arrange things so that I can use a single
set of common tools to do all the test assessment.
One thing, for example, would be to make each test return a p-value,
period, and put the samples loop in rand_rate_work, to ALWAYS fill a
vector of p-values and ALWAYS do KS tests, confidence interval tests,
and histogram tests. This would have a number of advantages -- being
able to produce a really pretty, really standardized picture of results
for one.
A second thing that would make this tool relatively interesting to the
mass unwashed would be to put a nice little GUI onto it. There are two
generic ways to do this. One is to leave it a command line tool but
REALLY clean up the output result so that it is just a single line
per test with ks test scores for the various forms of test with three
lines of # delimited frame, period. Then I can make a perl-Gtk app to
call the binary, parse the result, and (e.g.) plot histograms or do
other nifty graphical things. The other is to use Gtk directly, but
perhaps have the GUI only come up if there is an appropriate command
line flag (or not).
A third thing to work on is clearly going to be splitting the source
into distinct components in distinct directories. We will need a common
library containing the kstest, chisq, Ntest, Xtest etc code, the input,
the output, etc. We will need a directory containing extensions to the
GSL random number library, e.g. /dev/random, /dev/urandom, empty, and
shuffled because the one thing that is absolutely true is that we need
to add a shuffling/mixing random number generator, one that permits us
to set up a shuffling list and refill it from a secondary LIST of rng's!
A fourth thing (noted already elsewhere) is to do the simplest of tests
-- apply a KS test to the GSL distribution-specific generators
themselves. If a "test" is generically generating a known distribution
presuming randomness and then seeing if the result is indeed the
targeted distribution, then EVERY distribution generator in the GSL can
simultaneously be the target of a test for algorithmic purposes AND a
test component for the GSL rng's.
Beyond that, I need to implement spectral tests and tests for
hyperplanes in N dimensions and uniformity tests. Sigh. I think that I
DO need to write a grant proposal for this -- I think there is enough
work to justify it.
------------------------------------------------------------------------
r89 | rgb | 2004-11-14 04:38:33 -0500 (Sun, 14 Nov 2004) | 3 lines
Tagged and on the repository as 0.4.3, with diehard 3d spheres and a
MAYBE working KS test.
------------------------------------------------------------------------
r87 | rgb | 2004-11-14 04:37:35 -0500 (Sun, 14 Nov 2004) | 2 lines
Sort of playing with KS -- I'm not done here yet...
------------------------------------------------------------------------
r86 | rgb | 2004-11-14 03:04:37 -0500 (Sun, 14 Nov 2004) | 8 lines
OK, found my REALLY stupid bug. I was computing the absolute
length of r from the origin, not the distance between point pairs.
No, I wasn't even doing that well -- I was computing the dot product
of the random vectors. Now things look nearly correct.
All I need is a KS test and life would be, if not complete, well, worth
living.
------------------------------------------------------------------------
r85 | rgb | 2004-11-14 02:22:29 -0500 (Sun, 14 Nov 2004) | 5 lines
This "works". Except that it doesn't. It's very odd, but although
it works perfectly as far as I can tell by any measure, r is simply not
as small as it should be in order to make the pvalue come out between
0 and 1.
------------------------------------------------------------------------
r84 | rgb | 2004-11-13 20:19:53 -0500 (Sat, 13 Nov 2004) | 2 lines
THis is on the way to being another test.
------------------------------------------------------------------------
r83 | rgb | 2004-11-13 17:19:55 -0500 (Sat, 13 Nov 2004) | 2 lines
This is hopefully a tagged snapshot with a new test!
------------------------------------------------------------------------
r81 | rgb | 2004-11-13 16:50:54 -0500 (Sat, 13 Nov 2004) | 8 lines
OK, time to bump the revision number, as birthdays is home and even
works tolerably, as far as I can tell.
SOON I'm going to do the KS test on vectors of p's. SOON I'm going to
really clean up the code so that chisq -> p is consistently computed,
and so that a set of p's is consistently evaluated for the
random/nonrandom decision.
------------------------------------------------------------------------
r80 | rgb | 2004-11-13 12:17:57 -0500 (Sat, 13 Nov 2004) | 2 lines
This is it, ready to proceed.
------------------------------------------------------------------------
r79 | rgb | 2004-11-13 12:12:24 -0500 (Sat, 13 Nov 2004) | 3 lines
This checks in a placeholder for a Kolmogorov-Smirnov test, likely to
be applied to a vector of p-values.
------------------------------------------------------------------------
r78 | rgb | 2004-11-13 12:06:36 -0500 (Sat, 13 Nov 2004) | 10 lines
We'll commit this for the moment. I think the sensible thing to do is
to create as general as possible a tool for generating Pearson's chisq
for discretely binned data, in particular and immediately for the
Poissonian birthday histogram but also for other purposes. Note that
these routines should not only generate chisq, but when possible go
ahead and compute goodness of fit p-values, ideally in a vector
associated with independent trials. This vector of p-values can itself
then be subjected to a kolmogorov-smirnov analysis and transformed into
a conclusion for the generator being tested.
------------------------------------------------------------------------
r77 | rgb | 2004-11-13 04:34:29 -0500 (Sat, 13 Nov 2004) | 3 lines
Just added output of lambda, which is indeed 2 with the parameters
given...
------------------------------------------------------------------------
r76 | rgb | 2004-11-13 04:32:46 -0500 (Sat, 13 Nov 2004) | 7 lines
This is REALLY CLOSE to having diehard birthdays finished. We just
need to add a chisq test for Poisson distributions sampled samples times
with known (per sample) lambda, and a loop to convert a table of chisq into
a table of p-values. I'm tempted to bump minor and tag, but I shouldn't
need to -- I've been really careful and things really look like they're
working so far.
------------------------------------------------------------------------
r75 | rgb | 2004-11-12 21:02:55 -0500 (Fri, 12 Nov 2004) | 2 lines
This is a simple checkin prior to doing diehard birthdays test.
------------------------------------------------------------------------
r74 | rgb | 2004-11-12 20:32:58 -0500 (Fri, 12 Nov 2004) | 2 lines
This splits off the confidence interval test from STS docs.
------------------------------------------------------------------------
r73 | rgb | 2004-11-12 20:28:07 -0500 (Fri, 12 Nov 2004) | 3 lines
This is a small adjustment (still in 0.4.1 I guess). Let's try another
diehard, I think.
------------------------------------------------------------------------
r72 | rgb | 2004-11-12 20:16:48 -0500 (Fri, 12 Nov 2004) | 10 lines
This is actually a fairly functional diehard test!
I think that we can actually implement a test for the uniformity of
p-values as suggested by NIST to run on TOP of the existing confidence
interval test. This would actually break the p-distribution down by
interval and return a p-value of its own computed against the assumption
of uniformity. Or I could get fancier and try kolmogorov-smirnov, if
GSL doesn't have one and I work hard enough to program one. If this is
really distinct -- it isn't clear that it is.
------------------------------------------------------------------------
r70 | rgb | 2004-11-12 17:32:03 -0500 (Fri, 12 Nov 2004) | 4 lines
This is actually sort of semi-functional. What I >>really<< need now
is canned Kolmogorov-Smirnov code. Could it be that this is in the
GSL already? I'll be it is...
------------------------------------------------------------------------
r69 | rgb | 2004-11-11 10:59:28 -0500 (Thu, 11 Nov 2004) | 2 lines
Continuing to hack this up.
------------------------------------------------------------------------
r68 | rgb | 2004-11-10 17:19:21 -0500 (Wed, 10 Nov 2004) | 3 lines
This is a nearly functional diehard_runs -- I just need to figure out
what the expected values and sigmas are...
------------------------------------------------------------------------
r67 | rgb | 2004-11-10 00:32:44 -0500 (Wed, 10 Nov 2004) | 4 lines
This is simply lovely. A nice litte addition to the Makefile that
automatically indicates the current version in the abstract. I actually
have things fairly distributable!
------------------------------------------------------------------------
r66 | rgb | 2004-11-10 00:24:18 -0500 (Wed, 10 Nov 2004) | 10 lines
OK, added a few minor changes to manage the bits issue yet another way.
Really, I'm going to have to figure out a consistent way of indicating
whether a test can have size OR bits OR both OR neither specified.
Also, it would be really lovely to have another outer loop and to
present the lowest p in a set of (say) ten runs of a test combo.
Although in many cases running with -s 10x larger should do the same
thing, really.
------------------------------------------------------------------------
r65 | rgb | 2004-11-09 23:53:49 -0500 (Tue, 09 Nov 2004) | 2 lines
This is it and running, version 0.4.0 as published. Seems to work.
------------------------------------------------------------------------
r63 | rgb | 2004-11-09 23:53:15 -0500 (Tue, 09 Nov 2004) | 2 lines
One last checkin, then a tag, then a checkin as published.
------------------------------------------------------------------------
r61 | rgb | 2004-11-09 20:43:14 -0500 (Tue, 09 Nov 2004) | 3 lines
This is a tagged release, mostly bugfixes. At the moment it all looks
like it works.
------------------------------------------------------------------------
r59 | rgb | 2004-11-09 20:37:58 -0500 (Tue, 09 Nov 2004) | 9 lines
This seems to work perfectly, for the very short moment. It is by no
means perfect or mutually exclusive. We very definitely need to
generalize the bitdist test to handle bit ntuples of arbitrary length,
where the length is a variable.
I think I'll retag this. It is also probably time to think about
putting this up on the website, especially if I'm going to write a
proposal on it.
------------------------------------------------------------------------
r58 | rgb | 2004-11-09 17:14:57 -0500 (Tue, 09 Nov 2004) | 2 lines
Because it wasn't checked in!
------------------------------------------------------------------------
r57 | rgb | 2004-11-09 17:14:36 -0500 (Tue, 09 Nov 2004) | 2 lines
Why didn't bit2.c go home?
------------------------------------------------------------------------
r56 | rgb | 2004-11-09 15:09:36 -0500 (Tue, 09 Nov 2004) | 3 lines
This is going home with a split out routine and some nice changes that
will make it easier to add new tests with arbitrary numbers.
------------------------------------------------------------------------
r55 | rgb | 2004-11-09 14:30:32 -0500 (Tue, 09 Nov 2004) | 2 lines
Just checking repository Root.
------------------------------------------------------------------------
r54 | rgb | 2004-11-09 14:30:05 -0500 (Tue, 09 Nov 2004) | 2 lines
Let's send this home...
------------------------------------------------------------------------
r53 | rgb | 2004-11-09 09:51:31 -0500 (Tue, 09 Nov 2004) | 7 lines
OK, fixing Makefile to actually get this home, AND adding the URL
of the web reference from the last checkin:
http://world.std.com/~franl/crypto/random-numbers.html
(we need to implement some of its hyperplane tests).
------------------------------------------------------------------------
r52 | rgb | 2004-11-09 09:48:40 -0500 (Tue, 09 Nov 2004) | 5 lines
We're actually working on this once again. I need to get my own "runs"
test working, as it will replace a whole RANGE of STS, and I need to
implement a spectral distribution test with bins as is done in the
nice web reference I found.
------------------------------------------------------------------------
r51 | rgb | 2004-11-08 09:52:52 -0500 (Mon, 08 Nov 2004) | 2 lines
This adds yet another built-in device to GSL.
------------------------------------------------------------------------
r50 | rgb | 2003-06-10 11:21:15 -0400 (Tue, 10 Jun 2003) | 3 lines
This adds an "empty" generator to help us determine gsl call overhead
separately.
------------------------------------------------------------------------
r49 | rgb | 2003-01-30 17:16:15 -0500 (Thu, 30 Jan 2003) | 4 lines
This is broken as shit. I see what I did -- I made the ntest evaluation
and presentation routines use n+1 bits (because in rgb_binomial I needed
to do the end of the binomial). However, I have to fix it later...
------------------------------------------------------------------------
r48 | rgb | 2003-01-30 15:12:20 -0500 (Thu, 30 Jan 2003) | 2 lines
Forgot to send this...
------------------------------------------------------------------------
r47 | rgb | 2003-01-29 14:19:55 -0500 (Wed, 29 Jan 2003) | 4 lines
Not obviously broken, and time to add bitpair counters. Should be
really easy -- left-shift in two bits at a time to creat the int index
of the counter, then increment it.
------------------------------------------------------------------------
r46 | rgb | 2003-01-29 09:27:09 -0500 (Wed, 29 Jan 2003) | 2 lines
Some NOTES on future work.
------------------------------------------------------------------------
r45 | rgb | 2003-01-29 09:14:38 -0500 (Wed, 29 Jan 2003) | 8 lines
This checks in a whole new test, which should probably be combined with
sts_monobit (it generates monobit stats as it goes)
rgb_persist (one can easily generate a bitmask as one goes)
rgb_binomial (one can generate binomial stats on top of monobit as one
goes).
and possibly with more tests.
------------------------------------------------------------------------
r44 | rgb | 2003-01-26 02:54:43 -0500 (Sun, 26 Jan 2003) | 7 lines
This last little pair of changes causes measure_rate to use its own,
fixed, number of samples ("more than enough"). It also installs a
"summary report" mode that isn't horribly useful because of conflict
between e.g. -b, -n, -s definitions here and there. Also, different
tests need to be run in different ways to demonstrate failure (or a
lack thereof).
------------------------------------------------------------------------
r43 | rgb | 2003-01-26 02:23:28 -0500 (Sun, 26 Jan 2003) | 9 lines
OK, we haven't done TOO much, but we have definitely learned that
all the rng's that are weak in rgb_persist will definitely fail the
monobit test (for obvious reasons). Furthermore, when a generator
is weak in certain bits and we evaluate the bits from the other end
(whichever end that might be!) it can often PASS the monobit test.
Bits that repeat, random_max's that aren't powers of two-1 (and probably
EVEN powers of two at that) are going to be trouble!
------------------------------------------------------------------------
r42 | rgb | 2003-01-26 00:00:04 -0500 (Sun, 26 Jan 2003) | 4 lines
This is a VERY IMPORTANT new test, rgb_persist(), and a very useful
new routine, dumpbits(). Read NOTES (and inline comments and output)
to see a bit of what it does and why it is important.
------------------------------------------------------------------------
r41 | rgb | 2003-01-25 16:55:32 -0500 (Sat, 25 Jan 2003) | 3 lines
This actually works. In fact, it works fabulously. I can directly
and fairly powerfully look for bitlevel correlations in the output.
------------------------------------------------------------------------
r40 | rgb | 2003-01-25 15:53:55 -0500 (Sat, 25 Jan 2003) | 16 lines
OK, we've learned the hard way that some bits in e.g. boroshi don't
change AT ALL, EVER. Which makes it pretty hard to be random, of
course.
So we're going to invent a new tool -- rgb_persist(), which doesn't
(yet) to a formal statistical test. It just is going to dump successive
unsigned ints from the rng (bitwise) AND maybe run a string of &'s on
the string of ints returned. If they share any 1 bits, the successive
&'s will preserve them a LOT longer than permitted by binary flips on
the slots.
This could be made into a fairly powerful bitlevel sequential
correlation test in several ways. We'll investigate them as we go, but
one reason to write this now is that I'm not quite convinced that what
I'm seeing isn't some sort of bug in the get_bit() routine or the like.
------------------------------------------------------------------------
r39 | rgb | 2003-01-25 10:54:02 -0500 (Sat, 25 Jan 2003) | 3 lines
This is well on the way to being MUCH better, and ready to
systematically extend.
------------------------------------------------------------------------
r38 | rgb | 2003-01-24 19:50:32 -0500 (Fri, 24 Jan 2003) | 2 lines
And now we send the tagged package to Duke.
------------------------------------------------------------------------
r36 | rgb | 2003-01-24 19:50:07 -0500 (Fri, 24 Jan 2003) | 2 lines
Checking in the notes.
------------------------------------------------------------------------
r35 | rgb | 2003-01-24 17:52:03 -0500 (Fri, 24 Jan 2003) | 20 lines
This is worth a minor bump. First, we fixed get_bit(). Second, we
completed sts_runs (for what it is worth, which isn't a whole lot as
nearly everything that fails it also fails monobit and binomial as
expected). However, working through it suggests how to make binomial
work better.
Next (to make it easier to check results relative to the sts documents)
I need to implement -b (get_bit(0 permits this pretty much
transparently, at least in the sts routines) and implement a -f filename
filled with e.g. raw bitstrings or ascii floats or binary numbers
in xmlish wrappers that indicate the storage mechanism? Thus I can test
explicit short bitstrings against the explicit sts numbers to be sure
that my erfc and conversions (and sometimes slightly different
implementation) yield the same answers as theirs, except where I don't
care because I think theirs are (basically) wrong.
See also NOTES (about to be checked in) for a fairly detailed beginning
critique of sts, which I don't think is particularly strong or useful,
really.
------------------------------------------------------------------------
r34 | rgb | 2003-01-24 16:43:14 -0500 (Fri, 24 Jan 2003) | 6 lines
This is my home-grown version of sts_runs. It is no better than the
actual sts version, really, but the sts version is not terribly good.
I'm going to add a (hopefully vastly improved) binomial version of the
test to rgb_binomial, where I can do all the tests at once with a
single set of code and multiple trials (random number seeds).
------------------------------------------------------------------------
r33 | rgb | 2003-01-23 00:51:56 -0500 (Thu, 23 Jan 2003) | 3 lines
Just adding some notes, and preparing to add the next sts test,
TOMORROW.
------------------------------------------------------------------------
r32 | rgb | 2003-01-22 23:52:47 -0500 (Wed, 22 Jan 2003) | 2 lines
I have no idea why the tag went down into fitany...
------------------------------------------------------------------------
r30 | rgb | 2003-01-22 23:52:07 -0500 (Wed, 22 Jan 2003) | 14 lines
This ups the minor revision number to 0.3.0. Worthwhile because now I
have BOTH an erfc AND a Q evaluation of p-value. I could certainly
prettify sts_monobit, but since I generally think that it isn't that
great a test (although it does indicate how starkly many rng's FAIL to
be even this random) I won't do so right away.
Next (after tagging and resync'ing) is going to be adding more tests.
At this point adding a test should be pretty easy, given the hopefully
reusable routines I have written to do the pre- and post- processing.
All I really have to do is input the expected values, write a loop to
generate the "experimental" statistic, and pass everything on to a
standard set of tools for outputting the results and deciding on the
quality of the results.
------------------------------------------------------------------------
r29 | rgb | 2003-01-22 23:46:08 -0500 (Wed, 22 Jan 2003) | 7 lines
All right, this LOOKS like it correctly implements the STS monobit
frequency test. I would still claim that anything that fails this test
will also fail the binomial test, and that in addition things that pass it
(e.g. the vax rng) FAIL the binomial test, so the monobit test is
a waste of time and more prone to error. However, mine is not to reason
why...
------------------------------------------------------------------------
r28 | rgb | 2003-01-22 13:04:47 -0500 (Wed, 22 Jan 2003) | 7 lines
This is working incredibly well, and I've split off nearly everything
required to make further n-point chisq tests trivial to implement and
assess. All that remains is to do a 1-point (normal) test such as the
sts_monobit test (which should really be done internal to the
rgb_binomial test and may one day be, but for the moment we'll just do
it directly).
------------------------------------------------------------------------
r27 | rgb | 2003-01-22 08:33:21 -0500 (Wed, 22 Jan 2003) | 2 lines
Just making SURE this is at Duke...
------------------------------------------------------------------------
r26 | rgb | 2003-01-21 18:56:15 -0500 (Tue, 21 Jan 2003) | 18 lines
This works just lovely!
HOWEVER, it is also clear that running it once, twice, three times,
for EACH generator looking for good ones is a PITA. We'll have to
eventually rearrange this so that there is a "search mode" that runs
a loop through all known generators, identifying the ones that pass at
least at the 1% or higher level.
BTW, I'm now prepared to bet a nickel that the rgb binomial test has a
great deal of sensitivity, since it fails all but literally three or
four of the available RNG's for absurdly short data strings. As in they
aren't even APPROXIMATELY random...NONE of them. If one used them to
generate a humble binomial distribution numerically it would be in
significant error.
I do need to alter this test so that I can run it for arbitrary bit
string lengths, but for the moment I'm not going to worry about it.
------------------------------------------------------------------------
r25 | rgb | 2003-01-21 16:40:07 -0500 (Tue, 21 Jan 2003) | 3 lines
This is now VERY CLOSE. I should be able to determine chisq in a matter
of minutes when I return...
------------------------------------------------------------------------
r24 | rgb | 2003-01-21 14:05:50 -0500 (Tue, 21 Jan 2003) | 2 lines
This is considerably cleaner and more decrufted...
------------------------------------------------------------------------
r23 | rgb | 2003-01-21 13:35:01 -0500 (Tue, 21 Jan 2003) | 3 lines
This finishes the split off of list_rand and list_rngs from the code.
I do need to "fix" the Usage() routine to reflect the change.
------------------------------------------------------------------------
r22 | rgb | 2003-01-21 13:08:34 -0500 (Tue, 21 Jan 2003) | 3 lines
Breaking things up into subroutines a bit better to clarify the program
structure.
------------------------------------------------------------------------
r21 | rgb | 2003-01-17 15:37:14 -0500 (Fri, 17 Jan 2003) | 7 lines
This is coming along, although I'm silly for not just finishing the
monobit test before introducing a binomial test. Still, all very
instructive.
I need to get all this on my laptop and take it with me, along with the
notebook.
------------------------------------------------------------------------
r20 | rgb | 2003-01-17 14:28:36 -0500 (Fri, 17 Jan 2003) | 10 lines
Fixes a nasty bug in sts_monobit, which I think I'm gonna rename
rgb_binomial (and screw sts's monobit test, which is immensely sloppy
compared to actually systematically exploring the binomial distribution
of 1's and 0's in the overall bit strings generated by different seeds.
Actually, a better thing still is to leave sts_monobit, but add
rgb_binomial and document that it is more sensitive (in particular, that
e.g. alternating series that easily pass monobit fail binomial, and that
NOTHING that fails monobit will PASS binomial).
------------------------------------------------------------------------
r19 | rgb | 2003-01-17 01:06:32 -0500 (Fri, 17 Jan 2003) | 2 lines
Sending off the tag
------------------------------------------------------------------------
r17 | rgb | 2003-01-17 01:06:16 -0500 (Fri, 17 Jan 2003) | 8 lines
OK, this is good for a full minor number bump to 0.2.0. We have
basically installed the guts of the STS monobit test. All that we
lack is the computation of the statistics and p-value, which should be
fairly straightforward, especially with the gsl handy. I SHOULD be
able to just cumulate the one-count (e.g.) in a vector and hand it to
the gsl stats routines and have mean, stddev, skew, kurtosis, and
anything else I might like just handed back to me...
------------------------------------------------------------------------
r16 | rgb | 2003-01-17 00:16:59 -0500 (Fri, 17 Jan 2003) | 4 lines
Just a bit of cleanup, and some moderately important additions.
Now we REALLY need to think about tests.
------------------------------------------------------------------------
r15 | rgb | 2003-01-16 23:23:32 -0500 (Thu, 16 Jan 2003) | 2 lines
Tagged.
------------------------------------------------------------------------
r13 | rgb | 2003-01-16 23:23:04 -0500 (Thu, 16 Jan 2003) | 7 lines
This is about ready for a semipermanent snapshot, so I bumped the
minor version number. I'd say that we are now "good" with the ability
to add sw rng's, including interfaces to hw rng's square within the gsl
format.
Now to give de old tests a try...
------------------------------------------------------------------------
r12 | rgb | 2003-01-16 22:54:25 -0500 (Thu, 16 Jan 2003) | 6 lines
Hot diggity dawg! It works! However, I don't need types.c. All I
need is to follow the dev_random.c template and call a routine
add_my_rngs() (to be defined) before working with gsl's rng's, and
keep track (crudely) of which ones are which. So this can be decrufted
a bit and then reorganized now that I know how it works.
------------------------------------------------------------------------
r11 | rgb | 2003-01-16 21:54:49 -0500 (Thu, 16 Jan 2003) | 4 lines
We'll try these as the basic wrappers required. With luck we'll
override the types subroutine in gsl itself, although I do have my
doubts...
------------------------------------------------------------------------
r10 | rgb | 2003-01-16 21:38:52 -0500 (Thu, 16 Jan 2003) | 6 lines
This significantly improves the Usage and cl parsing, and pre-structures
it for addition of sts/diehard tests.
We still need to see if we can gsl-wrap our own tests without a full
gsl recompile.
------------------------------------------------------------------------
r9 | rgb | 2003-01-16 15:40:56 -0500 (Thu, 16 Jan 2003) | 2 lines
Sending the tagged copy home...
------------------------------------------------------------------------
r7 | rgb | 2003-01-16 15:40:38 -0500 (Thu, 16 Jan 2003) | 2 lines
This is now going to be v_0_1_0.
------------------------------------------------------------------------
r6 | rgb | 2003-01-16 15:39:55 -0500 (Thu, 16 Jan 2003) | 15 lines
This is now functional UP TO all the gsl rngs, not any of the add-ons.
Which is fine, as we'll probably completely change how the add-ons work.
Next, we need to do all of the following, in some order:
a) figure out how to wrap up new gsl_rngs, preferrably without
recompiling the whole damn library.
b) decruft all the command line options and no-longer-used variables.
c) add back command line options for doing quality tests. Start with
the very simplest test -- something from diehard or the bits test from
sts.
d) In the meantime, increment revision, tag, and consider "publishing"
as we go.
------------------------------------------------------------------------
r5 | rgb | 2003-01-16 15:14:54 -0500 (Thu, 16 Jan 2003) | 3 lines
This SHOULD split rand_rate off so it has its own CVS tree outside of
the "random" project overall, which I think is for the best.
------------------------------------------------------------------------
r4 | rgb | 2003-01-16 15:13:05 -0500 (Thu, 16 Jan 2003) | 4 lines
This actually works, and needs to be saved in snapshot form. I'm not
at ALL certain that I'm getting accurate measurements in terms of the
number of rands per second I can generate, but this too, we shall see...
------------------------------------------------------------------------
r3 | rgb | 2003-01-13 17:12:27 -0500 (Mon, 13 Jan 2003) | 2 lines
This is a fair amount of progress to having something working...
------------------------------------------------------------------------
r2 | rgb | 2003-01-11 19:07:56 -0500 (Sat, 11 Jan 2003) | 4 lines
This is basically the original checkin for my lookin-major random number
project. By the time this is done, I'd doggone better have a paper or
two out of it, if not more.
------------------------------------------------------------------------
|