1N/A#!./perl
1N/A
1N/ABEGIN {
1N/A chdir 't' if -d 't';
1N/A @INC = '../lib';
1N/A}
1N/Arequire "bigint.pl";
1N/A
1N/A$test = 0;
1N/A$| = 1;
1N/Aprint "1..246\n";
1N/Awhile (<DATA>) {
1N/A chop;
1N/A if (/^&/) {
1N/A $f = $_;
1N/A } else {
1N/A ++$test;
1N/A @args = split(/:/,$_,99);
1N/A $ans = pop(@args);
1N/A $try = "$f('" . join("','", @args) . "');";
1N/A if (($ans1 = eval($try)) eq $ans) {
1N/A print "ok $test\n";
1N/A } else {
1N/A print "not ok $test\n";
1N/A print "# '$try' expected: '$ans' got: '$ans1'\n";
1N/A }
1N/A }
1N/A}
1N/A__END__
1N/A&bnorm
1N/Aabc:NaN
1N/A 1 a:NaN
1N/A1bcd2:NaN
1N/A11111b:NaN
1N/A+1z:NaN
1N/A-1z:NaN
1N/A0:+0
1N/A+0:+0
1N/A+00:+0
1N/A+0 0 0:+0
1N/A000000 0000000 00000:+0
1N/A-0:+0
1N/A-0000:+0
1N/A+1:+1
1N/A+01:+1
1N/A+001:+1
1N/A+00000100000:+100000
1N/A123456789:+123456789
1N/A-1:-1
1N/A-01:-1
1N/A-001:-1
1N/A-123456789:-123456789
1N/A-00000100000:-100000
1N/A&bneg
1N/Aabd:NaN
1N/A+0:+0
1N/A+1:-1
1N/A-1:+1
1N/A+123456789:-123456789
1N/A-123456789:+123456789
1N/A&babs
1N/Aabc:NaN
1N/A+0:+0
1N/A+1:+1
1N/A-1:+1
1N/A+123456789:+123456789
1N/A-123456789:+123456789
1N/A&bcmp
1N/Aabc:abc:
1N/Aabc:+0:
1N/A+0:abc:
1N/A+0:+0:0
1N/A-1:+0:-1
1N/A+0:-1:1
1N/A+1:+0:1
1N/A+0:+1:-1
1N/A-1:+1:-1
1N/A+1:-1:1
1N/A-1:-1:0
1N/A+1:+1:0
1N/A+123:+123:0
1N/A+123:+12:1
1N/A+12:+123:-1
1N/A-123:-123:0
1N/A-123:-12:-1
1N/A-12:-123:1
1N/A+123:+124:-1
1N/A+124:+123:1
1N/A-123:-124:1
1N/A-124:-123:-1
1N/A&badd
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:+0
1N/A+1:+0:+1
1N/A+0:+1:+1
1N/A+1:+1:+2
1N/A-1:+0:-1
1N/A+0:-1:-1
1N/A-1:-1:-2
1N/A-1:+1:+0
1N/A+1:-1:+0
1N/A+9:+1:+10
1N/A+99:+1:+100
1N/A+999:+1:+1000
1N/A+9999:+1:+10000
1N/A+99999:+1:+100000
1N/A+999999:+1:+1000000
1N/A+9999999:+1:+10000000
1N/A+99999999:+1:+100000000
1N/A+999999999:+1:+1000000000
1N/A+9999999999:+1:+10000000000
1N/A+99999999999:+1:+100000000000
1N/A+10:-1:+9
1N/A+100:-1:+99
1N/A+1000:-1:+999
1N/A+10000:-1:+9999
1N/A+100000:-1:+99999
1N/A+1000000:-1:+999999
1N/A+10000000:-1:+9999999
1N/A+100000000:-1:+99999999
1N/A+1000000000:-1:+999999999
1N/A+10000000000:-1:+9999999999
1N/A+123456789:+987654321:+1111111110
1N/A-123456789:+987654321:+864197532
1N/A-123456789:-987654321:-1111111110
1N/A+123456789:-987654321:-864197532
1N/A&bsub
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:+0
1N/A+1:+0:+1
1N/A+0:+1:-1
1N/A+1:+1:+0
1N/A-1:+0:-1
1N/A+0:-1:+1
1N/A-1:-1:+0
1N/A-1:+1:-2
1N/A+1:-1:+2
1N/A+9:+1:+8
1N/A+99:+1:+98
1N/A+999:+1:+998
1N/A+9999:+1:+9998
1N/A+99999:+1:+99998
1N/A+999999:+1:+999998
1N/A+9999999:+1:+9999998
1N/A+99999999:+1:+99999998
1N/A+999999999:+1:+999999998
1N/A+9999999999:+1:+9999999998
1N/A+99999999999:+1:+99999999998
1N/A+10:-1:+11
1N/A+100:-1:+101
1N/A+1000:-1:+1001
1N/A+10000:-1:+10001
1N/A+100000:-1:+100001
1N/A+1000000:-1:+1000001
1N/A+10000000:-1:+10000001
1N/A+100000000:-1:+100000001
1N/A+1000000000:-1:+1000000001
1N/A+10000000000:-1:+10000000001
1N/A+123456789:+987654321:-864197532
1N/A-123456789:+987654321:-1111111110
1N/A-123456789:-987654321:+864197532
1N/A+123456789:-987654321:+1111111110
1N/A&bmul
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:+0
1N/A+0:+1:+0
1N/A+1:+0:+0
1N/A+0:-1:+0
1N/A-1:+0:+0
1N/A+123456789123456789:+0:+0
1N/A+0:+123456789123456789:+0
1N/A-1:-1:+1
1N/A-1:+1:-1
1N/A+1:-1:-1
1N/A+1:+1:+1
1N/A+2:+3:+6
1N/A-2:+3:-6
1N/A+2:-3:-6
1N/A-2:-3:+6
1N/A+111:+111:+12321
1N/A+10101:+10101:+102030201
1N/A+1001001:+1001001:+1002003002001
1N/A+100010001:+100010001:+10002000300020001
1N/A+10000100001:+10000100001:+100002000030000200001
1N/A+11111111111:+9:+99999999999
1N/A+22222222222:+9:+199999999998
1N/A+33333333333:+9:+299999999997
1N/A+44444444444:+9:+399999999996
1N/A+55555555555:+9:+499999999995
1N/A+66666666666:+9:+599999999994
1N/A+77777777777:+9:+699999999993
1N/A+88888888888:+9:+799999999992
1N/A+99999999999:+9:+899999999991
1N/A&bdiv
1N/Aabc:abc:NaN
1N/Aabc:+1:abc:NaN
1N/A+1:abc:NaN
1N/A+0:+0:NaN
1N/A+0:+1:+0
1N/A+1:+0:NaN
1N/A+0:-1:+0
1N/A-1:+0:NaN
1N/A+1:+1:+1
1N/A-1:-1:+1
1N/A+1:-1:-1
1N/A-1:+1:-1
1N/A+1:+2:+0
1N/A+2:+1:+2
1N/A+1000000000:+9:+111111111
1N/A+2000000000:+9:+222222222
1N/A+3000000000:+9:+333333333
1N/A+4000000000:+9:+444444444
1N/A+5000000000:+9:+555555555
1N/A+6000000000:+9:+666666666
1N/A+7000000000:+9:+777777777
1N/A+8000000000:+9:+888888888
1N/A+9000000000:+9:+1000000000
1N/A+35500000:+113:+314159
1N/A+71000000:+226:+314159
1N/A+106500000:+339:+314159
1N/A+1000000000:+3:+333333333
1N/A+10:+5:+2
1N/A+100:+4:+25
1N/A+1000:+8:+125
1N/A+10000:+16:+625
1N/A+999999999999:+9:+111111111111
1N/A+999999999999:+99:+10101010101
1N/A+999999999999:+999:+1001001001
1N/A+999999999999:+9999:+100010001
1N/A+999999999999999:+99999:+10000100001
1N/A&bmod
1N/Aabc:abc:NaN
1N/Aabc:+1:abc:NaN
1N/A+1:abc:NaN
1N/A+0:+0:NaN
1N/A+0:+1:+0
1N/A+1:+0:NaN
1N/A+0:-1:+0
1N/A-1:+0:NaN
1N/A+1:+1:+0
1N/A-1:-1:+0
1N/A+1:-1:+0
1N/A-1:+1:+0
1N/A+1:+2:+1
1N/A+2:+1:+0
1N/A+1000000000:+9:+1
1N/A+2000000000:+9:+2
1N/A+3000000000:+9:+3
1N/A+4000000000:+9:+4
1N/A+5000000000:+9:+5
1N/A+6000000000:+9:+6
1N/A+7000000000:+9:+7
1N/A+8000000000:+9:+8
1N/A+9000000000:+9:+0
1N/A+35500000:+113:+33
1N/A+71000000:+226:+66
1N/A+106500000:+339:+99
1N/A+1000000000:+3:+1
1N/A+10:+5:+0
1N/A+100:+4:+0
1N/A+1000:+8:+0
1N/A+10000:+16:+0
1N/A+999999999999:+9:+0
1N/A+999999999999:+99:+0
1N/A+999999999999:+999:+0
1N/A+999999999999:+9999:+0
1N/A+999999999999999:+99999:+0
1N/A&bgcd
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:+0
1N/A+0:+1:+1
1N/A+1:+0:+1
1N/A+1:+1:+1
1N/A+2:+3:+1
1N/A+3:+2:+1
1N/A+100:+625:+25
1N/A+4096:+81:+1