|
Packit |
dcde0c |
package Math::BigInt::FastCalc;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use 5.006;
|
|
Packit |
dcde0c |
use strict;
|
|
Packit |
dcde0c |
use warnings;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use Math::BigInt::Calc 1.999801;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
our @ISA = qw< Math::BigInt::Calc >;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
our $VERSION = '0.5006';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
##############################################################################
|
|
Packit |
dcde0c |
# global constants, flags and accessory
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# announce that we are compatible with MBI v1.83 and up
|
|
Packit |
dcde0c |
sub api_version () { 2; }
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# use Calc to override the methods that we do not provide in XS
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
require XSLoader;
|
|
Packit |
dcde0c |
XSLoader::load(__PACKAGE__, $VERSION, Math::BigInt::Calc->_base_len());
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
##############################################################################
|
|
Packit |
dcde0c |
##############################################################################
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
1;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
__END__
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=pod
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 NAME
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 SYNOPSIS
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# to use it with Math::BigInt
|
|
Packit |
dcde0c |
use Math::BigInt lib => 'FastCalc';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# to use it with Math::BigFloat
|
|
Packit |
dcde0c |
use Math::BigFloat lib => 'FastCalc';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# to use it with Math::BigRat
|
|
Packit |
dcde0c |
use Math::BigRat lib => 'FastCalc';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 DESCRIPTION
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Math::BigInt::FastCalc inherits from Math::BigInt::Calc.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Provides support for big integer calculations. Not intended to be used by
|
|
Packit |
dcde0c |
other modules. Other modules which sport the same functions can also be used
|
|
Packit |
dcde0c |
to support Math::BigInt, like L<Math::BigInt::GMP> or L<Math::BigInt::Pari>.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
In order to allow for multiple big integer libraries, Math::BigInt was
|
|
Packit |
dcde0c |
rewritten to use library modules for core math routines. Any module which
|
|
Packit |
dcde0c |
follows the same API as this can be used instead by using the following:
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use Math::BigInt lib => 'libname';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
'libname' is either the long name ('Math::BigInt::Pari'), or only the short
|
|
Packit |
dcde0c |
version like 'Pari'. To use this library:
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use Math::BigInt lib => 'FastCalc';
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 STORAGE
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Math::BigInt::FastCalc works exactly like Math::BigInt::Calc. Numbers are
|
|
Packit |
dcde0c |
stored in decimal form chopped into parts.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 METHODS
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
The following functions are now implemented in FastCalc.xs:
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
_is_odd _is_even _is_one _is_zero
|
|
Packit |
dcde0c |
_is_two _is_ten
|
|
Packit |
dcde0c |
_zero _one _two _ten
|
|
Packit |
dcde0c |
_acmp _len
|
|
Packit |
dcde0c |
_inc _dec
|
|
Packit |
dcde0c |
__strip_zeros _copy
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 BUGS
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Please report any bugs or feature requests to
|
|
Packit |
dcde0c |
C<bug-math-bigint-fastcalc at rt.cpan.org>, or through the web interface at
|
|
Packit |
dcde0c |
L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt-FastCalc>
|
|
Packit |
dcde0c |
(requires login).
|
|
Packit |
dcde0c |
We will be notified, and then you'll automatically be notified of progress on
|
|
Packit |
dcde0c |
your bug as I make changes.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 SUPPORT
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
You can find documentation for this module with the perldoc command.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
perldoc Math::BigInt::FastCalc
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
You can also look for information at:
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=over 4
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * RT: CPAN's request tracker
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt-FastCalc>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * AnnoCPAN: Annotated CPAN documentation
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://annocpan.org/dist/Math-BigInt-FastCalc>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * CPAN Ratings
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://cpanratings.perl.org/dist/Math-BigInt-FastCalc>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * Search CPAN
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://search.cpan.org/dist/Math-BigInt-FastCalc/>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * CPAN Testers Matrix
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://matrix.cpantesters.org/?dist=Math-BigInt-FastCalc>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * The Bignum mailing list
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=over 4
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * Post to mailing list
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
C<bignum at lists.scsys.co.uk>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * View mailing list
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://lists.scsys.co.uk/pipermail/bignum/>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=item * Subscribe/Unsubscribe
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=back
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=back
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 LICENSE
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
This program is free software; you may redistribute it and/or modify it under
|
|
Packit |
dcde0c |
the same terms as Perl itself.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 AUTHORS
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/>
|
|
Packit |
dcde0c |
in late 2000.
|
|
Packit |
dcde0c |
Separated from BigInt and shaped API with the help of John Peacock.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Fixed, sped-up and enhanced by Tels http://bloodgate.com 2001-2003.
|
|
Packit |
dcde0c |
Further streamlining (api_version 1 etc.) by Tels 2004-2007.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Bug-fixing by Peter John Acklam E<lt>pjacklam@online.noE<gt> 2010-2016.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=head1 SEE ALSO
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
L<Math::BigInt::Lib> for a description of the API.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Alternative libraries L<Math::BigInt::Calc>, L<Math::BigInt::GMP>, and
|
|
Packit |
dcde0c |
L<Math::BigInt::Pari>.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
Some of the modules that use these libraries L<Math::BigInt>,
|
|
Packit |
dcde0c |
L<Math::BigFloat>, and L<Math::BigRat>.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
=cut
|