Blame demos/perl/GMP/Mpz.pm

Packit 5c3484
# GMP mpz module.
Packit 5c3484
Packit 5c3484
# Copyright 2001-2003 Free Software Foundation, Inc.
Packit 5c3484
#
Packit 5c3484
#  This file is part of the GNU MP Library.
Packit 5c3484
#
Packit 5c3484
#  The GNU MP Library is free software; you can redistribute it and/or modify
Packit 5c3484
#  it under the terms of either:
Packit 5c3484
#
Packit 5c3484
#    * the GNU Lesser General Public License as published by the Free
Packit 5c3484
#      Software Foundation; either version 3 of the License, or (at your
Packit 5c3484
#      option) any later version.
Packit 5c3484
#
Packit 5c3484
#  or
Packit 5c3484
#
Packit 5c3484
#    * the GNU General Public License as published by the Free Software
Packit 5c3484
#      Foundation; either version 2 of the License, or (at your option) any
Packit 5c3484
#      later version.
Packit 5c3484
#
Packit 5c3484
#  or both in parallel, as here.
Packit 5c3484
#
Packit 5c3484
#  The GNU MP Library is distributed in the hope that it will be useful, but
Packit 5c3484
#  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit 5c3484
#  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit 5c3484
#  for more details.
Packit 5c3484
#
Packit 5c3484
#  You should have received copies of the GNU General Public License and the
Packit 5c3484
#  GNU Lesser General Public License along with the GNU MP Library.  If not,
Packit 5c3484
#  see https://www.gnu.org/licenses/.
Packit 5c3484
Packit 5c3484
Packit 5c3484
package GMP::Mpz;
Packit 5c3484
Packit 5c3484
require GMP;
Packit 5c3484
require Exporter;
Packit 5c3484
@ISA = qw(GMP Exporter);
Packit 5c3484
@EXPORT = qw();
Packit 5c3484
@EXPORT_OK = qw();
Packit 5c3484
%EXPORT_TAGS = ('all' => [qw(
Packit 5c3484
			     bin cdiv cdiv_2exp clrbit combit congruent_p
Packit 5c3484
			     congruent_2exp_p divexact divisible_p
Packit 5c3484
			     divisible_2exp_p even_p fac fdiv fdiv_2exp fib
Packit 5c3484
			     fib2 gcd gcdext hamdist invert jacobi kronecker
Packit 5c3484
			     lcm lucnum lucnum2 mod mpz mpz_export
Packit 5c3484
			     mpz_import nextprime odd_p perfect_power_p
Packit 5c3484
			     perfect_square_p popcount powm probab_prime_p
Packit 5c3484
			     realloc remove root roote rootrem scan0 scan1
Packit 5c3484
			     setbit sizeinbase sqrtrem tdiv tdiv_2exp
Packit 5c3484
			     tstbit)],
Packit 5c3484
		'constants'   => [@EXPORT],
Packit 5c3484
		'noconstants' => [@EXPORT]);
Packit 5c3484
Exporter::export_ok_tags('all');
Packit 5c3484
Packit 5c3484
use overload
Packit 5c3484
    '+'    => \&overload_add,     '+='   => \&overload_addeq,
Packit 5c3484
    '-'    => \&overload_sub,     '-='   => \&overload_subeq,
Packit 5c3484
    '*'    => \&overload_mul,     '*='   => \&overload_muleq,
Packit 5c3484
    '/'    => \&overload_div,     '/='   => \&overload_diveq,
Packit 5c3484
    '%'    => \&overload_rem,     '%='   => \&overload_remeq,
Packit 5c3484
    '<<'   => \&overload_lshift,  '<<='  => \&overload_lshifteq,
Packit 5c3484
    '>>'   => \&overload_rshift,  '>>='  => \&overload_rshifteq,
Packit 5c3484
    '**'   => \&overload_pow,     '**='  => \&overload_poweq,
Packit 5c3484
    '&'    => \&overload_and,     '&='   => \&overload_andeq,
Packit 5c3484
    '|'    => \&overload_ior,     '|='   => \&overload_ioreq,
Packit 5c3484
    '^'    => \&overload_xor,     '^='   => \&overload_xoreq,
Packit 5c3484
Packit 5c3484
    'bool' => \&overload_bool,
Packit 5c3484
    'not'  => \&overload_not,
Packit 5c3484
    '!'    => \&overload_not,
Packit 5c3484
    '~'    => \&overload_com,
Packit 5c3484
    '<=>'  => \&overload_spaceship,
Packit 5c3484
    '++'   => \&overload_inc,
Packit 5c3484
    '--'   => \&overload_dec,
Packit 5c3484
    '='    => \&overload_copy,
Packit 5c3484
    'abs'  => \&overload_abs,
Packit 5c3484
    'neg'  => \&overload_neg,
Packit 5c3484
    'sqrt' => \&overload_sqrt,
Packit 5c3484
    '""'   => \&overload_string;
Packit 5c3484
Packit 5c3484
sub import {
Packit 5c3484
  foreach (@_) {
Packit 5c3484
    if ($_ eq ':constants') {
Packit 5c3484
      overload::constant ('integer' => \&overload_constant,
Packit 5c3484
			  'binary'  => \&overload_constant,
Packit 5c3484
			  'float'   => \&overload_constant);
Packit 5c3484
    } elsif ($_ eq ':noconstants') {
Packit 5c3484
      overload::remove_constant ('integer' => \&overload_constant,
Packit 5c3484
				 'binary'  => \&overload_constant,
Packit 5c3484
				 'float'   => \&overload_constant);
Packit 5c3484
    }
Packit 5c3484
  }
Packit 5c3484
  goto &Exporter::import;
Packit 5c3484
}
Packit 5c3484
Packit 5c3484
1;
Packit 5c3484
__END__
Packit 5c3484
Packit 5c3484
Packit 5c3484
# Local variables:
Packit 5c3484
# perl-indent-level: 2
Packit 5c3484
# End: