|
Packit |
5c3484 |
# GMP mpq module.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
# Copyright 2001 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::Mpq;
|
|
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(canonicalize den inv mpq num)],
|
|
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_pow, '**=' => \&overload_poweq,
|
|
Packit |
5c3484 |
'<<' => \&overload_lshift, '<<=' => \&overload_lshifteq,
|
|
Packit |
5c3484 |
'>>' => \&overload_rshift, '>>=' => \&overload_rshifteq,
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
'bool' => \&overload_bool,
|
|
Packit |
5c3484 |
'not' => \&overload_not,
|
|
Packit |
5c3484 |
'!' => \&overload_not,
|
|
Packit |
5c3484 |
'==' => \&overload_eq,
|
|
Packit |
5c3484 |
'!=' => \&overload_ne,
|
|
Packit |
5c3484 |
'<=>' => \&overload_spaceship,
|
|
Packit |
5c3484 |
'++' => \&overload_inc,
|
|
Packit |
5c3484 |
'--' => \&overload_dec,
|
|
Packit |
5c3484 |
'abs' => \&overload_abs,
|
|
Packit |
5c3484 |
'neg' => \&overload_neg,
|
|
Packit |
5c3484 |
'=' => \&overload_copy,
|
|
Packit |
5c3484 |
'""' => \&overload_string;
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
my $constants = { };
|
|
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:
|