Mpq.pm
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:2k
- # GMP mpq module.
- # Copyright 2001 Free Software Foundation, Inc.
- #
- # This file is part of the GNU MP Library.
- #
- # The GNU MP Library is free software; you can redistribute it and/or modify
- # it under the terms of the GNU Lesser General Public License as published
- # by the Free Software Foundation; either version 3 of the License, or (at
- # your option) any later version.
- #
- # The GNU MP Library is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- # License for more details.
- #
- # You should have received a copy of the GNU Lesser General Public License
- # along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
- package GMP::Mpq;
- require GMP;
- require Exporter;
- @ISA = qw(GMP Exporter);
- @EXPORT = qw();
- @EXPORT_OK = qw();
- %EXPORT_TAGS = ('all' => [qw(canonicalize den inv mpq num)],
- 'constants' => [@EXPORT],
- 'noconstants' => [@EXPORT] );
- Exporter::export_ok_tags('all');
- use overload
- '+' => &overload_add, '+=' => &overload_addeq,
- '-' => &overload_sub, '-=' => &overload_subeq,
- '*' => &overload_mul, '*=' => &overload_muleq,
- '/' => &overload_div, '/=' => &overload_diveq,
- '**' => &overload_pow, '**=' => &overload_poweq,
- '<<' => &overload_lshift, '<<=' => &overload_lshifteq,
- '>>' => &overload_rshift, '>>=' => &overload_rshifteq,
- 'bool' => &overload_bool,
- 'not' => &overload_not,
- '!' => &overload_not,
- '==' => &overload_eq,
- '!=' => &overload_ne,
- '<=>' => &overload_spaceship,
- '++' => &overload_inc,
- '--' => &overload_dec,
- 'abs' => &overload_abs,
- 'neg' => &overload_neg,
- '=' => &overload_copy,
- '""' => &overload_string;
- my $constants = { };
- sub import {
- foreach (@_) {
- if ($_ eq ':constants') {
- overload::constant ('integer' => &overload_constant,
- 'binary' => &overload_constant,
- 'float' => &overload_constant);
- } elsif ($_ eq ':noconstants') {
- overload::remove_constant ('integer' => &overload_constant,
- 'binary' => &overload_constant,
- 'float' => &overload_constant);
- }
- }
- goto &Exporter::import;
- }
- 1;
- __END__
- # Local variables:
- # perl-indent-level: 2
- # End: