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