Mpz.pm
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:3k
源码类别:

数学计算

开发平台:

Unix_Linux

  1. # GMP mpz module.
  2. # Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
  3. #
  4. # This file is part of the GNU MP Library.
  5. #
  6. # The GNU MP Library is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU Lesser General Public License as published
  8. # by the Free Software Foundation; either version 3 of the License, or (at
  9. # your option) any later version.
  10. #
  11. # The GNU MP Library is distributed in the hope that it will be useful, but
  12. # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  13. # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
  14. # License for more details.
  15. #
  16. # You should have received a copy of the GNU Lesser General Public License
  17. # along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
  18. package GMP::Mpz;
  19. require GMP;
  20. require Exporter;
  21. @ISA = qw(GMP Exporter);
  22. @EXPORT = qw();
  23. @EXPORT_OK = qw();
  24. %EXPORT_TAGS = ('all' => [qw(
  25.      bin cdiv cdiv_2exp clrbit combit congruent_p
  26.      congruent_2exp_p divexact divisible_p
  27.      divisible_2exp_p even_p fac fdiv fdiv_2exp fib
  28.      fib2 gcd gcdext hamdist invert jacobi kronecker
  29.      lcm lucnum lucnum2 mod mpz mpz_export
  30.      mpz_import nextprime odd_p perfect_power_p
  31.      perfect_square_p popcount powm probab_prime_p
  32.      realloc remove root roote rootrem scan0 scan1
  33.      setbit sizeinbase sqrtrem tdiv tdiv_2exp
  34.      tstbit)],
  35. 'constants'   => [@EXPORT],
  36. 'noconstants' => [@EXPORT]);
  37. Exporter::export_ok_tags('all');
  38. use overload
  39.     '+'    => &overload_add,     '+='   => &overload_addeq,
  40.     '-'    => &overload_sub,     '-='   => &overload_subeq,
  41.     '*'    => &overload_mul,     '*='   => &overload_muleq,
  42.     '/'    => &overload_div,     '/='   => &overload_diveq,
  43.     '%'    => &overload_rem,     '%='   => &overload_remeq,
  44.     '<<'   => &overload_lshift,  '<<='  => &overload_lshifteq,
  45.     '>>'   => &overload_rshift,  '>>='  => &overload_rshifteq,
  46.     '**'   => &overload_pow,     '**='  => &overload_poweq,
  47.     '&'    => &overload_and,     '&='   => &overload_andeq,
  48.     '|'    => &overload_ior,     '|='   => &overload_ioreq,
  49.     '^'    => &overload_xor,     '^='   => &overload_xoreq,
  50.     'bool' => &overload_bool,
  51.     'not'  => &overload_not,
  52.     '!'    => &overload_not,
  53.     '~'    => &overload_com,
  54.     '<=>'  => &overload_spaceship,
  55.     '++'   => &overload_inc,
  56.     '--'   => &overload_dec,
  57.     '='    => &overload_copy,
  58.     'abs'  => &overload_abs,
  59.     'neg'  => &overload_neg,
  60.     'sqrt' => &overload_sqrt,
  61.     '""'   => &overload_string;
  62. sub import {
  63.   foreach (@_) {
  64.     if ($_ eq ':constants') {
  65.       overload::constant ('integer' => &overload_constant,
  66.   'binary'  => &overload_constant,
  67.   'float'   => &overload_constant);
  68.     } elsif ($_ eq ':noconstants') {
  69.       overload::remove_constant ('integer' => &overload_constant,
  70.  'binary'  => &overload_constant,
  71.  'float'   => &overload_constant);
  72.     }
  73.   }
  74.   goto &Exporter::import;
  75. }
  76. 1;
  77. __END__
  78. # Local variables:
  79. # perl-indent-level: 2
  80. # End: