📄 bigintpm.t
字号:
#!./perlBEGIN { chdir 't' if -d 't'; @INC = '../lib';}use Math::BigInt;$test = 0;$| = 1;print "1..278\n";while (<DATA>) { chop; if (s/^&//) { $f = $_; } else { ++$test; @args = split(/:/,$_,99); $ans = pop(@args); $try = "\$x = new Math::BigInt \"$args[0]\";"; if ($f eq "bnorm"){ $try .= "\$x+0;"; } elsif ($f eq "bneg") { $try .= "-\$x;"; } elsif ($f eq "babs") { $try .= "abs \$x;"; } else { $try .= "\$y = new Math::BigInt \"$args[1]\";"; if ($f eq "bcmp"){ $try .= "\$x <=> \$y;"; }elsif ($f eq "badd"){ $try .= "\$x + \$y;"; }elsif ($f eq "bsub"){ $try .= "\$x - \$y;"; }elsif ($f eq "bmul"){ $try .= "\$x * \$y;"; }elsif ($f eq "bdiv"){ $try .= "\$x / \$y;"; }elsif ($f eq "bmod"){ $try .= "\$x % \$y;"; }elsif ($f eq "bgcd"){ $try .= "Math::BigInt::bgcd(\$x, \$y);"; }elsif ($f eq "blsft"){ $try .= "\$x << \$y;"; }elsif ($f eq "brsft"){ $try .= "\$x >> \$y;"; }elsif ($f eq "band"){ $try .= "\$x & \$y;"; }elsif ($f eq "bior"){ $try .= "\$x | \$y;"; }elsif ($f eq "bxor"){ $try .= "\$x ^ \$y;"; }elsif ($f eq "bnot"){ $try .= "~\$x;"; } else { warn "Unknown op"; } } #print ">>>",$try,"<<<\n"; $ans1 = eval $try; if ("$ans1" eq $ans) { #bug! print "ok $test\n"; } else { print "not ok $test\n"; print "# '$try' expected: '$ans' got: '$ans1'\n"; } }}{ use Math::BigInt ':constant'; $test++; print "not " unless 2**150 eq "+1427247692705959881058285969449495136382746624"; print "ok $test\n"; $test++; @a = (); for ($i = 1; $i < 10; $i++) { push @a, $i; } print "not " unless "@a" eq "+1 +2 +3 +4 +5 +6 +7 +8 +9"; print "ok $test\n";} __END__&bnormabc:NaN 1 a:NaN1bcd2:NaN11111b:NaN+1z:NaN-1z:NaN0:+0+0:+0+00:+0+0 0 0:+0000000 0000000 00000:+0-0:+0-0000:+0+1:+1+01:+1+001:+1+00000100000:+100000123456789:+123456789-1:-1-01:-1-001:-1-123456789:-123456789-00000100000:-100000&bnegabd:NaN+0:+0+1:-1-1:+1+123456789:-123456789-123456789:+123456789&babsabc:NaN+0:+0+1:+1-1:+1+123456789:+123456789-123456789:+123456789&bcmpabc:abc:abc:+0:+0:abc:+0:+0:0-1:+0:-1+0:-1:1+1:+0:1+0:+1:-1-1:+1:-1+1:-1:1-1:-1:0+1:+1:0+123:+123:0+123:+12:1+12:+123:-1-123:-123:0-123:-12:-1-12:-123:1+123:+124:-1+124:+123:1-123:-124:1-124:-123:-1+100:+5:1&baddabc:abc:NaNabc:+0:NaN+0:abc:NaN+0:+0:+0+1:+0:+1+0:+1:+1+1:+1:+2-1:+0:-1+0:-1:-1-1:-1:-2-1:+1:+0+1:-1:+0+9:+1:+10+99:+1:+100+999:+1:+1000+9999:+1:+10000+99999:+1:+100000+999999:+1:+1000000+9999999:+1:+10000000+99999999:+1:+100000000+999999999:+1:+1000000000+9999999999:+1:+10000000000+99999999999:+1:+100000000000+10:-1:+9+100:-1:+99+1000:-1:+999+10000:-1:+9999+100000:-1:+99999+1000000:-1:+999999+10000000:-1:+9999999+100000000:-1:+99999999+1000000000:-1:+999999999+10000000000:-1:+9999999999+123456789:+987654321:+1111111110-123456789:+987654321:+864197532-123456789:-987654321:-1111111110+123456789:-987654321:-864197532&bsubabc:abc:NaNabc:+0:NaN+0:abc:NaN+0:+0:+0+1:+0:+1+0:+1:-1+1:+1:+0-1:+0:-1+0:-1:+1-1:-1:+0-1:+1:-2+1:-1:+2+9:+1:+8+99:+1:+98+999:+1:+998+9999:+1:+9998+99999:+1:+99998+999999:+1:+999998+9999999:+1:+9999998+99999999:+1:+99999998+999999999:+1:+999999998+9999999999:+1:+9999999998+99999999999:+1:+99999999998+10:-1:+11+100:-1:+101+1000:-1:+1001+10000:-1:+10001+100000:-1:+100001+1000000:-1:+1000001+10000000:-1:+10000001+100000000:-1:+100000001+1000000000:-1:+1000000001+10000000000:-1:+10000000001+123456789:+987654321:-864197532-123456789:+987654321:-1111111110-123456789:-987654321:+864197532+123456789:-987654321:+1111111110&bmulabc:abc:NaNabc:+0:NaN+0:abc:NaN+0:+0:+0+0:+1:+0+1:+0:+0+0:-1:+0-1:+0:+0+123456789123456789:+0:+0+0:+123456789123456789:+0-1:-1:+1-1:+1:-1+1:-1:-1+1:+1:+1+2:+3:+6-2:+3:-6+2:-3:-6-2:-3:+6+111:+111:+12321+10101:+10101:+102030201+1001001:+1001001:+1002003002001+100010001:+100010001:+10002000300020001+10000100001:+10000100001:+100002000030000200001+11111111111:+9:+99999999999+22222222222:+9:+199999999998+33333333333:+9:+299999999997+44444444444:+9:+399999999996+55555555555:+9:+499999999995+66666666666:+9:+599999999994+77777777777:+9:+699999999993+88888888888:+9:+799999999992+99999999999:+9:+899999999991&bdivabc:abc:NaNabc:+1:abc:NaN+1:abc:NaN+0:+0:NaN+0:+1:+0+1:+0:NaN+0:-1:+0-1:+0:NaN+1:+1:+1-1:-1:+1+1:-1:-1-1:+1:-1+1:+2:+0+2:+1:+2+1000000000:+9:+111111111+2000000000:+9:+222222222+3000000000:+9:+333333333+4000000000:+9:+444444444+5000000000:+9:+555555555+6000000000:+9:+666666666+7000000000:+9:+777777777+8000000000:+9:+888888888+9000000000:+9:+1000000000+35500000:+113:+314159+71000000:+226:+314159+106500000:+339:+314159+1000000000:+3:+333333333+10:+5:+2+100:+4:+25+1000:+8:+125+10000:+16:+625+999999999999:+9:+111111111111+999999999999:+99:+10101010101+999999999999:+999:+1001001001+999999999999:+9999:+100010001+999999999999999:+99999:+10000100001&bmodabc:abc:NaNabc:+1:abc:NaN+1:abc:NaN+0:+0:NaN+0:+1:+0+1:+0:NaN+0:-1:+0-1:+0:NaN+1:+1:+0-1:-1:+0+1:-1:+0-1:+1:+0+1:+2:+1+2:+1:+0+1000000000:+9:+1+2000000000:+9:+2+3000000000:+9:+3+4000000000:+9:+4+5000000000:+9:+5+6000000000:+9:+6+7000000000:+9:+7+8000000000:+9:+8+9000000000:+9:+0+35500000:+113:+33+71000000:+226:+66+106500000:+339:+99+1000000000:+3:+1+10:+5:+0+100:+4:+0+1000:+8:+0+10000:+16:+0+999999999999:+9:+0+999999999999:+99:+0+999999999999:+999:+0+999999999999:+9999:+0+999999999999999:+99999:+0&bgcdabc:abc:NaNabc:+0:NaN+0:abc:NaN+0:+0:+0+0:+1:+1+1:+0:+1+1:+1:+1+2:+3:+1+3:+2:+1+100:+625:+25+4096:+81:+1&blsftabc:abc:NaN+2:+2:+8+1:+32:+4294967296+1:+48:+281474976710656+8:-2:NaN&brsftabc:abc:NaN+8:+2:+2+4294967296:+32:+1+281474976710656:+48:+1+2:-2:NaN&bandabc:abc:NaN+8:+2:+0+281474976710656:+0:+0+281474976710656:+1:+0+281474976710656:+281474976710656:+281474976710656&biorabc:abc:NaN+8:+2:+10+281474976710656:+0:+281474976710656+281474976710656:+1:+281474976710657+281474976710656:+281474976710656:+281474976710656&bxorabc:abc:NaN+8:+2:+10+281474976710656:+0:+281474976710656+281474976710656:+1:+281474976710657+281474976710656:+281474976710656:+0&bnotabc:NaN+0:-1+8:-9+281474976710656:-281474976710657
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -