Project

General

Profile

Feature #2561 ยป gcd_test.rb

kstephens (Kurt Stephens), 01/12/2010 01:18 AM

 
1

    
2
require 'rational'
3
require 'pp'
4

    
5
require 'test/unit'
6

    
7
class GcdTest < Test::Unit::TestCase
8

    
9
  @@biggest_positive_fixnum = 1
10
  until (x = ((@@biggest_positive_fixnum << 1) + 1)).class == Bignum
11
    @@biggest_positive_fixnum = x
12
  end
13
  @@biggest_positive_fixnum = (@@biggest_positive_fixnum - 10)
14
  until (x = (@@biggest_positive_fixnum + 1)).class == Bignum
15
    @@biggest_positive_fixnum = x
16
  end
17
  @@smallest_positive_bignum = x
18
  
19
  @@biggest_negative_fixnum = -1
20
  until (x = (@@biggest_negative_fixnum << 1)).class == Bignum
21
    @@biggest_negative_fixnum = x
22
  end
23
  until (x = (@@biggest_negative_fixnum - 1)).class == Bignum
24
    @@biggest_negative_fixnum = x
25
  end
26
  @@smallest_negative_bignum = x
27
  
28
  def xc x
29
    [ x.class, x ].inspect
30
  end
31

    
32
  # values generated from by 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
