This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.0 alpha 5
[perl5.git] / t / lib / big.t
CommitLineData
57ebbfd0
LW
1#!./perl
2require "../lib/bigint.pl";
3
4$test = 0;
5$| = 1;
6print "1..246\n";
7while (<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
26abc:NaN
27 1 a:NaN
281bcd2:NaN
2911111b:NaN
30+1z:NaN
31-1z:NaN
320:+0
33+0:+0
34+00:+0
35+0 0 0:+0
36000000 0000000 00000:+0
37-0:+0
38-0000:+0
39+1:+1
40+01:+1
41+001:+1
42+00000100000:+100000
43123456789:+123456789
44-1:-1
45-01:-1
46-001:-1
47-123456789:-123456789
48-00000100000:-100000
49&bneg
50abd:NaN
51+0:+0
52+1:-1
53-1:+1
54+123456789:-123456789
55-123456789:+123456789
56&babs
57abc:NaN
58+0:+0
59+1:+1
60-1:+1
61+123456789:+123456789
62-123456789:+123456789
63&bcmp
64abc:abc:
65abc:+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
87abc:abc:NaN
88abc:+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
125abc:abc:NaN
126abc:+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
163abc:abc:NaN
164abc:+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
196abc:abc:NaN
197abc:+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
233abc:abc:NaN
234abc:+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
270abc:abc:NaN
271abc:+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