home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / Math / BigInt / FastCalc.pm
Encoding:
Perl POD Document  |  2009-06-26  |  3.1 KB  |  125 lines

  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
  125.