[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 package Math::BigInt::FastCalc; 2 3 use 5.006; 4 use strict; 5 # use warnings; # dont use warnings for older Perls 6 7 use DynaLoader; 8 use Math::BigInt::Calc; 9 10 use vars qw/@ISA $VERSION $BASE $BASE_LEN/; 11 12 @ISA = qw(DynaLoader); 13 14 $VERSION = '0.16'; 15 16 bootstrap 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 22 sub api_version () { 1; } 23 24 BEGIN 25 { 26 # use Calc to override the methods that we do not provide in XS 27 28 for my $method (qw/ 29 str 30 add sub mul div 31 rsft lsft 32 mod modpow modinv 33 gcd 34 pow root sqrt log_int fac nok 35 digit check 36 from_hex from_bin from_oct as_hex as_bin as_oct 37 zeros base_len 38 xor or and 39 alen 1ex 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 53 sub import 54 { 55 _set_XS_BASE($BASE, $BASE_LEN); 56 } 57 58 ############################################################################## 59 ############################################################################## 60 61 1; 62 __END__ 63 64 =head1 NAME 65 66 Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more speed 67 68 =head1 SYNOPSIS 69 70 Provides support for big integer calculations. Not intended to be used by 71 other modules. Other modules which sport the same functions can also be used 72 to support Math::BigInt, like L<Math::BigInt::GMP> or L<Math::BigInt::Pari>. 73 74 =head1 DESCRIPTION 75 76 In order to allow for multiple big integer libraries, Math::BigInt was 77 rewritten to use library modules for core math routines. Any module which 78 follows 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 83 version like 'Pari'. To use this library: 84 85 use Math::BigInt lib => 'FastCalc'; 86 87 Note that from L<Math::BigInt> v1.76 onwards, FastCalc will be loaded 88 automatically, if possible. 89 90 =head1 STORAGE 91 92 FastCalc works exactly like Calc, in stores the numbers in decimal form, 93 chopped into parts. 94 95 =head1 METHODS 96 97 The 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 108 This program is free software; you may redistribute it and/or modify it under 109 the same terms as Perl itself. 110 111 =head1 AUTHORS 112 113 Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/> 114 in late 2000. 115 Seperated from BigInt and shaped API with the help of John Peacock. 116 Fixed, sped-up and enhanced by Tels http://bloodgate.com 2001-2003. 117 Further streamlining (api_version 1 etc.) by Tels 2004-2007. 118 119 =head1 SEE ALSO 120 121 L<Math::BigInt>, L<Math::BigFloat>, 122 L<Math::BigInt::GMP>, L<Math::BigInt::FastCalc> and L<Math::BigInt::Pari>. 123 124 =cut
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |