This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Math-BigInt-FastCalc to CPAN version 0.38
[perl5.git] / cpan / Math-BigInt-FastCalc / lib / Math / BigInt / FastCalc.pm
1 package Math::BigInt::FastCalc;
2
3 use 5.006;
4 use strict;
5 use warnings;
6
7 use Math::BigInt::Calc 1.999706;
8
9 our $VERSION = '0.38';
10
11 ##############################################################################
12 # global constants, flags and accessory
13
14 # announce that we are compatible with MBI v1.83 and up
15 sub api_version () { 2; }
16
17 # use Calc to override the methods that we do not provide in XS
18
19 for my $method (qw/
20     str num
21     add sub mul div
22     rsft lsft
23     mod modpow modinv
24     gcd
25     pow root sqrt log_int fac nok
26     digit check
27     from_hex from_bin from_oct as_hex as_bin as_oct
28     zeros base_len
29     xor or and
30     alen 1ex
31     /)
32     {
33     no strict 'refs';
34     *{'Math::BigInt::FastCalc::_' . $method} = \&{'Math::BigInt::Calc::_' . $method};
35     }
36
37 require XSLoader;
38 XSLoader::load(__PACKAGE__, $VERSION, Math::BigInt::Calc::_base_len());
39
40 ##############################################################################
41 ##############################################################################
42
43 1;
44
45 __END__
46
47 =pod
48
49 =head1 NAME
50
51 Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed
52
53 =head1 SYNOPSIS
54
55 Provides support for big integer calculations. Not intended to be used by
56 other modules. Other modules which sport the same functions can also be used
57 to support Math::BigInt, like L<Math::BigInt::GMP> or L<Math::BigInt::Pari>.
58
59 =head1 DESCRIPTION
60
61 In order to allow for multiple big integer libraries, Math::BigInt was
62 rewritten to use library modules for core math routines. Any module which
63 follows the same API as this can be used instead by using the following:
64
65         use Math::BigInt lib => 'libname';
66
67 'libname' is either the long name ('Math::BigInt::Pari'), or only the short
68 version like 'Pari'. To use this library:
69
70         use Math::BigInt lib => 'FastCalc';
71
72 Note that from L<Math::BigInt> v1.76 onwards, FastCalc will be loaded
73 automatically, if possible.
74
75 =head1 STORAGE
76
77 FastCalc works exactly like Calc, in stores the numbers in decimal form,
78 chopped into parts.
79
80 =head1 METHODS
81
82 The following functions are now implemented in FastCalc.xs:
83
84         _is_odd         _is_even        _is_one         _is_zero
85         _is_two         _is_ten
86         _zero           _one            _two            _ten
87         _acmp           _len
88         _inc            _dec
89         __strip_zeros   _copy
90
91 =head1 BUGS
92
93 Please report any bugs or feature requests to
94 C<bug-math-bigint-fastcalc at rt.cpan.org>, or through the web interface at
95 L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt-FastCalc>
96 (requires login).
97 We will be notified, and then you'll automatically be notified of progress on
98 your bug as I make changes.
99
100 =head1 SUPPORT
101
102 You can find documentation for this module with the perldoc command.
103
104     perldoc Math::BigInt::FastCalc
105
106 You can also look for information at:
107
108 =over 4
109
110 =item * RT: CPAN's request tracker
111
112 L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt-FastCalc>
113
114 =item * AnnoCPAN: Annotated CPAN documentation
115
116 L<http://annocpan.org/dist/Math-BigInt-FastCalc>
117
118 =item * CPAN Ratings
119
120 L<http://cpanratings.perl.org/dist/Math-BigInt-FastCalc>
121
122 =item * Search CPAN
123
124 L<http://search.cpan.org/dist/Math-BigInt-FastCalc/>
125
126 =item * CPAN Testers Matrix
127
128 L<http://matrix.cpantesters.org/?dist=Math-BigInt-FastCalc>
129
130 =item * The Bignum mailing list
131
132 =over 4
133
134 =item * Post to mailing list
135
136 C<bignum at lists.scsys.co.uk>
137
138 =item * View mailing list
139
140 L<http://lists.scsys.co.uk/pipermail/bignum/>
141
142 =item * Subscribe/Unsubscribe
143
144 L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
145
146 =back
147
148 =back
149
150 =head1 LICENSE
151
152 This program is free software; you may redistribute it and/or modify it under
153 the same terms as Perl itself.
154
155 =head1 AUTHORS
156
157 Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/>
158 in late 2000.
159 Separated from BigInt and shaped API with the help of John Peacock.
160
161 Fixed, sped-up and enhanced by Tels http://bloodgate.com 2001-2003.
162 Further streamlining (api_version 1 etc.) by Tels 2004-2007.
163
164 Bug-fixing by Peter John Acklam E<lt>pjacklam@online.noE<gt> 2010-2015.
165
166 =head1 SEE ALSO
167
168 L<Math::BigInt>, L<Math::BigFloat>, and the other backends
169 L<Math::BigInt::Calc>, L<Math::BigInt::GMP>, and L<Math::BigInt::Pari>.
170
171 =cut