/******************************************************************************/ /* */ /* COMPUTE 3N+1 OR 3N-1 SEQUENCE */ /* 01/27/10 (dkc) */ /* */ /* This C program generates limbs where the first element of the limb is */ /* even, less than the order, and greater than the order over 2. The last */ /* element of the limb is odd and greater than the order/3. Only live limbs */ /* are generated. The limbs must have at least one element that is divisible*/ /* by 8. */ /* */ /******************************************************************************/ #include <stdio.h> #include <math.h> int main () { // int c=1; // c unsigned int order=50331648; // 3*2**k unsigned int l=15; // limb length unsigned int p=2; // number of elements in e array unsigned int a=6; // number of elements in sv unsigned int b=2; // number of sequence vectors // unsigned int d,e,f,g,h,i,j,k,m,n,o,iters,count,first,savee; // indices unsigned int w,u,mask,maxk; unsigned int v[8192]; // sub-sequence arrays unsigned int t[200]; unsigned int ho[512]; // histogram of limb lengths unsigned int he[512]; unsigned int s[131072]; // duplicate array, minimum size=(order/12)/32 double x,dx; int del,r; unsigned int dist[200]; // distribution of e values int num[15]={1,-1,7,5,-17,47,13,-217,295,-139,1909,1631,-3299, 13085,6487}; int den[15]={4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384, 32768,65536}; unsigned int len[15]={2,4,5,7,9,10,12,14,15,17,18,20,22,23,25}; unsigned int y[40]={0,3,6,8,11, // B (invalid lengths) 13,16,19,21,24, // B 26,29,32,34,37, // B 39,42,44,47,50, // C 52,55,57,60,63, // C 65,68,70,73,75, // D 78,81,83,86,88, // D 91,94,96,99,101}; // D // int z[1]={1202}; // length=12, live only // int z[1]={3862}; // length=14, live only int z[2]={ // length=15, live only 7724,5780}; // int z[10]={ // length=17, live only // 24196,22738,18850,18364,16906,16258,14530,14476,13378,13018}; // int z[10]={ // length=18, live only //48392,45476,37700,36728,33812,32516,29060,28952,26756,26036}; // int z[45]={ // length=20, live only // 149272,140524,136150,117196,114280,112822,105532,101644,101158,99700, // 97270,95326,91276,90952,86902,85606,84364,84148,82204,79990,79756,79774, // 77830,76372,75400,75382,75238,73780,71998,69406,68326,67462,66868,66652, // 63718,62494,62278,62260,60820,60550,57886,56446,55942,55366,50758}; // int z[63]={ // length=22, live only // 456008,429764,416642,359780,351032,346658,324788,313124,311666,307292, // 300002,294170,282020,281048,268898,265010,261284,260636,254804,248162, // 247514,247460,241682,234392,234338,237308,233906,229532,225644,224186, // 216410,213170,212522,210578,208796,208148,203288,199346,195674,195026, // 194972,194540,190652,189842,181850,181418,178988,177530,177044,176018, // 174290,173804,165866,163922,160682,160466,159980,159548,150098,147884, // 146858,146426,134762}; // int z[98]={ // length=23 // 912016,859528,833284,719560,702064,693316,649576,626248,623332,614584, // 600004,588340,570844,564040,562096,537796,530020,522568,521272,509608, // 496324,495028,494920,483364,477532,476488,474616,468784,468676,467812, // 459064,451288,450244,448372,432820,430876,426340,425044,421156,417592, // 416296,415324,407548,406576,398692,391348,390052,389944,389080,381304, // 380260,379684,373852,371512,368668,363700,362836,357976,355060,354088, // 352036,348580,347608,346204,345340,345268,337564,333604,331732,327844, // 327772,327196,321364,320932,319960,319096,314236,303868,302500,301528, // 300196,299548,296092,295768,293716,292852,281764,281116,276220,275356, // 275284,269524,268444,257788,252028,250012,247708,229276}; //unsigned int sv[5*1]={ // length=12, live only // 1, 3, 1, 1, 1}; // 1202 //unsigned int sv[6*1]={ // length=14, live only // 1, 3, 1, 1, 1, 1}; // 3862 unsigned int sv[6*2]={ // length=15, live only 2, 3, 1, 1, 1, 1, // 7724 2, 1, 3, 1, 1, 1};// 5780 /* unsigned int sv[7*10]={ // length=17, live only 2, 3, 1, 1, 1, 1, 1, // 24196 1, 4, 1, 1, 1, 1, 1, // 22738 1, 3, 2, 1, 1, 1, 1, // 18850 2, 1, 3, 1, 1, 1, 1, // 18364 1, 2, 3, 1, 1, 1, 1, // 16906 1, 3, 1, 2, 1, 1, 1, // 16258 1, 3, 1, 1, 2, 1, 1, // 14530 2, 1, 1, 3, 1, 1, 1, // 14476 1, 3, 1, 1, 1, 2, 1, // 13378 1, 2, 1, 3, 1, 1, 1};// 13018 */ /* unsigned int sv[7*10]={ // length=18, live only 3, 3, 1, 1, 1, 1, 1, // 48392 2, 4, 1, 1, 1, 1, 1, // 45476 2, 3, 2, 1, 1, 1, 1, // 37700 3, 1, 3, 1, 1, 1, 1, // 36728 2, 2, 3, 1, 1, 1, 1, // 33812 2, 3, 1, 2, 1, 1, 1, // 32516 2, 3, 1, 1, 2, 1, 1, // 29060 3, 1, 1, 3, 1, 1, 1, // 28952 2, 3, 1, 1, 1, 2, 1, // 26756 2, 2, 1, 3, 1, 1, 1};// 26036 */ /* unsigned int sv[8*45]={ // length=20, live only 3, 3, 1, 1, 1, 1, 1, 1, // 149272 2, 4, 1, 1, 1, 1, 1, 1, // 140524 1, 5, 1, 1, 1, 1, 1, 1, // 136150 2, 3, 2, 1, 1, 1, 1, 1, // 117196 3, 1, 3, 1, 1, 1, 1, 1, // 114280 1, 4, 2, 1, 1, 1, 1, 1, // 112822 2, 2, 3, 1, 1, 1, 1, 1, // 105532 2, 3, 1, 2, 1, 1, 1, 1, // 101644 1, 3, 3, 1, 1, 1, 1, 1, // 101158 2, 1, 4, 1, 1, 1, 1, 1, // 99700 1, 4, 1, 2, 1, 1, 1, 1, // 97270 1, 2, 4, 1, 1, 1, 1, 1, // 95326 2, 3, 1, 1, 2, 1, 1, 1, // 91276 3, 1, 1, 3, 1, 1, 1, 1, // 90952 1, 4, 1, 1, 2, 1, 1, 1, // 86902 1, 3, 2, 2, 1, 1, 1, 1, // 85606 2, 3, 1, 1, 1, 2, 1, 1, // 84364 2, 1, 3, 2, 1, 1, 1, 1, // 84148 2, 2, 1, 3, 1, 1, 1, 1, // 82204 1, 4, 1, 1, 1, 2, 1, 1, // 79990 1, 2, 3, 2, 1, 1, 1, 1, // 79774 2, 3, 1, 1, 1, 1, 2, 1, // 79756 1, 3, 1, 3, 1, 1, 1, 1, // 77830 2, 1, 2, 3, 1, 1, 1, 1, // 76372 3, 1, 1, 1, 3, 1, 1, 1, // 75400 1, 4, 1, 1, 1, 1, 2, 1, // 75382 1, 3, 2, 1, 2, 1, 1, 1, // 75238 2, 1, 3, 1, 2, 1, 1, 1, // 73780 1, 2, 2, 3, 1, 1, 1, 1, // 71998 1, 2, 3, 1, 2, 1, 1, 1, // 69406 1, 3, 1, 2, 2, 1, 1, 1, // 67462 1, 3, 2, 1, 1, 2, 1, 1, // 68326 2, 1, 3, 1, 1, 2, 1, 1, // 66868 2, 2, 1, 1, 3, 1, 1, 1, // 66652 1, 3, 2, 1, 1, 1, 2, 1, // 63718 1, 2, 3, 1, 1, 2, 1, 1, // 62494 1, 3, 1, 1, 3, 1, 1, 1, // 62278 2, 1, 3, 1, 1, 1, 2, 1, // 62260 2, 1, 2, 1, 3, 1, 1, 1, // 60820 1, 3, 1, 2, 1, 2, 1, 1, // 60550 1, 2, 3, 1, 1, 1, 2, 1, // 57886 1, 2, 2, 1, 3, 1, 1, 1, // 56446 1, 3, 1, 2, 1, 1, 2, 1, // 55942 1, 3, 1, 1, 2, 2, 1, 1, // 55366 1, 3, 1, 1, 2, 1, 2, 1}; // 50758 */ /* unsigned int sv[9*63]={ // length=22, live only 3, 3, 1, 1, 1, 1, 1, 1, 1, // 456008 2, 4, 1, 1, 1, 1, 1, 1, 1, // 429764 1, 5, 1, 1, 1, 1, 1, 1, 1, // 416642 2, 3, 2, 1, 1, 1, 1, 1, 1, // 359780 3, 1, 3, 1, 1, 1, 1, 1, 1, // 351032 1, 4, 2, 1, 1, 1, 1, 1, 1, // 346658 2, 2, 3, 1, 1, 1, 1, 1, 1, // 324788 2, 3, 1, 2, 1, 1, 1, 1, 1, // 313124 1, 3, 3, 1, 1, 1, 1, 1, 1, // 311666 2, 1, 4, 1, 1, 1, 1, 1, 1, // 307292 1, 4, 1, 2, 1, 1, 1, 1, 1, // 300002 1, 2, 4, 1, 1, 1, 1, 1, 1, // 294170 2, 3, 1, 1, 2, 1, 1, 1, 1, // 282020 3, 1, 1, 3, 1, 1, 1, 1, 1, // 281048 1, 4, 1, 1, 2, 1, 1, 1, 1, // 268898 1, 3, 2, 2, 1, 1, 1, 1, 1, // 265010 2, 3, 1, 1, 1, 2, 1, 1, 1, // 261284 2, 1, 3, 2, 1, 1, 1, 1, 1, // 260636 2, 2, 1, 3, 1, 1, 1, 1, 1, // 254804 1, 4, 1, 1, 1, 2, 1, 1, 1, // 248162 1, 2, 3, 2, 1, 1, 1, 1, 1, // 247514 2, 3, 1, 1, 1, 1, 2, 1, 1, // 247460 1, 3, 1, 3, 1, 1, 1, 1, 1, // 241682 2, 1, 2, 3, 1, 1, 1, 1, 1, // 237308 3, 1, 1, 1, 3, 1, 1, 1, 1, // 234392 1, 4, 1, 1, 1, 1, 2, 1, 1, // 234338 1, 3, 2, 1, 2, 1, 1, 1, 1, // 233906 2, 1, 3, 1, 2, 1, 1, 1, 1, // 229532 2, 1, 1, 4, 1, 1, 1, 1, 1, // 225644 1, 2, 2, 3, 1, 1, 1, 1, 1, // 224186 1, 2, 3, 1, 2, 1, 1, 1, 1, // 216410 1, 3, 2, 1, 1, 2, 1, 1, 1, // 213170 1, 2, 1, 4, 1, 1, 1, 1, 1, // 212522 1, 3, 1, 2, 2, 1, 1, 1, 1, // 210578 2, 1, 3, 1, 1, 2, 1, 1, 1, // 208796 2, 2, 1, 1, 3, 1, 1, 1, 1, // 208148 3, 1, 1, 1, 1, 3, 1, 1, 1, // 203288 1, 3, 2, 1, 1, 1, 2, 1, 1, // 199346 1, 2, 3, 1, 1, 2, 1, 1, 1, // 195674 1, 3, 1, 1, 3, 1, 1, 1, 1, // 195026 2, 1, 3, 1, 1, 1, 2, 1, 1, // 194972 2, 1, 1, 3, 2, 1, 1, 1, 1, // 194540 2, 1, 2, 1, 3, 1, 1, 1, 1, // 190652 1, 3, 1, 2, 1, 2, 1, 1, 1, // 189842 1, 2, 3, 1, 1, 1, 2, 1, 1, // 181850 1, 2, 1, 3, 2, 1, 1, 1, 1, // 181418 2, 1, 1, 2, 3, 1, 1, 1, 1, // 178988 1, 2, 2, 1, 3, 1, 1, 1, 1, // 177530 2, 2, 1, 1, 1, 3, 1, 1, 1, // 177044 1, 3, 1, 2, 1, 1, 2, 1, 1, // 176018 1, 3, 1, 1, 2, 2, 1, 1, 1, // 174290 2, 1, 1, 3, 1, 2, 1, 1, 1, // 173804 1, 2, 1, 2, 3, 1, 1, 1, 1, // 165866 1, 3, 1, 1, 1, 3, 1, 1, 1, // 163922 1, 2, 1, 3, 1, 2, 1, 1, 1, // 160682 1, 3, 1, 1, 2, 1, 2, 1, 1, // 160466 2, 1, 1, 3, 1, 1, 2, 1, 1, // 159980 2, 1, 2, 1, 1, 3, 1, 1, 1, // 159548 1, 3, 1, 1, 1, 2, 2, 1, 1, // 150098 2, 1, 1, 2, 1, 3, 1, 1, 1, // 147884 1, 2, 1, 3, 1, 1, 2, 1, 1, // 146858 1, 2, 2, 1, 1, 3, 1, 1, 1, // 146426 1, 2, 1, 2, 1, 3, 1, 1, 1};// 134762 */ /* unsigned int sv[9*98]={ // length=23, live only 4, 3, 1, 1, 1, 1, 1, 1, 1, // 912016 3, 4, 1, 1, 1, 1, 1, 1, 1, // 859528 2, 5, 1, 1, 1, 1, 1, 1, 1, // 833284 3, 3, 2, 1, 1, 1, 1, 1, 1, // 719560 4, 1, 3, 1, 1, 1, 1, 1, 1, // 702064 2, 4, 2, 1, 1, 1, 1, 1, 1, // 693316 3, 2, 3, 1, 1, 1, 1, 1, 1, // 649576 3, 3, 1, 2, 1, 1, 1, 1, 1, // 626248 2, 3, 3, 1, 1, 1, 1, 1, 1, // 623332 3, 1, 4, 1, 1, 1, 1, 1, 1, // 614584 2, 4, 1, 2, 1, 1, 1, 1, 1, // 600004 2, 2, 4, 1, 1, 1, 1, 1, 1, // 588340 2, 1, 5, 1, 1, 1, 1, 1, 1, // 570844 3, 3, 1, 1, 2, 1, 1, 1, 1, // 564040 4, 1, 1, 3, 1, 1, 1, 1, 1, // 562096 2, 4, 1, 1, 2, 1, 1, 1, 1, // 537796 2, 3, 2, 2, 1, 1, 1, 1, 1, // 530020 3, 3, 1, 1, 1, 2, 1, 1, 1, // 522568 3, 1, 3, 2, 1, 1, 1, 1, 1, // 521272 3, 2, 1, 3, 1, 1, 1, 1, 1, // 509608 2, 4, 1, 1, 1, 2, 1, 1, 1, // 496324 2, 2, 3, 2, 1, 1, 1, 1, 1, // 495028 3, 3, 1, 1, 1, 1, 2, 1, 1, // 494920 2, 3, 1, 3, 1, 1, 1, 1, 1, // 483364 2, 1, 4, 2, 1, 1, 1, 1, 1, // 477532 3, 3, 1, 1, 1, 1, 1, 2, 1, // 476488 3, 1, 2, 3, 1, 1, 1, 1, 1, // 474616 4, 1, 1, 1, 3, 1, 1, 1, 1, // 468784 2, 4, 1, 1, 1, 1, 2, 1, 1, // 468676 2, 3, 2, 1, 2, 1, 1, 1, 1, // 467812 3, 1, 3, 1, 2, 1, 1, 1, 1, // 459064 3, 1, 1, 4, 1, 1, 1, 1, 1, // 451288 2, 4, 1, 1, 1, 1, 1, 2, 1, // 450244 2, 2, 2, 3, 1, 1, 1, 1, 1, // 448372 2, 2, 3, 1, 2, 1, 1, 1, 1, // 432820 2, 1, 3, 3, 1, 1, 1, 1, 1, // 430876 2, 3, 2, 1, 1, 2, 1, 1, 1, // 426340 2, 2, 1, 4, 1, 1, 1, 1, 1, // 425044 2, 3, 1, 2, 2, 1, 1, 1, 1, // 421156 3, 1, 3, 1, 1, 2, 1, 1, 1, // 417592 3, 2, 1, 1, 3, 1, 1, 1, 1, // 416296 2, 1, 4, 1, 2, 1, 1, 1, 1, // 415324 2, 1, 2, 4, 1, 1, 1, 1, 1, // 407548 4, 1, 1, 1, 1, 3, 1, 1, 1, // 406576 2, 3, 2, 1, 1, 1, 2, 1, 1, // 398692 2, 2, 3, 1, 1, 2, 1, 1, 1, // 391348 2, 3, 1, 1, 3, 1, 1, 1, 1, // 390052 3, 1, 3, 1, 1, 1, 2, 1, 1, // 389944 3, 1, 1, 3, 2, 1, 1, 1, 1, // 389080 3, 1, 2, 1, 3, 1, 1, 1, 1, // 381304 2, 3, 2, 1, 1, 1, 1, 2, 1, // 380260 2, 3, 1, 2, 1, 2, 1, 1, 1, // 379684 2, 1, 4, 1, 1, 2, 1, 1, 1, // 373852 3, 1, 3, 1, 1, 1, 1, 2, 1, // 371512 2, 1, 3, 2, 2, 1, 1, 1, 1, // 368668 2, 2, 3, 1, 1, 1, 2, 1, 1, // 363700 2, 2, 1, 3, 2, 1, 1, 1, 1, // 362836 3, 1, 1, 2, 3, 1, 1, 1, 1, // 357976 2, 2, 2, 1, 3, 1, 1, 1, 1, // 355060 3, 2, 1, 1, 1, 3, 1, 1, 1, // 354088 2, 3, 1, 2, 1, 1, 2, 1, 1, // 352036 2, 3, 1, 1, 2, 2, 1, 1, 1, // 348580 3, 1, 1, 3, 1, 2, 1, 1, 1, // 347608 2, 1, 4, 1, 1, 1, 2, 1, 1, // 346204 2, 1, 2, 3, 2, 1, 1, 1, 1, // 345340 2, 2, 3, 1, 1, 1, 1, 2, 1, // 345268 2, 1, 3, 1, 3, 1, 1, 1, 1, // 337564 2, 3, 1, 2, 1, 1, 1, 2, 1, // 333604 2, 2, 1, 2, 3, 1, 1, 1, 1, // 331732 2, 3, 1, 1, 1, 3, 1, 1, 1, // 327844 2, 1, 4, 1, 1, 1, 1, 2, 1, // 327772 2, 1, 3, 2, 1, 2, 1, 1, 1, // 327196 2, 2, 1, 3, 1, 2, 1, 1, 1, // 321364 2, 3, 1, 1, 2, 1, 2, 1, 1, // 320932 3, 1, 1, 3, 1, 1, 2, 1, 1, // 319960 3, 1, 2, 1, 1, 3, 1, 1, 1, // 319096 2, 1, 2, 2, 3, 1, 1, 1, 1, // 314236 2, 1, 2, 3, 1, 2, 1, 1, 1, // 303868 2, 3, 1, 1, 2, 1, 1, 2, 1, // 302500 3, 1, 1, 3, 1, 1, 1, 2, 1, // 301528 2, 3, 1, 1, 1, 2, 2, 1, 1, // 300196 2, 1, 3, 2, 1, 1, 2, 1, 1, // 299548 2, 1, 3, 1, 2, 2, 1, 1, 1, // 296092 3, 1, 1, 2, 1, 3, 1, 1, 1, // 295768 2, 2, 1, 3, 1, 1, 2, 1, 1, // 293716 2, 2, 2, 1, 1, 3, 1, 1, 1, // 292852 2, 3, 1, 1, 1, 2, 1, 2, 1, // 281764 2, 1, 3, 2, 1, 1, 1, 2, 1, // 281116 2, 1, 2, 3, 1, 1, 2, 1, 1, // 276220 2, 1, 3, 1, 1, 3, 1, 1, 1, // 275356 2, 2, 1, 3, 1, 1, 1, 2, 1, // 275284 2, 2, 1, 2, 1, 3, 1, 1, 1, // 269524 2, 1, 3, 1, 2, 1, 2, 1, 1, // 268444 2, 1, 2, 3, 1, 1, 1, 2, 1, // 257788 2, 1, 2, 2, 1, 3, 1, 1, 1, // 252028 2, 1, 3, 1, 2, 1, 1, 2, 1, // 250012 2, 1, 3, 1, 1, 2, 2, 1, 1, // 247708 2, 1, 3, 1, 1, 2, 1, 2, 1};// 229276 */ // // e values for g=0 // //unsigned int z[2]={ // length=12, live only // 986,842}; //unsigned int z[2]={ // length=14, live only // 2782,3214}; //unsigned int z[5]={ // length=17, live only // 14314,11434,12586,10138,11290}; //unsigned int z[5]={ // length=20, live only // 61630,54718,50110,49534,44926}; //unsigned int z[9]={ // length=22, live only // 156794,158522,172346,193082,145130,142970,132602,131306,120938}; // FILE *Outfp; Outfp = fopen("out3a.dat","w"); o=0; if (order>(50331648*32)) { // check if order in range printf("order too large \n"); goto zskip; } for (i=0; i<131072; i++) // clear duplicate array s[i]=0; for (i=0; i<512; i++) { // clear histogram of limb lengths ho[i]=0; he[i]=0; } for (i=0; i<200; i++) // clear histogram of e values dist[i]=0; maxk=0; h=0; // clear limb count count=0; // clear missing e value count iters=0; // clear display count // // LIVE LIMBS (ending in an odd natural number) // for (i=order; i>(order/2); i-=2) { if (i==(i/3)*3) // dead limb continue; g=0; // clear segment count k=i; // set k v[0]=k; // save sequence value n=1; // element count while (k==(k/2)*2) { k=k/2; v[n]=k; // save sequence value n=n+1; // increment element count } for (j=1; j<100000; j++) { if (k==1) goto mskip; if (c==-1) { if ((k==5)||(k==7)) goto mskip; if ((k==17)||(k==25)||(k==37)||(k==55)||(k==41)||(k==61)||(k==91)) goto mskip; } if (k==(k/3)*3) // dead limb goto mskip; if (k>(order/3)) { // limb ending in odd natural number > order/3 if (order<=50331648) { w=((k-(order/3))-1)/2; // index into array u=w-(w/32)*32; // fractional portion of index w=w/32; // integer portion of index mask=1<<u; // set mask s[w]=s[w]|mask; // set bit in array } if (k>maxk) maxk=k; goto lskip; } k=3*k+c; // next sequence value if (k>order) // sequence value out of range goto mskip; if ((k&0xc0000000)!=0) // check for overflow goto mskip; if (k==(k/8)*8) // check for connection point g=g+1; // increment primary connection point count v[n]=k; // save sequence value n=n+1; // increment element count while (k==(k/2)*2) { k=k/2; // next sequence value v[n]=k; // save sequence value n=n+1; // increment element count } if (n>4096) { printf("error: array not big enough \n"); goto mskip; } } goto mskip; // // check array // lskip: if (g==0) // skip segment counts of zero goto mskip; h=h+1; if (n<512) ho[n]=ho[n]+1; else { printf("error: ho array not big enough \n"); goto zskip; } if (v[0]==(v[0]/3)*3) { printf("error: dead limb \n"); goto zskip; } if (n<12) { printf("error: unexpected limb length \n"); goto zskip; } if (n!=l) // check for specified limb length goto mskip; count=count+1; // increment missing z value count if (iters<=20) { // output a few limbs printf("limb=(%d, %d), g=%d \n",v[0],v[n-1],g); iters=iters+1; } r=(int)(v[0])-(int)((3*v[n-1]+c)/2); // difference of first elements for (f=0; f<15; f++) { if (n==len[f]) { x=(double)v[0]; x=x*(double)num[f]; dx=(double)r; dx=dx*(double)den[f]; x=x-dx; del=(int)x; // del=(int)(v[0])*num[f]-r*den[f]; for (e=0; e<p; e++) { if (del==c*z[e]) { savee=z[e]; dist[e]=dist[e]+1; goto bskip; } } // printf("error: No solution of Diophantine equation %d \n",del); // printf("limb=%d, %d, n=%d \n",v[0],v[n-1],n); if (o<200) { printf("n=%d del=%d \n",n,del); fprintf(Outfp," %d,\n",del); o=o+1; goto mskip; } goto zskip; bskip: m=v[0]; k=v[n-1]; if (l==2) { t[0]=1; f=1; goto dskip; } f=0; if ((m&1)==0) { count=0; while ((m&1)==0) { count=count+1; m=m/2; } t[0]=count; f=1; } first=1; while (m!=k) { if ((m&1)==0) { m=m/2; count=count+1; } else { m=3*m+c; if (first==0) { t[f]=count; f=f+1; if (f>200) { printf("error: sequence vector array not big enough \n"); printf("limb=%d, %d, n=%d \n",v[0],v[n-1],n); goto zskip; } } else first=0; count=0; } } t[f]=count; f=f+1; dskip: if (f!=a) { printf("error: incorrect sequence vector length=%d \n",f); goto zskip; } for (d=0; d<b; d++) { for (j=0; j<a; j++) { if (t[j]!=sv[j+a*d]) goto eskip; } he[d]=he[d]+1; goto mskip; eskip: j=0; } if (o<100) { for (j=0; j<a; j++) fprintf(Outfp," %d,",t[j]); fprintf(Outfp," // %d\n",savee); o=o+1; goto mskip; } printf("error: sequence vector not found \n"); fprintf(Outfp,"error: sequence vector not found \n"); goto zskip; } } mskip:n=0; } printf("maximum k=%d \n",maxk); // // check for valid lengths // for (i=0; i<40; i++) { if (ho[y[i]]!=0) { printf("error: n=%d \n",y[i]); goto zskip; } } // // output distribution of e values // printf("\n"); printf("distribution of e values \n"); for (i=0; i<p; i++) printf("count=%d, %d \n",dist[i],he[i]); // // check mask array // count=0; if (order<=50331648) { for (i=0; i<(order/(12*32)); i++) { // printf(" %#10x \n",s[i]); if ((s[i]!=0xb6db6db6)&&(s[i]!=0x6db6db6d)&&(s[i]!=0xdb6db6db)) { if (s[i]!=0) { printf("error: mask=%#10x \n",s[i]); goto zskip; } else count=count+1; } } } if (count!=0) { printf("\n"); printf("count=%d \n",count); } // // output histogram // fprintf(Outfp,"\n"); printf("\n"); printf("expected number of entries=%d \n",order/144); fprintf(Outfp,"HISTOGRAM: number of entries=%d \n",h); printf("HISTOGRAM: number of entries=%d \n",h); for (h=0; h<64; h++) { fprintf(Outfp," %d %d %d %d %d %d %d %d \n",ho[8*h],ho[8*h+1],ho[8*h+2], ho[8*h+3],ho[8*h+4],ho[8*h+5],ho[8*h+6],ho[8*h+7]); } for (h=0; h<48; h++) { printf(" %d %d %d %d %d %d %d %d \n",ho[8*h],ho[8*h+1],ho[8*h+2], ho[8*h+3],ho[8*h+4],ho[8*h+5],ho[8*h+6],ho[8*h+7]); } zskip: fclose(Outfp); return(0); }