﻿ /*******************************
```/******************************************************************************/
/*									      */
/*  COMPARE (K+L, K) MINUS CONTINUED-FRACTIONS CONVERGENTS TO EXPECTED VALUE  */
/*  02/23/11 (dkc)							      */
/*									      */
/*  This C program subtracts generalized continued-fraction convergents of    */
/*  log(3)/log(2) from the (K+L, K) value of a generalized dead limb and      */
/*  determines if the difference is the (K+L, K) value of a shorter	      */
/*									      */
/******************************************************************************/
#include <stdio.h>
#include <math.h>
unsigned int conv[21*2]={
2, 1,
4, 2,
3, 2,
6, 4,
9, 6,
5, 3,
8, 5,
16, 10,
24, 15,
11, 7,
19, 12,
38, 24,
57, 36,
76, 48,
27, 17,
46, 29,
65, 41,
130, 82,
84, 53,
149, 94,
233, 147};

unsigned int table[159*2]={
0, 0,      // 0
4, 3,      // 1
5, 4,      // 2   (6, 2) => (3, 2)
5, 4,      // 3   (7, 3) => (5, 3)
6, 5,      // 4
6, 5,      // 5   (10, 5) => (8, 5)
7, 6,      // 6
8, 7,      // 7   (14, 7) => (11, 7)
8, 7,      // 8
9, 8,      // 9
9, 8,      // 10
10, 9,      // 11
11, 10,     // 12  (22, 12) => (19, 12)
11, 10,     // 13
12, 11,     // 14
12, 11,     // 15
13, 12,     // 16
13, 12,     // 17  (29, 17) => (27, 17)
14, 13,     // 18
15, 14,     // 19
15, 14,     // 20
16, 15,     // 21
16, 15,     // 22
17, 16,     // 23
18, 17,     // 24
18, 17,     // 25
19, 18,     // 26
19, 18,     // 27
20, 19,     // 28
20, 19,     // 29  (48, 29) => (46, 29)
21, 20,     // 30
22, 21,     // 31
22, 21,     // 32
23, 22,     // 33
23, 22,     // 34
24, 23,     // 35
25, 24,     // 36
25, 24,     // 37
26, 25,     // 38
26, 25,     // 39
27, 26,     // 40
27, 26,     // 41  (67, 41) => (65, 41)
28, 27,     // 42
29, 28,     // 43
29, 28,     // 44
30, 29,     // 45
30, 29,     // 46
31, 30,     // 47
32, 31,     // 48
32, 31,     // 49
33, 32,     // 50
33, 32,     // 51
34, 33,     // 52
34, 34,     // 53  (87, 53) => (84, 53)     Note:  Even count the same.
35, 34,     // 54
36, 35,     // 55
36, 35,     // 56
37, 36,     // 57
37, 36,     // 58
38, 37,     // 59
39, 38,     // 60
39, 38,     // 61
40, 39,     // 62
40, 39,     // 63
41, 40,     // 64
42, 41,     // 65
42, 41,     // 66
43, 42,     // 67
43, 42,     // 68
44, 43,     // 69
44, 43,     // 70
45, 44,     // 71
46, 45,     // 72
46, 45,     // 73
47, 46,     // 74
47, 46,     // 75
48, 47,     // 76
49, 48,     // 77
49, 48,     // 78
50, 49,     // 79
50, 49,     // 80
51, 50,     // 81
51, 50,     // 82
52, 51,     // 83
53, 52,     // 84
53, 52,     // 85
54, 53,     // 86
54, 53,     // 87
55, 54,     // 88
56, 55,     // 89
56, 55,     // 90
57, 56,     // 91
57, 56,     // 92
58, 57,     // 93
58, 57,     // 94    // (152, 94) => (149, 94)
59, 58,     // 95
60, 59,     // 96
60, 59,     // 97
61, 60,     // 98
61, 60,     // 99
62, 61,     // 100
63, 62,     // 101
63, 62,     // 102
64, 63,     // 103
64, 63,     // 104
65, 64,     // 105
65, 65,     // 106	 // Note:  Even count the same.
66, 65,     // 107
67, 66,     // 108
67, 66,     // 109
68, 67,     // 110
68, 67,     // 111
69, 68,     // 112
70, 69,     // 113
70, 69,     // 114
71, 70,     // 115
71, 70,     // 116
72, 71,     // 117
73, 72,     // 118
73, 72,     // 119
74, 73,     // 120
74, 73,     // 121
75, 74,     // 122
75, 74,     // 123
76, 75,     // 124
77, 76,     // 125
77, 76,     // 126
78, 77,     // 127
78, 77,     // 128
79, 78,     // 129
80, 79,     // 130
80, 79,     // 131
81, 80,     // 132
81, 80,     // 133
82, 81,     // 134
82, 82,     // 135	 // Note:  Even count same.
83, 82,     // 136
84, 83,     // 137
84, 83,     // 138
85, 84,     // 139
85, 84,     // 140
86, 85,     // 141
87, 86,     // 142
87, 86,     // 143
88, 87,     // 144
88, 87,     // 145
89, 88,     // 146
89, 88,     // 147
90, 89,     // 148
91, 90,     // 149
91, 90,     // 150
92, 91,     // 151
92, 91,     // 152
93, 92,     // 153
94, 93,     // 154
94, 93,     // 155
95, 94,     // 156
95, 94,     // 157
96, 95};    // 158

int main () {
unsigned int i,j,k,l,a,b,c,d,z,delo,dela,delb;
FILE *Outfp;
Outfp = fopen("out2e.dat","w");
for (i=1; i<159; i++) {
z=table[2*i];       // evens
a=table[2*i+1];     // evens
b=i; 	       // odds
printf(" i=%d, z=%d, a=%d \n",b,z,a);
for (j=0; j<21; j++) {
c=conv[2*j];	 // K+L
d=conv[2*j+1];	 // K
if (d>=b)
continue;
if ((z+b)<c) {
printf("error: i=%d, j=%d, z+b=%d, c=%d \n",i,j,z+b,c);
goto zskip;
}
delo=b-d; 	 // delta odds
dela=z+b-c;	 // delta (evens+odds)
delb=a+b-c;	 // delta (evens+odds)
k=table[2*delo]+delo;   // expected delta (evens+odds)
l=table[2*delo+1]+delo; // expected delta (evens+odds)
if ((k!=dela)&&(l!=dela)&&(k!=delb)&&(l!=delb)) {
printf("error: i=%d, j=%d, k=%d, l=%d, dela=%d, delb=%d \n",i,j,k,l,dela,delb);
goto zskip;
}
}
}
zskip:
fclose(Outfp);
return(0);
}
```