32 static const int64_t numlist[] = {
33 INT64_MIN, INT64_MIN+1, INT64_MAX, INT32_MIN, INT32_MAX, 1,0,-1,
34 123456789, INT32_MAX-1, INT32_MAX+1LL, UINT32_MAX-1, UINT32_MAX, UINT32_MAX+1LL
37 for (
a.num = -2;
a.num <= 2;
a.num++) {
38 for (
a.den = -2;
a.den <= 2;
a.den++) {
39 for (
b.num = -2;
b.num <= 2;
b.num++) {
40 for (
b.den = -2;
b.den <= 2;
b.den++) {
45 else if (d < 0) d = -1;
46 else if (d != d) d = INT_MIN;
49 a.den,
b.num,
b.den,
c,d);
51 if(
b.den && (
r.num*
a.den !=
a.num*
r.den || !
r.num != !
a.num || !
r.den != !
a.den))
58 for (a64.
num = -2; a64.
num <= 2; a64.
num++) {
59 for (a64.
den = -2; a64.
den <= 2; a64.
den++) {
60 for (b64.
num = -2; b64.
num <= 2; b64.
num++) {
61 for (b64.
den = -2; b64.
den <= 2; b64.
den++) {
65 const int d = adbl == bdbl ? 0 :
67 adbl < bdbl ? -1 : INT_MIN;
71 (
long long) a64.
num, (
long long) a64.
den,
72 (
long long) b64.
num, (
long long) b64.
den,
c,d);
80 if (rdbl != adbl + bdbl) {
82 adbl, bdbl, rdbl, adbl + bdbl);
87 if (rdbl != adbl * bdbl) {
89 adbl, bdbl, rdbl, adbl * bdbl);
100 (
long long) a64.
num, (
long long) a64.
den,
101 (
long long) r64.
num, (
long long) r64.
den);
112 (
long long) a64.
num, (
long long) a64.
den,
113 (
long long) r64.
num, (
long long) r64.
den);
123 {{INT_MAX, 2}, { 2, 1}, { INT_MAX, 1}},
124 {{INT_MAX, 2}, {-2, 1}, {-INT_MAX, 1}},
125 {{INT_MAX, 2}, { 0, 1}, {0, 1}},
126 {{INT_MIN, 2}, { 2, 1}, {-INT_MAX, 1}},
127 {{INT_MIN, 2}, {-2, 1}, { INT_MAX, 1}},
128 {{INT_MIN, 2}, { 0, 1}, {0, 1}},
129 {{INT_MAX >> 8, 1}, {INT_MAX >> 8, 1}, {INT_MAX, 1}},
130 {{1, INT_MAX >> 8}, {1, INT_MAX >> 8}, {0, 1}},
131 {{1, 1}, {0, 0}, {0, 0}},
132 {{0, 1}, {0, 0}, {0, 0}},
136 for (
int c = 0;
c < 2;
c++) {
141 if (
r.num !=
c.num ||
r.den !=
c.den) {
143 a.num,
a.den,
b.num,
b.den,
r.num,
r.den,
c.num,
c.den);
149 {{INT_MAX, 1}, { 2, 2}, { INT_MAX, 1}},
150 {{INT_MAX, 1}, {-2, 2}, { INT_MAX - 1, 1}},
151 {{INT_MAX, 1}, { 0, 2}, { INT_MAX, 1}},
152 {{INT_MIN, 1}, { 2, 2}, {-INT_MAX, 1}},
153 {{INT_MIN, 1}, {-2, 2}, {-INT_MAX, 1}},
154 {{INT_MIN, 1}, { 0, 2}, {-INT_MAX, 1}},
155 {{INT_MAX - 10, 1}, {20, 1}, { INT_MAX, 1}},
156 {{2, INT_MAX}, {2, INT_MAX}, {4, INT_MAX}},
157 {{1, 1}, {0, 0}, {0, 0}},
158 {{0, 1}, {0, 0}, {0, 0}},
162 for (
int c = 0;
c < 2;
c++) {
167 if (
r.num !=
c.num ||
r.den !=
c.den) {
169 a.num,
a.den,
b.num,
b.den,
r.num,
r.den,
c.num,
c.den);
175 {{INT64_MAX, 2}, { 2, 1}, { INT64_MAX, 1}},
176 {{INT64_MAX, 2}, {-2, 1}, {-INT64_MAX, 1}},
177 {{INT64_MAX, 2}, { 0, 1}, {0, 1}},
178 {{INT64_MIN, 2}, { 2, 1}, {-INT64_MAX, 1}},
179 {{INT64_MIN, 2}, {-2, 1}, { INT64_MAX, 1}},
180 {{INT64_MIN, 2}, { 0, 1}, {0, 1}},
181 {{INT64_MAX >> 8, 1}, {INT64_MAX >> 8, 1}, {INT64_MAX, 1}},
182 {{1, INT64_MAX >> 8}, {1, INT64_MAX >> 8}, {0, 1}},
183 {{1, 1}, {0, 0}, {0, 0}},
184 {{0, 1}, {0, 0}, {0, 0}},
188 for (
int c = 0;
c < 2;
c++) {
193 if (
r.num !=
c.num ||
r.den !=
c.den) {
195 (
long long)
a.num, (
long long)
a.den,
196 (
long long)
b.num, (
long long)
b.den,
197 (
long long)
r.num, (
long long)
r.den,
198 (
long long)
c.num, (
long long)
c.den);
204 {{INT64_MAX, 1}, { 2, 2}, { INT64_MAX, 1}},
205 {{INT64_MAX, 1}, {-2, 2}, { INT64_MAX - 1, 1}},
206 {{INT64_MAX, 1}, { 0, 2}, { INT64_MAX, 1}},
207 {{INT64_MIN, 1}, { 2, 2}, {-INT64_MAX, 1}},
208 {{INT64_MIN, 1}, {-2, 2}, {-INT64_MAX, 1}},
209 {{INT64_MIN, 1}, { 0, 2}, {-INT64_MAX, 1}},
210 {{INT64_MAX - 10, 1}, {20, 1}, { INT64_MAX, 1}},
211 {{2, INT64_MAX}, {2, INT64_MAX}, {4, INT64_MAX}},
212 {{1, 1}, {0, 0}, {0, 0}},
213 {{0, 1}, {0, 0}, {0, 0}},
217 for (
int c = 0;
c < 2;
c++) {
222 if (
r.num !=
c.num ||
r.den !=
c.den) {
224 (
long long)
a.num, (
long long)
a.den,
225 (
long long)
b.num, (
long long)
b.den,
226 (
long long)
r.num, (
long long)
r.den,
227 (
long long)
c.num, (
long long)
c.den);
267 for (
a.num = 1;
a.num <= 10;
a.num++) {
268 for (
a.den = 1;
a.den <= 10;
a.den++) {
271 for (
b.num = 1;
b.num <= 10;
b.num++) {
272 for (
b.den = 1;
b.den <= 10;
b.den++) {
278 for (start = 0; start < 10 ; start++) {
282 for (
i = 0;
i<100;
i++) {
285 if (
FFABS(acc - exact) > 2) {
287 a.den,
b.num,
b.den, acc, exact);
297 for (
a.den = 1;
a.den < 0x100000000U/3;
a.den*=3) {
298 for (
a.num = -1;
a.num < (1<<27);
a.num += 1 +
a.num/100) {