33
@@expected = 
34
[["[Fixnum, 1] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
35
 ["[Fixnum, 1] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
36
 ["[Fixnum, 1] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
37
 ["[Fixnum, 1] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
38
 ["[Fixnum, 1] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
39
 ["[Fixnum, 1] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
40
 ["[Fixnum, 1] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
41
 ["[Fixnum, 1] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
42
 ["[Fixnum, 1] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
43
 ["[Fixnum, 1] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
44
 ["[Fixnum, 1] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
45
 ["[Fixnum, 1] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
46
 ["[Fixnum, 1] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
47
 ["[Fixnum, 1] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
48
 ["[Fixnum, 1] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
49
 ["[Fixnum, 1] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
50
 ["[Fixnum, 1] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
51
 ["[Fixnum, 1] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
52
 ["[Fixnum, 2] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
53
 ["[Fixnum, 2] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
54
 ["[Fixnum, 2] gcd [Fixnum, 4] => ", "[Fixnum, 2]"],
55
 ["[Fixnum, 2] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
56
 ["[Fixnum, 2] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
57
 ["[Fixnum, 2] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
58
 ["[Fixnum, 2] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
59
 ["[Fixnum, 2] gcd [Fixnum, -4] => ", "[Fixnum, 2]"],
60
 ["[Fixnum, 2] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
61
 ["[Fixnum, 2] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
62
 ["[Fixnum, 2] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
63
 ["[Fixnum, 2] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
64
 ["[Fixnum, 2] gcd [Fixnum, -1073741824] => ", "[Fixnum, 2]"],
65
 ["[Fixnum, 2] gcd [Bignum, 1073741824] => ", "[Fixnum, 2]"],
66
 ["[Fixnum, 2] gcd [Bignum, 1073741824] => ", "[Fixnum, 2]"],
67
 ["[Fixnum, 2] gcd [Fixnum, -1073741824] => ", "[Fixnum, 2]"],
68
 ["[Fixnum, 2] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
69
 ["[Fixnum, 2] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
70
 ["[Fixnum, 4] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
71
 ["[Fixnum, 4] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
72
 ["[Fixnum, 4] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
73
 ["[Fixnum, 4] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
74
 ["[Fixnum, 4] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
75
 ["[Fixnum, 4] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
76
 ["[Fixnum, 4] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
77
 ["[Fixnum, 4] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
78
 ["[Fixnum, 4] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
79
 ["[Fixnum, 4] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
80
 ["[Fixnum, 4] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
81
 ["[Fixnum, 4] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
82
 ["[Fixnum, 4] gcd [Fixnum, -1073741824] => ", "[Fixnum, 4]"],
83
 ["[Fixnum, 4] gcd [Bignum, 1073741824] => ", "[Fixnum, 4]"],
84
 ["[Fixnum, 4] gcd [Bignum, 1073741824] => ", "[Fixnum, 4]"],
85
 ["[Fixnum, 4] gcd [Fixnum, -1073741824] => ", "[Fixnum, 4]"],
86
 ["[Fixnum, 4] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
87
 ["[Fixnum, 4] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
88
 ["[Fixnum, 5] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
89
 ["[Fixnum, 5] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
90
 ["[Fixnum, 5] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
91
 ["[Fixnum, 5] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
92
 ["[Fixnum, 5] gcd [Fixnum, 25] => ", "[Fixnum, 5]"],
93
 ["[Fixnum, 5] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
94
 ["[Fixnum, 5] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
95
 ["[Fixnum, 5] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
96
 ["[Fixnum, 5] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
97
 ["[Fixnum, 5] gcd [Fixnum, -25] => ", "[Fixnum, 5]"],
98
 ["[Fixnum, 5] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
99
 ["[Fixnum, 5] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
100
 ["[Fixnum, 5] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
101
 ["[Fixnum, 5] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
102
 ["[Fixnum, 5] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
103
 ["[Fixnum, 5] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
104
 ["[Fixnum, 5] gcd [Bignum, -1073741825] => ", "[Fixnum, 5]"],
105
 ["[Fixnum, 5] gcd [Bignum, 1073741825] => ", "[Fixnum, 5]"],
106
 ["[Fixnum, 25] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
107
 ["[Fixnum, 25] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
108
 ["[Fixnum, 25] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
109
 ["[Fixnum, 25] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
110
 ["[Fixnum, 25] gcd [Fixnum, 25] => ", "[Fixnum, 25]"],
111
 ["[Fixnum, 25] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
112
 ["[Fixnum, 25] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
113
 ["[Fixnum, 25] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
114
 ["[Fixnum, 25] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
115
 ["[Fixnum, 25] gcd [Fixnum, -25] => ", "[Fixnum, 25]"],
116
 ["[Fixnum, 25] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
117
 ["[Fixnum, 25] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
118
 ["[Fixnum, 25] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
119
 ["[Fixnum, 25] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
120
 ["[Fixnum, 25] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
121
 ["[Fixnum, 25] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
122
 ["[Fixnum, 25] gcd [Bignum, -1073741825] => ", "[Fixnum, 25]"],
123
 ["[Fixnum, 25] gcd [Bignum, 1073741825] => ", "[Fixnum, 25]"],
124
 ["[Fixnum, -1] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
125
 ["[Fixnum, -1] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
126
 ["[Fixnum, -1] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
127
 ["[Fixnum, -1] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
128
 ["[Fixnum, -1] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
129
 ["[Fixnum, -1] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
130
 ["[Fixnum, -1] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
131
 ["[Fixnum, -1] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
132
 ["[Fixnum, -1] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
133
 ["[Fixnum, -1] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
134
 ["[Fixnum, -1] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
135
 ["[Fixnum, -1] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
136
 ["[Fixnum, -1] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
137
 ["[Fixnum, -1] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
138
 ["[Fixnum, -1] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
139
 ["[Fixnum, -1] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
140
 ["[Fixnum, -1] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
141
 ["[Fixnum, -1] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
142
 ["[Fixnum, -2] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
143
 ["[Fixnum, -2] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
144
 ["[Fixnum, -2] gcd [Fixnum, 4] => ", "[Fixnum, 2]"],
145
 ["[Fixnum, -2] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
146
 ["[Fixnum, -2] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
147
 ["[Fixnum, -2] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
148
 ["[Fixnum, -2] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
149
 ["[Fixnum, -2] gcd [Fixnum, -4] => ", "[Fixnum, 2]"],
150
 ["[Fixnum, -2] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
151
 ["[Fixnum, -2] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
152
 ["[Fixnum, -2] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
153
 ["[Fixnum, -2] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
154
 ["[Fixnum, -2] gcd [Fixnum, -1073741824] => ", "[Fixnum, 2]"],
155
 ["[Fixnum, -2] gcd [Bignum, 1073741824] => ", "[Fixnum, 2]"],
156
 ["[Fixnum, -2] gcd [Bignum, 1073741824] => ", "[Fixnum, 2]"],
157
 ["[Fixnum, -2] gcd [Fixnum, -1073741824] => ", "[Fixnum, 2]"],
158
 ["[Fixnum, -2] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
159
 ["[Fixnum, -2] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
160
 ["[Fixnum, -4] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
161
 ["[Fixnum, -4] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
162
 ["[Fixnum, -4] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
163
 ["[Fixnum, -4] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
164
 ["[Fixnum, -4] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
165
 ["[Fixnum, -4] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
166
 ["[Fixnum, -4] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
167
 ["[Fixnum, -4] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
168
 ["[Fixnum, -4] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
169
 ["[Fixnum, -4] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
170
 ["[Fixnum, -4] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
171
 ["[Fixnum, -4] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
172
 ["[Fixnum, -4] gcd [Fixnum, -1073741824] => ", "[Fixnum, 4]"],
173
 ["[Fixnum, -4] gcd [Bignum, 1073741824] => ", "[Fixnum, 4]"],
174
 ["[Fixnum, -4] gcd [Bignum, 1073741824] => ", "[Fixnum, 4]"],
175
 ["[Fixnum, -4] gcd [Fixnum, -1073741824] => ", "[Fixnum, 4]"],
176
 ["[Fixnum, -4] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
177
 ["[Fixnum, -4] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
178
 ["[Fixnum, -5] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
179
 ["[Fixnum, -5] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
180
 ["[Fixnum, -5] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
181
 ["[Fixnum, -5] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
182
 ["[Fixnum, -5] gcd [Fixnum, 25] => ", "[Fixnum, 5]"],
183
 ["[Fixnum, -5] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
184
 ["[Fixnum, -5] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
185
 ["[Fixnum, -5] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
186
 ["[Fixnum, -5] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
187
 ["[Fixnum, -5] gcd [Fixnum, -25] => ", "[Fixnum, 5]"],
188
 ["[Fixnum, -5] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
189
 ["[Fixnum, -5] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
190
 ["[Fixnum, -5] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
191
 ["[Fixnum, -5] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
192
 ["[Fixnum, -5] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
193
 ["[Fixnum, -5] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
194
 ["[Fixnum, -5] gcd [Bignum, -1073741825] => ", "[Fixnum, 5]"],
195
 ["[Fixnum, -5] gcd [Bignum, 1073741825] => ", "[Fixnum, 5]"],
196
 ["[Fixnum, -25] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
197
 ["[Fixnum, -25] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
198
 ["[Fixnum, -25] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
199
 ["[Fixnum, -25] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
200
 ["[Fixnum, -25] gcd [Fixnum, 25] => ", "[Fixnum, 25]"],
201
 ["[Fixnum, -25] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
202
 ["[Fixnum, -25] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
203
 ["[Fixnum, -25] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
204
 ["[Fixnum, -25] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
205
 ["[Fixnum, -25] gcd [Fixnum, -25] => ", "[Fixnum, 25]"],
206
 ["[Fixnum, -25] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
207
 ["[Fixnum, -25] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
208
 ["[Fixnum, -25] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
209
 ["[Fixnum, -25] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
210
 ["[Fixnum, -25] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
211
 ["[Fixnum, -25] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
212
 ["[Fixnum, -25] gcd [Bignum, -1073741825] => ", "[Fixnum, 25]"],
213
 ["[Fixnum, -25] gcd [Bignum, 1073741825] => ", "[Fixnum, 25]"],
214
 ["[Fixnum, 1073741823] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
215
 ["[Fixnum, 1073741823] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
216
 ["[Fixnum, 1073741823] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
217
 ["[Fixnum, 1073741823] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
218
 ["[Fixnum, 1073741823] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
219
 ["[Fixnum, 1073741823] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
220
 ["[Fixnum, 1073741823] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
221
 ["[Fixnum, 1073741823] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
222
 ["[Fixnum, 1073741823] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
223
 ["[Fixnum, 1073741823] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
224
 ["[Fixnum, 1073741823] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1073741823]"],
225
 ["[Fixnum, 1073741823] gcd [Fixnum, -1073741823] => ",
226
  "[Fixnum, 1073741823]"],
227
 ["[Fixnum, 1073741823] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
228
 ["[Fixnum, 1073741823] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
229
 ["[Fixnum, 1073741823] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
230
 ["[Fixnum, 1073741823] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
231
 ["[Fixnum, 1073741823] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
232
 ["[Fixnum, 1073741823] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
233
 ["[Fixnum, -1073741823] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
234
 ["[Fixnum, -1073741823] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
235
 ["[Fixnum, -1073741823] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
236
 ["[Fixnum, -1073741823] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
237
 ["[Fixnum, -1073741823] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
238
 ["[Fixnum, -1073741823] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
239
 ["[Fixnum, -1073741823] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
240
 ["[Fixnum, -1073741823] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
241
 ["[Fixnum, -1073741823] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
242
 ["[Fixnum, -1073741823] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
243
 ["[Fixnum, -1073741823] gcd [Fixnum, 1073741823] => ",
244
  "[Fixnum, 1073741823]"],
245
 ["[Fixnum, -1073741823] gcd [Fixnum, -1073741823] => ",
246
  "[Fixnum, 1073741823]"],
247
 ["[Fixnum, -1073741823] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
248
 ["[Fixnum, -1073741823] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
249
 ["[Fixnum, -1073741823] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
250
 ["[Fixnum, -1073741823] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
251
 ["[Fixnum, -1073741823] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
252
 ["[Fixnum, -1073741823] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
253
 ["[Fixnum, -1073741824] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
254
 ["[Fixnum, -1073741824] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
255
 ["[Fixnum, -1073741824] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
256
 ["[Fixnum, -1073741824] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
257
 ["[Fixnum, -1073741824] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
258
 ["[Fixnum, -1073741824] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
259
 ["[Fixnum, -1073741824] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
260
 ["[Fixnum, -1073741824] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
261
 ["[Fixnum, -1073741824] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
262
 ["[Fixnum, -1073741824] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
263
 ["[Fixnum, -1073741824] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
264
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
265
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741824] => ",
266
  "[Bignum, 1073741824]"],
267
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741824] => ",
268
  "[Bignum, 1073741824]"],
269
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741824] => ",
270
  "[Bignum, 1073741824]"],
271
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741824] => ",
272
  "[Bignum, 1073741824]"],
273
 ["[Fixnum, -1073741824] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
274
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
275
 ["[Bignum, 1073741824] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
276
 ["[Bignum, 1073741824] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
277
 ["[Bignum, 1073741824] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
278
 ["[Bignum, 1073741824] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
279
 ["[Bignum, 1073741824] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
280
 ["[Bignum, 1073741824] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
281
 ["[Bignum, 1073741824] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
282
 ["[Bignum, 1073741824] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
283
 ["[Bignum, 1073741824] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
284
 ["[Bignum, 1073741824] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
285
 ["[Bignum, 1073741824] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
286
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
287
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741824] => ",
288
  "[Bignum, 1073741824]"],
289
 ["[Bignum, 1073741824] gcd [Bignum, 1073741824] => ", "[Bignum, 1073741824]"],
290
 ["[Bignum, 1073741824] gcd [Bignum, 1073741824] => ", "[Bignum, 1073741824]"],
291
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741824] => ",
292
  "[Bignum, 1073741824]"],
293
 ["[Bignum, 1073741824] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
294
 ["[Bignum, 1073741824] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
295
 ["[Bignum, 1073741824] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
296
 ["[Bignum, 1073741824] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
297
 ["[Bignum, 1073741824] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
298
 ["[Bignum, 1073741824] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
299
 ["[Bignum, 1073741824] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
300
 ["[Bignum, 1073741824] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
301
 ["[Bignum, 1073741824] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
302
 ["[Bignum, 1073741824] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
303
 ["[Bignum, 1073741824] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
304
 ["[Bignum, 1073741824] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
305
 ["[Bignum, 1073741824] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
306
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
307
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741824] => ",
308
  "[Bignum, 1073741824]"],
309
 ["[Bignum, 1073741824] gcd [Bignum, 1073741824] => ", "[Bignum, 1073741824]"],
310
 ["[Bignum, 1073741824] gcd [Bignum, 1073741824] => ", "[Bignum, 1073741824]"],
311
 ["[Bignum, 1073741824] gcd [Fixnum, -1073741824] => ",
312
  "[Bignum, 1073741824]"],
313
 ["[Bignum, 1073741824] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
314
 ["[Bignum, 1073741824] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
315
 ["[Fixnum, -1073741824] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
316
 ["[Fixnum, -1073741824] gcd [Fixnum, 2] => ", "[Fixnum, 2]"],
317
 ["[Fixnum, -1073741824] gcd [Fixnum, 4] => ", "[Fixnum, 4]"],
318
 ["[Fixnum, -1073741824] gcd [Fixnum, 5] => ", "[Fixnum, 1]"],
319
 ["[Fixnum, -1073741824] gcd [Fixnum, 25] => ", "[Fixnum, 1]"],
320
 ["[Fixnum, -1073741824] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
321
 ["[Fixnum, -1073741824] gcd [Fixnum, -2] => ", "[Fixnum, 2]"],
322
 ["[Fixnum, -1073741824] gcd [Fixnum, -4] => ", "[Fixnum, 4]"],
323
 ["[Fixnum, -1073741824] gcd [Fixnum, -5] => ", "[Fixnum, 1]"],
324
 ["[Fixnum, -1073741824] gcd [Fixnum, -25] => ", "[Fixnum, 1]"],
325
 ["[Fixnum, -1073741824] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
326
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
327
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741824] => ",
328
  "[Bignum, 1073741824]"],
329
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741824] => ",
330
  "[Bignum, 1073741824]"],
331
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741824] => ",
332
  "[Bignum, 1073741824]"],
333
 ["[Fixnum, -1073741824] gcd [Fixnum, -1073741824] => ",
334
  "[Bignum, 1073741824]"],
335
 ["[Fixnum, -1073741824] gcd [Bignum, -1073741825] => ", "[Fixnum, 1]"],
336
 ["[Fixnum, -1073741824] gcd [Bignum, 1073741825] => ", "[Fixnum, 1]"],
337
 ["[Bignum, -1073741825] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
338
 ["[Bignum, -1073741825] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
339
 ["[Bignum, -1073741825] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
340
 ["[Bignum, -1073741825] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
341
 ["[Bignum, -1073741825] gcd [Fixnum, 25] => ", "[Fixnum, 25]"],
342
 ["[Bignum, -1073741825] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
343
 ["[Bignum, -1073741825] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
344
 ["[Bignum, -1073741825] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
345
 ["[Bignum, -1073741825] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
346
 ["[Bignum, -1073741825] gcd [Fixnum, -25] => ", "[Fixnum, 25]"],
347
 ["[Bignum, -1073741825] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
348
 ["[Bignum, -1073741825] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
349
 ["[Bignum, -1073741825] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
350
 ["[Bignum, -1073741825] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
351
 ["[Bignum, -1073741825] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
352
 ["[Bignum, -1073741825] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
353
 ["[Bignum, -1073741825] gcd [Bignum, -1073741825] => ",
354
  "[Bignum, 1073741825]"],
355
 ["[Bignum, -1073741825] gcd [Bignum, 1073741825] => ",
356
  "[Bignum, 1073741825]"],
357
 ["[Bignum, 1073741825] gcd [Fixnum, 1] => ", "[Fixnum, 1]"],
358
 ["[Bignum, 1073741825] gcd [Fixnum, 2] => ", "[Fixnum, 1]"],
359
 ["[Bignum, 1073741825] gcd [Fixnum, 4] => ", "[Fixnum, 1]"],
360
 ["[Bignum, 1073741825] gcd [Fixnum, 5] => ", "[Fixnum, 5]"],
361
 ["[Bignum, 1073741825] gcd [Fixnum, 25] => ", "[Fixnum, 25]"],
362
 ["[Bignum, 1073741825] gcd [Fixnum, -1] => ", "[Fixnum, 1]"],
363
 ["[Bignum, 1073741825] gcd [Fixnum, -2] => ", "[Fixnum, 1]"],
364
 ["[Bignum, 1073741825] gcd [Fixnum, -4] => ", "[Fixnum, 1]"],
365
 ["[Bignum, 1073741825] gcd [Fixnum, -5] => ", "[Fixnum, 5]"],
366
 ["[Bignum, 1073741825] gcd [Fixnum, -25] => ", "[Fixnum, 25]"],
367
 ["[Bignum, 1073741825] gcd [Fixnum, 1073741823] => ", "[Fixnum, 1]"],
368
 ["[Bignum, 1073741825] gcd [Fixnum, -1073741823] => ", "[Fixnum, 1]"],
369
 ["[Bignum, 1073741825] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
370
 ["[Bignum, 1073741825] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
371
 ["[Bignum, 1073741825] gcd [Bignum, 1073741824] => ", "[Fixnum, 1]"],
372
 ["[Bignum, 1073741825] gcd [Fixnum, -1073741824] => ", "[Fixnum, 1]"],
373
 ["[Bignum, 1073741825] gcd [Bignum, -1073741825] => ",
374
  "[Bignum, 1073741825]"],
375
 ["[Bignum, 1073741825] gcd [Bignum, 1073741825] => ", "[Bignum, 1073741825]"]]
376

    
377

    
378
  def test_results
379
    values = 
380
      [
381
       1, 2, 4, 5, 25,
382
       -1, -2, -4, -5, -25,
383
       @@biggest_positive_fixnum, - @@biggest_positive_fixnum,
384
       @@biggest_negative_fixnum, - @@biggest_negative_fixnum,
385
       @@smallest_positive_bignum, - @@smallest_positive_bignum,
386
       @@smallest_negative_bignum, - @@smallest_negative_bignum,
387
      ]
388

    
389
    results = [ ]
390
    values.each do | x |
391
      values.each do | y |
392
        results <<
393
          [ "#{xc(x)} gcd #{xc(y)} => ", 
394
            begin
395
              xc(x.gcd(y))
396
            rescue => err
397
              err
398
            end
399
          ]
400
      end
401
    end
402
    
403
    if @@expected 
404
      if results != @@expected
405
        pp [ :expected, expected ]
406
        pp [ :results,  results ]
407
        assert_equal expected, results
408
      end
409
    else
410
      puts "@@expected = "
411
      pp results
412
    end
413
  end
414
end
415

    
416