package Math::BigInt::FastCalc;
use 5.006;
use strict;
# use warnings; # dont use warnings for older Perls
use DynaLoader;
use Math::BigInt::Calc;
use vars qw/@ISA $VERSION $BASE $BASE_LEN/;
@ISA = qw(DynaLoader);
$VERSION = '0.19';
bootstrap Math::BigInt::FastCalc $VERSION;
##############################################################################
# global constants, flags and accessory
# announce that we are compatible with MBI v1.70 and up
sub api_version () { 1; }
BEGIN
{
# use Calc to override the methods that we do not provide in XS
for my $method (qw/
str
add sub mul div
rsft lsft
mod modpow modinv
gcd
pow root sqrt log_int fac nok
digit check
from_hex from_bin from_oct as_hex as_bin as_oct
zeros base_len
xor or and
alen 1ex
/)
{
no strict 'refs';
*{'Math::BigInt::FastCalc::_' . $method} = \&{'Math::BigInt::Calc::_' . $method};
}
my ($AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN_SMALL, $MAX_VAL);
# store BASE_LEN and BASE to later pass it to XS code
($BASE_LEN, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN_SMALL, $MAX_VAL, $BASE) =
Math::BigInt::Calc::_base_len();
}
sub import
{
_set_XS_BASE($BASE, $BASE_LEN);
}
##############################################################################
##############################################################################
1;
__END__
=pod
=head1 NAME
Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed
=head1 SYNOPSIS
Provides support for big integer calculations. Not intended to be used by
other modules. Other modules which sport the same functions can also be used
to support Math::BigInt, like L