⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigintpm.t

📁 UNIX下perl实现代码
💻 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 + -