Silence a couple of VC++ compiler warnings
[p5sagit/p5-mst-13.2.git] / ext / Math / BigInt / FastCalc / FastCalc.pm
CommitLineData
062a4e99 1package Math::BigInt::FastCalc;
2
caa64001 3use 5.006002;
062a4e99 4use strict;
5# use warnings; # dont use warnings for older Perls
6
7use DynaLoader;
8use Math::BigInt::Calc;
9
10use vars qw/@ISA $VERSION $BASE $BASE_LEN/;
11
12@ISA = qw(DynaLoader);
13
a436f3ee 14$VERSION = '0.15_01';
062a4e99 15
16bootstrap Math::BigInt::FastCalc $VERSION;
17
18##############################################################################
19# global constants, flags and accessory
20
21# announce that we are compatible with MBI v1.70 and up
22sub api_version () { 1; }
23
24BEGIN
25 {
26 # use Calc to override the methods that we do not provide in XS
27
28 for my $method (qw/
5ed38b1a 29 str
062a4e99 30 add sub mul div
31 rsft lsft
32 mod modpow modinv
33 gcd
5ed38b1a 34 pow root sqrt log_int fac nok
062a4e99 35 digit check
7b29e1e6 36 from_hex from_bin from_oct as_hex as_bin as_oct
062a4e99 37 zeros length base_len
38 xor or and
c039cd6f 39 alen 1ex
062a4e99 40 /)
41 {
42 no strict 'refs';
43 *{'Math::BigInt::FastCalc::_' . $method} = \&{'Math::BigInt::Calc::_' . $method};
44 }
45 my ($AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN_SMALL, $MAX_VAL);
46
47 # store BASE_LEN and BASE to later pass it to XS code
48 ($BASE_LEN, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN_SMALL, $MAX_VAL, $BASE) =
49 Math::BigInt::Calc::_base_len();
50
51 }
52
53sub import
54 {
55 _set_XS_BASE($BASE, $BASE_LEN);
56 }
57
58##############################################################################
59##############################################################################
60
611;
62__END__
63
64=head1 NAME
65
66Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed
67
68=head1 SYNOPSIS
69
70Provides support for big integer calculations. Not intended to be used by
71other modules. Other modules which sport the same functions can also be used
72to support Math::BigInt, like L<Math::BigInt::GMP> or L<Math::BigInt::Pari>.
73
74=head1 DESCRIPTION
75
76In order to allow for multiple big integer libraries, Math::BigInt was
77rewritten to use library modules for core math routines. Any module which
78follows the same API as this can be used instead by using the following:
79
80 use Math::BigInt lib => 'libname';
81
82'libname' is either the long name ('Math::BigInt::Pari'), or only the short
83version like 'Pari'. To use this library:
84
85 use Math::BigInt lib => 'FastCalc';
86
87Note that from L<Math::BigInt> v1.76 onwards, FastCalc will be loaded
88automatically, if possible.
89
90=head1 STORAGE
91
92FastCalc works exactly like Calc, in stores the numbers in decimal form,
93chopped into parts.
94
95=head1 METHODS
96
97The following functions are now implemented in FastCalc.xs:
98
99 _is_odd _is_even _is_one _is_zero
100 _is_two _is_ten
101 _zero _one _two _ten
102 _acmp _len _num
103 _inc _dec
104 __strip_zeros _copy
105
106=head1 LICENSE
107
108This program is free software; you may redistribute it and/or modify it under
109the same terms as Perl itself.
110
111=head1 AUTHORS
112
113Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/>
114in late 2000.
115Seperated from BigInt and shaped API with the help of John Peacock.
116Fixed, sped-up and enhanced by Tels http://bloodgate.com 2001-2003.
7b29e1e6 117Further streamlining (api_version 1 etc.) by Tels 2004-2007.
062a4e99 118
119=head1 SEE ALSO
120
c039cd6f 121L<Math::BigInt>, L<Math::BigFloat>,
062a4e99 122L<Math::BigInt::GMP>, L<Math::BigInt::FastCalc> and L<Math::BigInt::Pari>.
123
124=cut