📄 test.pl
字号:
ok ($a == 2); ok ($b == 3); ok (tied($a));}{ my $b = 3; tie my $a, 'Mytie', $b; clrbit ($a, 0); ok ($a == 2); ok ($b == 3); ok (tied($a));}#------------------------------------------------------------------------------# GMP::Mpz::congruent_pok ( congruent_p (21, 0, 7));ok (! congruent_p (21, 1, 7));ok ( congruent_p (21, 5, 8));ok (! congruent_p (21, 6, 8));#------------------------------------------------------------------------------# GMP::Mpz::congruent_2exp_pok ( congruent_2exp_p (20, 0, 2));ok (! congruent_2exp_p (21, 0, 2));ok (! congruent_2exp_p (20, 1, 2));#------------------------------------------------------------------------------# GMP::Mpz::divexactok (divexact(27,3) == 9);ok (divexact(27,-3) == -9);ok (divexact(-27,3) == -9);ok (divexact(-27,-3) == 9);#------------------------------------------------------------------------------# GMP::Mpz::divisible_pok ( divisible_p (21, 7));ok (! divisible_p (21, 8));#------------------------------------------------------------------------------# GMP::Mpz::divisible_2exp_pok ( divisible_2exp_p (20, 2));ok (! divisible_2exp_p (21, 2));#------------------------------------------------------------------------------# GMP::Mpz::even_pok (! even_p(mpz(-3)));ok ( even_p(mpz(-2)));ok (! even_p(mpz(-1)));ok ( even_p(mpz(0)));ok (! even_p(mpz(1)));ok ( even_p(mpz(2)));ok (! even_p(mpz(3)));#------------------------------------------------------------------------------# GMP::Mpz::export{ my $s = mpz_export (1, 2, 1, 0, "0x61626364"); ok ($s eq 'abcd'); }{ my $s = mpz_export (-1, 2, 1, 0, "0x61626364"); ok ($s eq 'cdab'); }{ my $s = mpz_export (1, 2, -1, 0, "0x61626364"); ok ($s eq 'badc'); }{ my $s = mpz_export (-1, 2, -1, 0, "0x61626364"); ok ($s eq 'dcba'); }#------------------------------------------------------------------------------# GMP::Mpz::facok (fac(0) == 1);ok (fac(1) == 1);ok (fac(2) == 2);ok (fac(3) == 6);ok (fac(4) == 24);ok (fac(5) == 120);#------------------------------------------------------------------------------# GMP::Mpz::fdiv{ my ($q, $r); ($q, $r) = fdiv (16, 3); ok ($q == 5); ok ($r == 1); ($q, $r) = fdiv (16, -3); ok ($q == -6); ok ($r == -2); ($q, $r) = fdiv (-16, 3); ok ($q == -6); ok ($r == 2); ($q, $r) = fdiv (-16, -3); ok ($q == 5); ok ($r == -1);}#------------------------------------------------------------------------------# GMP::Mpz::fdiv_2exp{ my ($q, $r); ($q, $r) = fdiv_2exp (23, 2); ok ($q == 5); ok ($r == 3); ($q, $r) = fdiv_2exp (-23, 2); ok ($q == -6); ok ($r == 1);}#------------------------------------------------------------------------------# GMP::Mpz::fibok (fib(0) == 0);ok (fib(1) == 1);ok (fib(2) == 1);ok (fib(3) == 2);ok (fib(4) == 3);ok (fib(5) == 5);ok (fib(6) == 8);#------------------------------------------------------------------------------# GMP::Mpz::fib2{ my ($a, $b) = fib2(0); ok($a==0); ok($b==1); }{ my ($a, $b) = fib2(1); ok($a==1); ok($b==0); }{ my ($a, $b) = fib2(2); ok($a==1); ok($b==1); }{ my ($a, $b) = fib2(3); ok($a==2); ok($b==1); }{ my ($a, $b) = fib2(4); ok($a==3); ok($b==2); }{ my ($a, $b) = fib2(5); ok($a==5); ok($b==3); }{ my ($a, $b) = fib2(6); ok($a==8); ok($b==5); }#------------------------------------------------------------------------------# GMP::Mpz::gcdok (gcd (21) == 21);ok (gcd (21,15) == 3);ok (gcd (21,15,30,57) == 3);ok (gcd (21,-15) == 3);ok (gcd (-21,15) == 3);ok (gcd (-21,-15) == 3);#------------------------------------------------------------------------------# GMP::Mpz::gcdext{ my ($g, $x, $y) = gcdext (3,5); ok ($g == 1); ok ($x == 2); ok ($y == -1);}#------------------------------------------------------------------------------# GMP::Mpz::hamdistok (hamdist(5,7) == 1);#------------------------------------------------------------------------------# GMP::Mpz::import{ my $z = mpz_import (1, 2, 1, 0, 'abcd'); ok ($z == 0x61626364); }{ my $z = mpz_import (-1, 2, 1, 0, 'abcd'); ok ($z == 0x63646162); }{ my $z = mpz_import (1, 2, -1, 0, 'abcd'); ok ($z == 0x62616463); }{ my $z = mpz_import (-1, 2, -1, 0, 'abcd'); ok ($z == 0x64636261); }#------------------------------------------------------------------------------# GMP::Mpz::invertok (invert(1,123) == 1);ok (invert(6,7) == 6);ok (! defined invert(2,8));#------------------------------------------------------------------------------# GMP::Mpz::jacobi, GMP::Mpz::kroneckerforeach my $i ([ 1, 19, 1 ], [ 4, 19, 1 ], [ 5, 19, 1 ], [ 6, 19, 1 ], [ 7, 19, 1 ], [ 9, 19, 1 ], [ 11, 19, 1 ], [ 16, 19, 1 ], [ 17, 19, 1 ], [ 2, 19, -1 ], [ 3, 19, -1 ], [ 8, 19, -1 ], [ 10, 19, -1 ], [ 12, 19, -1 ], [ 13, 19, -1 ], [ 14, 19, -1 ], [ 15, 19, -1 ], [ 18, 19, -1 ]) { foreach my $fun (\&jacobi, \&kronecker) { ok (&$fun ($$i[0], $$i[1]) == $$i[2]); ok (&$fun ($$i[0], str($$i[1])) == $$i[2]); ok (&$fun (str($$i[0]), $$i[1]) == $$i[2]); ok (&$fun (str($$i[0]), str($$i[1])) == $$i[2]); ok (&$fun ($$i[0], mpz($$i[1])) == $$i[2]); ok (&$fun (mpz($$i[0]), $$i[1]) == $$i[2]); ok (&$fun (mpz($$i[0]), mpz($$i[1])) == $$i[2]); }} #------------------------------------------------------------------------------# GMP::Mpz::lcmok (lcm (2) == 2);ok (lcm (0) == 0);ok (lcm (0,0) == 0);ok (lcm (0,0,0) == 0);ok (lcm (0,0,0,0) == 0);ok (lcm (2,0) == 0);ok (lcm (-2,0) == 0);ok (lcm (2,3) == 6);ok (lcm (2,3,4) == 12);ok (lcm (2,-3) == 6);ok (lcm (-2,3) == 6);ok (lcm (-2,-3) == 6);ok (lcm (mpz(2)**512,1) == mpz(2)**512);ok (lcm (mpz(2)**512,-1) == mpz(2)**512);ok (lcm (-mpz(2)**512,1) == mpz(2)**512);ok (lcm (-mpz(2)**512,-1) == mpz(2)**512);ok (lcm (mpz(2)**512,mpz(2)**512) == mpz(2)**512);ok (lcm (mpz(2)**512,-mpz(2)**512) == mpz(2)**512);ok (lcm (-mpz(2)**512,mpz(2)**512) == mpz(2)**512);ok (lcm (-mpz(2)**512,-mpz(2)**512) == mpz(2)**512);#------------------------------------------------------------------------------# GMP::Mpz::lucnumok (lucnum(0) == 2);ok (lucnum(1) == 1);ok (lucnum(2) == 3);ok (lucnum(3) == 4);ok (lucnum(4) == 7);ok (lucnum(5) == 11);ok (lucnum(6) == 18);#------------------------------------------------------------------------------# GMP::Mpz::lucnum2{ my ($a, $b) = lucnum2(0); ok($a==2); ok($b==-1); }{ my ($a, $b) = lucnum2(1); ok($a==1); ok($b==2); }{ my ($a, $b) = lucnum2(2); ok($a==3); ok($b==1); }{ my ($a, $b) = lucnum2(3); ok($a==4); ok($b==3); }{ my ($a, $b) = lucnum2(4); ok($a==7); ok($b==4); }{ my ($a, $b) = lucnum2(5); ok($a==11); ok($b==7); }{ my ($a, $b) = lucnum2(6); ok($a==18); ok($b==11); }#------------------------------------------------------------------------------# GMP::Mpz::nextprimeok (nextprime(2) == 3);ok (nextprime(3) == 5);ok (nextprime(5) == 7);ok (nextprime(7) == 11);ok (nextprime(11) == 13);#------------------------------------------------------------------------------# GMP::Mpz::perfect_power_p# ok ( perfect_power_p(mpz(-27)));# ok (! perfect_power_p(mpz(-9)));# ok (! perfect_power_p(mpz(-1)));ok ( perfect_power_p(mpz(0)));ok ( perfect_power_p(mpz(1)));ok (! perfect_power_p(mpz(2)));ok (! perfect_power_p(mpz(3)));ok ( perfect_power_p(mpz(4)));ok ( perfect_power_p(mpz(9)));ok ( perfect_power_p(mpz(27)));ok ( perfect_power_p(mpz(81)));#------------------------------------------------------------------------------# GMP::Mpz::perfect_square_pok (! perfect_square_p(mpz(-9)));ok (! perfect_square_p(mpz(-1)));ok ( perfect_square_p(mpz(0)));ok ( perfect_square_p(mpz(1)));ok (! perfect_square_p(mpz(2)));ok (! perfect_square_p(mpz(3)));ok ( perfect_square_p(mpz(4)));ok ( perfect_square_p(mpz(9)));ok (! perfect_square_p(mpz(27)));ok ( perfect_square_p(mpz(81)));#------------------------------------------------------------------------------# GMP::Mpz::popcountok (popcount(7) == 3);#------------------------------------------------------------------------------# GMP::Mpz::powmok (powm (3,2,8) == 1);#------------------------------------------------------------------------------# GMP::Mpz::probab_prime_pok ( probab_prime_p(89,1));ok (! probab_prime_p(81,1));#------------------------------------------------------------------------------# GMP::Mpz::realloc{ my $z = mpz(123); realloc ($z, 512); }#------------------------------------------------------------------------------# GMP::Mpz::remove{ my ($rem, $mult); ($rem, $mult) = remove(12,3); ok ($rem == 4); ok ($mult == 1); ($rem, $mult) = remove(12,2); ok ($rem == 3); ok ($mult == 2);}#------------------------------------------------------------------------------# GMP::Mpz::rootok (root(0,2) == 0);ok (root(8,3) == 2);ok (root(-8,3) == -2);ok (root(81,4) == 3);ok (root(243,5) == 3);#------------------------------------------------------------------------------# GMP::Mpz::roote{ my ($r,$e); ($r, $e) = roote(0,2); ok ($r == 0); ok ($e); ($r, $e) = roote(81,4); ok ($r == 3); ok ($e); ($r, $e) = roote(85,4); ok ($r == 3); ok (! $e);}#------------------------------------------------------------------------------# GMP::Mpz::scan0ok (scan0 (0, 0) == 0);ok (scan0 (1, 0) == 1);ok (scan0 (3, 0) == 2);ok (scan0 (-1, 0) == ~0);ok (scan0 (-2, 1) == ~0);#------------------------------------------------------------------------------# GMP::Mpz::scan1ok (scan1 (1, 0) == 0);ok (scan1 (2, 0) == 1);ok (scan1 (4, 0) == 2);ok (scan1 (0, 0) == ~0);ok (scan1 (3, 2) == ~0);#------------------------------------------------------------------------------# GMP::Mpz::setbit{ my $a = mpz(3); setbit ($a, 1); ok ($a == 3); }{ my $a = mpz(3); setbit ($a, 2); ok ($a == 7); }{ my $a = 3; setbit ($a, 1); ok ($a == 3); }{ my $a = 3; setbit ($a, 2); ok ($a == 7); }# mutate only given variable{ my $a = mpz(0); my $b = $a; setbit ($a, 0); ok ($a == 1); ok ($b == 0);}{ my $a = 0; my $b = $a; setbit ($a, 0); ok ($a == 1); ok ($b == 0);}{ tie my $a, 'Mytie', mpz(3); setbit ($a, 2); ok ($Mytie::fetched > 0); # used fetch ok ($Mytie::stored > 0); # used store ok ($a == 7); # expected result ok (UNIVERSAL::isa($a,"GMP::Mpz")); ok (tied($a)); # still tied}{ tie my $a, 'Mytie', 3; setbit ($a, 2); ok ($Mytie::fetched > 0); # used fetch ok ($Mytie::stored > 0); # used store ok ($a == 7); # expected result ok (UNIVERSAL::isa($a,"GMP::Mpz")); ok (tied($a)); # still tied}{ my $b = mpz(2); tie my $a, 'Mytie', $b; setbit ($a, 0); ok ($a == 3); ok ($b == 2); ok (tied($a));}{ my $b = 2; tie my $a, 'Mytie', $b; setbit ($a, 0); ok ($a == 3); ok ($b == 2); ok (tied($a));}#------------------------------------------------------------------------------# GMP::Mpz::sizeinbaseok (sizeinbase(1,10) == 1);ok (sizeinbase(100,10) == 3);ok (sizeinbase(9999,10) == 5);#------------------------------------------------------------------------------# GMP::Mpz::sqrtrem{ my ($root, $rem) = sqrtrem(mpz(0)); ok ($root == 0); ok ($rem == 0);}{ my ($root, $rem) = sqrtrem(mpz(1)); ok ($root == 1); ok ($rem == 0);}{ my ($root, $rem) = sqrtrem(mpz(2)); ok ($root == 1); ok ($rem == 1);}{ my ($root, $rem) = sqrtrem(mpz(9)); ok ($root == 3); ok ($rem == 0);}{ my ($root, $rem) = sqrtrem(mpz(35)); ok ($root == 5); ok ($rem == 10);}{ my ($root, $rem) = sqrtrem(mpz(0)); ok ($root == 0); ok ($rem == 0);}#------------------------------------------------------------------------------# GMP::Mpz::tdiv{ my ($q, $r); ($q, $r) = tdiv (16, 3); ok ($q == 5); ok ($r == 1); ($q, $r) = tdiv (16, -3); ok ($q == -5); ok ($r == 1); ($q, $r) = tdiv (-16, 3); ok ($q == -5); ok ($r == -1); ($q, $r) = tdiv (-16, -3); ok ($q == 5); ok ($r == -1);}#------------------------------------------------------------------------------# GMP::Mpz::tdiv_2exp{ my ($q, $r); ($q, $r) = tdiv_2exp (23, 2); ok ($q == 5); ok ($r == 3); ($q, $r) = tdiv_2exp (-23, 2); ok ($q == -5); ok ($r == -3);}#------------------------------------------------------------------------------# GMP::Mpz::tstbitok (tstbit (6, 0) == 0);ok (tstbit (6, 1) == 1);ok (tstbit (6, 2) == 1);ok (tstbit (6, 3) == 0);#------------------------------------------------------------------------------# GMP::Mpq#------------------------------------------------------------------------------# GMP::Mpq::newok (mpq(0) == 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -