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