@@ -4,7 +4,7 @@ use strict;
4
4
5
5
use Bit::Vector;
6
6
7
- print " 1..162 \n " ;
7
+ print " 1..693 \n " ;
8
8
9
9
my $n = 1;
10
10
@@ -34,26 +34,35 @@ sub gcd($$$$$)
34
34
35
35
$i = 0;
36
36
37
- while ($t [$i +1 ][0])
37
+ if ($t [$i ][0])
38
38
{
39
- $a = $t [$i ][0];
40
- $b = $t [$i +1][0];
41
- $q = int ( $a / $b );
42
- $r = $a - $q * $b ;
43
- $t [$i +2][0] = $r ;
44
- $t [$i +2][1] = $t [$i ][1] - $t [$i +1][1] * $q ;
45
- $t [$i +2][2] = $t [$i ][2] - $t [$i +1][2] * $q ;
46
- $t [$i +1][3] = $q ;
47
- # printf("[ %6d, %6d, %6d, %6d ]\n", @{$t[$i+1]});
48
- $i ++;
39
+ while ($t [$i +1][0])
40
+ {
41
+ $a = $t [$i ][0];
42
+ $b = $t [$i +1][0];
43
+ $q = int ( $a / $b );
44
+ $r = $a - $q * $b ;
45
+ $t [$i +2][0] = $r ;
46
+ $t [$i +2][1] = $t [$i ][1] - $t [$i +1][1] * $q ;
47
+ $t [$i +2][2] = $t [$i ][2] - $t [$i +1][2] * $q ;
48
+ $t [$i +1][3] = $q ;
49
+ # printf("[ %6d, %6d, %6d, %6d ]\n", @{$t[$i+1]});
50
+ $i ++;
51
+ }
52
+ }
53
+ else
54
+ {
55
+ $t [$i ][0] = $t [$i +1][0];
56
+ $t [$i ][1] = 0;
57
+ $t [$i ][2] = 1;
49
58
}
50
59
51
60
# printf("[ %6d, %6d, %6d, %6d ]\n", @{$t[$i+1]});
52
61
53
62
# print "\nGCD1( $t[0][0], $t[1][0] ) = ", $t[$i][0], "\n";
54
63
55
64
if ($t [$i ][0] == $c )
56
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
65
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #1: $t [ $i ][0] != $c \n " ;} # 1
57
66
$n ++;
58
67
59
68
$z -> GCD($x ,$y );
@@ -65,7 +74,7 @@ sub gcd($$$$$)
65
74
# printf("GCD2( %s, %s ) = %s\n", $xx, $yy, $zz);
66
75
67
76
if ($zz == $c )
68
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
77
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #2: $zz != $c \n " ;} # 2
69
78
$n ++;
70
79
71
80
$z -> GCD($v ,$w ,$x ,$y );
@@ -80,7 +89,7 @@ sub gcd($$$$$)
80
89
# printf("GCD3( %s, %s ) = %s\n", $xx, $yy, $zz);
81
90
82
91
if ($zz == $c )
83
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
92
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #3: $zz != $c \n " ;} # 3
84
93
$n ++;
85
94
86
95
$v -> Multiply($v ,$x );
@@ -96,54 +105,121 @@ sub gcd($$$$$)
96
105
# $t[$i][2] * $t[1][0]);
97
106
98
107
if (($t [$i ][1] * $t [0][0] + $t [$i ][2] * $t [1][0]) == $c )
99
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
108
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #4: $t [ $i ][1] * $t [0][0] + $t [ $i ][2] * $t [1][0] != $c \n " ;} # 4
100
109
$n ++;
101
110
102
111
if ($t [$i ][1] == $d )
103
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
112
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #5: $t [ $i ][1] != $d \n " ;} # 5
104
113
$n ++;
105
114
106
115
if ($t [$i ][2] == $e )
107
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
116
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #6: $t [ $i ][2] != $e \n " ;} # 6
108
117
$n ++;
109
118
110
119
# printf("%s * %s + %s * %s = %s\n\n", $vv, $xx, $ww, $yy, $uu);
111
120
112
121
if ($uu == $c )
113
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
122
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #7: $uu != $c \n " ;} # 7
114
123
$n ++;
115
124
116
125
if ($vv == $d )
117
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
126
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #8: $vv != $d \n " ;} # 8
118
127
$n ++;
119
128
120
129
if ($ww == $e )
121
- {print " ok $n \n " ;} else {print " not ok $n \n " ;}
130
+ {print " ok $n \n " ;} else {print " not ok $n \n " ;warn " #9: $ww != $e \n " ;} # 9
122
131
$n ++;
123
132
}
124
133
125
- gcd( 2322, 0, 2322, 1, 0 );
126
- gcd( 0, 654, 654, 0, 1 );
127
-
128
- gcd( 2322, 654, 6, 20, -71 );
129
- gcd( 2322, -654, 6, 20, 71 );
130
- gcd( -2322, 654, -6, 20, 71 );
131
- gcd( -2322, -654, -6, 20, -71 );
132
-
133
- gcd( 654, 2322, 6, -71, 20 );
134
- gcd( 654, -2322, -6, 71, 20 );
135
- gcd( -654, 2322, 6, 71, 20 );
136
- gcd( -654, -2322, -6, -71, 20 );
137
-
138
- gcd( 12345, 54321, 3, 3617, -822 );
139
- gcd( 12345, -54321, 3, 3617, 822 );
140
- gcd( -12345, 54321, -3, 3617, 822 );
141
- gcd( -12345, -54321, -3, 3617, -822 );
142
-
143
- gcd( 54321, 12345, 3, -822, 3617 );
144
- gcd( 54321, -12345, -3, 822, 3617 );
145
- gcd( -54321, 12345, 3, 822, 3617 );
146
- gcd( -54321, -12345, -3, -822, 3617 );
134
+ gcd( 0, 0, 0, 0, 1 );
135
+
136
+ gcd( 0, 1, 1, 0, 1 );
137
+ gcd( 1, 0, 1, 1, 0 );
138
+ gcd( 0, -1, -1, 0, 1 );
139
+ gcd( -1, 0, -1, 1, 0 );
140
+
141
+ gcd( 0, 2, 2, 0, 1 );
142
+ gcd( 2, 0, 2, 1, 0 );
143
+ gcd( 0, -2, -2, 0, 1 );
144
+ gcd( -2, 0, -2, 1, 0 );
145
+
146
+ gcd( 0, 3, 3, 0, 1 );
147
+ gcd( 3, 0, 3, 1, 0 );
148
+ gcd( 0, -3, -3, 0, 1 );
149
+ gcd( -3, 0, -3, 1, 0 );
150
+
151
+ gcd( 1, 1, 1, 0, 1 );
152
+ gcd( 1, -1, -1, 0, 1 );
153
+ gcd( -1, 1, 1, 0, 1 );
154
+ gcd( -1, -1, -1, 0, 1 );
155
+
156
+ gcd( 1, 2, 1, 1, 0 );
157
+ gcd( 2, 1, 1, 0, 1 );
158
+ gcd( -1, 2, -1, 1, 0 );
159
+ gcd( 2, -1, -1, 0, 1 );
160
+ gcd( 1, -2, 1, 1, 0 );
161
+ gcd( -2, 1, 1, 0, 1 );
162
+ gcd( -1, -2, -1, 1, 0 );
163
+ gcd( -2, -1, -1, 0, 1 );
164
+
165
+ gcd( 2, 3, 1, -1, 1 );
166
+ gcd( 3, 2, 1, 1, -1 );
167
+ gcd( -2, 3, 1, 1, 1 );
168
+ gcd( 3, -2, 1, 1, 1 );
169
+ gcd( 2, -3, -1, 1, 1 );
170
+ gcd( -3, 2, -1, 1, 1 );
171
+ gcd( -2, -3, -1, -1, 1 );
172
+ gcd( -3, -2, -1, 1, -1 );
173
+
174
+ gcd( 3, 5, 1, 2, -1 );
175
+ gcd( 5, 3, 1, -1, 2 );
176
+ gcd( -3, 5, -1, 2, 1 );
177
+ gcd( 5, -3, -1, 1, 2 );
178
+ gcd( 3, -5, 1, 2, 1 );
179
+ gcd( -5, 3, 1, 1, 2 );
180
+ gcd( -3, -5, -1, 2, -1 );
181
+ gcd( -5, -3, -1, -1, 2 );
182
+
183
+ gcd( 5, 7, 1, 3, -2 );
184
+ gcd( 7, 5, 1, -2, 3 );
185
+ gcd( -5, 7, -1, 3, 2 );
186
+ gcd( 7, -5, -1, 2, 3 );
187
+ gcd( 5, -7, 1, 3, 2 );
188
+ gcd( -7, 5, 1, 2, 3 );
189
+ gcd( -5, -7, -1, 3, -2 );
190
+ gcd( -7, -5, -1, -2, 3 );
191
+
192
+ gcd( 6, 30, 6, 1, 0 );
193
+ gcd( 30, 6, 6, 0, 1 );
194
+ gcd( -6, 30, -6, 1, 0 );
195
+ gcd( 30, -6, -6, 0, 1 );
196
+ gcd( 6, -30, 6, 1, 0 );
197
+ gcd( -30, 6, 6, 0, 1 );
198
+ gcd( -6, -30, -6, 1, 0 );
199
+ gcd( -30, -6, -6, 0, 1 );
200
+
201
+ gcd( 2322, 0, 2322, 1, 0 );
202
+ gcd( 0, 654, 654, 0, 1 );
203
+ gcd( -2322, 0, -2322, 1, 0 );
204
+ gcd( 0, -654, -654, 0, 1 );
205
+
206
+ gcd( 2322, 654, 6, 20, -71 );
207
+ gcd( 2322, -654, 6, 20, 71 );
208
+ gcd( -2322, 654, -6, 20, 71 );
209
+ gcd( -2322, -654, -6, 20, -71 );
210
+ gcd( 654, 2322, 6, -71, 20 );
211
+ gcd( 654, -2322, -6, 71, 20 );
212
+ gcd( -654, 2322, 6, 71, 20 );
213
+ gcd( -654, -2322, -6, -71, 20 );
214
+
215
+ gcd( 12345, 54321, 3, 3617, -822 );
216
+ gcd( 12345, -54321, 3, 3617, 822 );
217
+ gcd( -12345, 54321, -3, 3617, 822 );
218
+ gcd( -12345, -54321, -3, 3617, -822 );
219
+ gcd( 54321, 12345, 3, -822, 3617 );
220
+ gcd( 54321, -12345, -3, 822, 3617 );
221
+ gcd( -54321, 12345, 3, 822, 3617 );
222
+ gcd( -54321, -12345, -3, -822, 3617 );
147
223
148
224
__END__
149
225
0 commit comments