- Moved unused argc, temp variable into small scope.
[dragonfly.git] / contrib / perl5 / t / lib / bigintpm.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7
8 use Math::BigInt;
9
10 $test = 0;
11 $| = 1;
12 print "1..247\n";
13 while (<DATA>) {
14        chop;
15        if (s/^&//) {
16                $f = $_;
17        } else {
18                ++$test;
19                @args = split(/:/,$_,99);
20                $ans = pop(@args);
21                $try = "\$x = new Math::BigInt \"$args[0]\";";
22                if ($f eq "bnorm"){
23                    $try .= "\$x+0;";
24                } elsif ($f eq "bneg") {
25                    $try .= "-\$x;";
26                } elsif ($f eq "babs") {
27                    $try .= "abs \$x;";
28                } else {
29                    $try .= "\$y = new Math::BigInt \"$args[1]\";";
30                    if ($f eq bcmp){
31                        $try .= "\$x <=> \$y;";
32                    }elsif ($f eq badd){
33                        $try .= "\$x + \$y;";
34                    }elsif ($f eq bsub){
35                        $try .= "\$x - \$y;";
36                    }elsif ($f eq bmul){
37                        $try .= "\$x * \$y;";
38                    }elsif ($f eq bdiv){
39                        $try .= "\$x / \$y;";
40                    }elsif ($f eq bmod){
41                        $try .= "\$x % \$y;";
42                    }elsif ($f eq bgcd){
43                        $try .= "Math::BigInt::bgcd(\$x, \$y);";
44                    } else { warn "Unknown op"; }
45                }
46                #print ">>>",$try,"<<<\n";
47                $ans1 = eval $try;
48                if ("$ans1" eq $ans) { #bug!
49                        print "ok $test\n";
50                } else {
51                        print "not ok $test\n";
52                        print "# '$try' expected: '$ans' got: '$ans1'\n";
53                }
54        }
55
56 __END__
57 &bnorm
58 abc:NaN
59    1 a:NaN
60 1bcd2:NaN
61 11111b:NaN
62 +1z:NaN
63 -1z:NaN
64 0:+0
65 +0:+0
66 +00:+0
67 +0 0 0:+0
68 000000  0000000   00000:+0
69 -0:+0
70 -0000:+0
71 +1:+1
72 +01:+1
73 +001:+1
74 +00000100000:+100000
75 123456789:+123456789
76 -1:-1
77 -01:-1
78 -001:-1
79 -123456789:-123456789
80 -00000100000:-100000
81 &bneg
82 abd:NaN
83 +0:+0
84 +1:-1
85 -1:+1
86 +123456789:-123456789
87 -123456789:+123456789
88 &babs
89 abc:NaN
90 +0:+0
91 +1:+1
92 -1:+1
93 +123456789:+123456789
94 -123456789:+123456789
95 &bcmp
96 abc:abc:NaN
97 abc:+0:NaN
98 +0:abc:NaN
99 +0:+0:+0
100 -1:+0:-1
101 +0:-1:+1
102 +1:+0:+1
103 +0:+1:-1
104 -1:+1:-1
105 +1:-1:+1
106 -1:-1:+0
107 +1:+1:+0
108 +123:+123:+0
109 +123:+12:+1
110 +12:+123:-1
111 -123:-123:+0
112 -123:-12:-1
113 -12:-123:+1
114 +123:+124:-1
115 +124:+123:+1
116 -123:-124:+1
117 -124:-123:-1
118 +100:+5:+1
119 &badd
120 abc:abc:NaN
121 abc:+0:NaN
122 +0:abc:NaN
123 +0:+0:+0
124 +1:+0:+1
125 +0:+1:+1
126 +1:+1:+2
127 -1:+0:-1
128 +0:-1:-1
129 -1:-1:-2
130 -1:+1:+0
131 +1:-1:+0
132 +9:+1:+10
133 +99:+1:+100
134 +999:+1:+1000
135 +9999:+1:+10000
136 +99999:+1:+100000
137 +999999:+1:+1000000
138 +9999999:+1:+10000000
139 +99999999:+1:+100000000
140 +999999999:+1:+1000000000
141 +9999999999:+1:+10000000000
142 +99999999999:+1:+100000000000
143 +10:-1:+9
144 +100:-1:+99
145 +1000:-1:+999
146 +10000:-1:+9999
147 +100000:-1:+99999
148 +1000000:-1:+999999
149 +10000000:-1:+9999999
150 +100000000:-1:+99999999
151 +1000000000:-1:+999999999
152 +10000000000:-1:+9999999999
153 +123456789:+987654321:+1111111110
154 -123456789:+987654321:+864197532
155 -123456789:-987654321:-1111111110
156 +123456789:-987654321:-864197532
157 &bsub
158 abc:abc:NaN
159 abc:+0:NaN
160 +0:abc:NaN
161 +0:+0:+0
162 +1:+0:+1
163 +0:+1:-1
164 +1:+1:+0
165 -1:+0:-1
166 +0:-1:+1
167 -1:-1:+0
168 -1:+1:-2
169 +1:-1:+2
170 +9:+1:+8
171 +99:+1:+98
172 +999:+1:+998
173 +9999:+1:+9998
174 +99999:+1:+99998
175 +999999:+1:+999998
176 +9999999:+1:+9999998
177 +99999999:+1:+99999998
178 +999999999:+1:+999999998
179 +9999999999:+1:+9999999998
180 +99999999999:+1:+99999999998
181 +10:-1:+11
182 +100:-1:+101
183 +1000:-1:+1001
184 +10000:-1:+10001
185 +100000:-1:+100001
186 +1000000:-1:+1000001
187 +10000000:-1:+10000001
188 +100000000:-1:+100000001
189 +1000000000:-1:+1000000001
190 +10000000000:-1:+10000000001
191 +123456789:+987654321:-864197532
192 -123456789:+987654321:-1111111110
193 -123456789:-987654321:+864197532
194 +123456789:-987654321:+1111111110
195 &bmul
196 abc:abc:NaN
197 abc:+0:NaN
198 +0:abc:NaN
199 +0:+0:+0
200 +0:+1:+0
201 +1:+0:+0
202 +0:-1:+0
203 -1:+0:+0
204 +123456789123456789:+0:+0
205 +0:+123456789123456789:+0
206 -1:-1:+1
207 -1:+1:-1
208 +1:-1:-1
209 +1:+1:+1
210 +2:+3:+6
211 -2:+3:-6
212 +2:-3:-6
213 -2:-3:+6
214 +111:+111:+12321
215 +10101:+10101:+102030201
216 +1001001:+1001001:+1002003002001
217 +100010001:+100010001:+10002000300020001
218 +10000100001:+10000100001:+100002000030000200001
219 +11111111111:+9:+99999999999
220 +22222222222:+9:+199999999998
221 +33333333333:+9:+299999999997
222 +44444444444:+9:+399999999996
223 +55555555555:+9:+499999999995
224 +66666666666:+9:+599999999994
225 +77777777777:+9:+699999999993
226 +88888888888:+9:+799999999992
227 +99999999999:+9:+899999999991
228 &bdiv
229 abc:abc:NaN
230 abc:+1:abc:NaN
231 +1:abc:NaN
232 +0:+0:NaN
233 +0:+1:+0
234 +1:+0:NaN
235 +0:-1:+0
236 -1:+0:NaN
237 +1:+1:+1
238 -1:-1:+1
239 +1:-1:-1
240 -1:+1:-1
241 +1:+2:+0
242 +2:+1:+2
243 +1000000000:+9:+111111111
244 +2000000000:+9:+222222222
245 +3000000000:+9:+333333333
246 +4000000000:+9:+444444444
247 +5000000000:+9:+555555555
248 +6000000000:+9:+666666666
249 +7000000000:+9:+777777777
250 +8000000000:+9:+888888888
251 +9000000000:+9:+1000000000
252 +35500000:+113:+314159
253 +71000000:+226:+314159
254 +106500000:+339:+314159
255 +1000000000:+3:+333333333
256 +10:+5:+2
257 +100:+4:+25
258 +1000:+8:+125
259 +10000:+16:+625
260 +999999999999:+9:+111111111111
261 +999999999999:+99:+10101010101
262 +999999999999:+999:+1001001001
263 +999999999999:+9999:+100010001
264 +999999999999999:+99999:+10000100001
265 &bmod
266 abc:abc:NaN
267 abc:+1:abc:NaN
268 +1:abc:NaN
269 +0:+0:NaN
270 +0:+1:+0
271 +1:+0:NaN
272 +0:-1:+0
273 -1:+0:NaN
274 +1:+1:+0
275 -1:-1:+0
276 +1:-1:+0
277 -1:+1:+0
278 +1:+2:+1
279 +2:+1:+0
280 +1000000000:+9:+1
281 +2000000000:+9:+2
282 +3000000000:+9:+3
283 +4000000000:+9:+4
284 +5000000000:+9:+5
285 +6000000000:+9:+6
286 +7000000000:+9:+7
287 +8000000000:+9:+8
288 +9000000000:+9:+0
289 +35500000:+113:+33
290 +71000000:+226:+66
291 +106500000:+339:+99
292 +1000000000:+3:+1
293 +10:+5:+0
294 +100:+4:+0
295 +1000:+8:+0
296 +10000:+16:+0
297 +999999999999:+9:+0
298 +999999999999:+99:+0
299 +999999999999:+999:+0
300 +999999999999:+9999:+0
301 +999999999999999:+99999:+0
302 &bgcd
303 abc:abc:NaN
304 abc:+0:NaN
305 +0:abc:NaN
306 +0:+0:+0
307 +0:+1:+1
308 +1:+0:+1
309 +1:+1:+1
310 +2:+3:+1
311 +3:+2:+1
312 +100:+625:+25
313 +4096:+81:+1