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