1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742
|
1.7003 2025-03-25
* Sync test files with Math-BigInt.
1.7002 2025-02-22
* Sync test files with Math-BigInt.
1.7001 2024-01-06
* Sync test files with Math-BigInt.
1.7000 2023-12-29
* Add new methods _to_hex(), _to_bin(), _to_oct(), _lcm(), _dfac(), _nok(),
_fib(), and _lucas(). These are now in XS code rather than being inherited.
1.6014 2023-12-27
* Sync test files with Math-BigInt.
1.6013 2023-09-20
* Sync test files with Math-BigInt.
* Remove obsolete link to cpanratings.org.
1.6012 2023-04-03
* Sync test files with Math-BigInt.
1.6011 2022-05-17
* Sync test files with Math-BigInt.
1.6010 2021-12-29
* Add static gmp_version() function (code provided by FGasper on GitHub).
* Make t/01load.t display the output from gmp_version().
1.6009 2021-09-28
* Sync test files with Math-BigInt.
1.6008 2021-07-02
* Sync test files with Math-BigInt.
1.6007 2019-10-10
* Sync test files with Math-BigInt.
1.6006 2018-10-09
* Update MANIFEST.SKIP.
* Sync test files with Math-BigInt.
* Better Makefile.PL.
1.6005 2018-04-17
* Fix memory leak in _modinv() (thanks to DANAJ). See CPAN RT #123807.
* Make tests pass when '.' is not in @INC. (CPAN RT #120718)
* The tests now require Test::More version 0.88 or newer.
* Sync test files with Math-BigInt.
* Add test files t/release-test-version.t, t/release-portability.t, and
t/release-cpan-changes.t.
* Use a MANIFEST.SKIP file based on the default file in the ExtUtils-Manifest
distribution.
* Format CHANGES according to CPAN::Changes::Spec.
* Convert test file t/02pod.t to t/release-pod.t and t/03podcov.t to
t/release-pod-coverage.t.
1.6004 2017-02-05 pjacklam
* Fix typos in POD.
* Update link in SUPPORT section.
* Minor improvements to the documentation (POD).
1.6003 2017-01-11 pjacklam
* Fix syntax for required version of Math::BigInt::Lib.
* Better checking of POD coverage.
* Sync test files with Math-BigInt-1.999808.
1.6002 2016-12-03 pjacklam
* Use ExtUtils::MakeMaker rather than Module::Install in Makefile.PL
* Don't use Devel::CheckLib. It fails on Windows even in cases where
this distribution would build just fine.
* Update BUGS file.
* Remove author information in LICENSE file.
* Inform that the TODO file is not up to date.
* Remove INSTALL file. The information is in the README file.
1.6001 2016-11-23 pjacklam
* Sync test files with Math-BigInt-1.999801.
* Correct version number in CHANGES file.
1.6000 2016-11-15 pjacklam
* Sync test files with Math-BigInt-1.999800.
* Update bundled Devel::CheckLib from v1.03 to v1.07.
* Math::BigInt::GMP is now a subclass of Math::BigInt::Lib, so remove pure
Perl methods from Math::BigInt::GMP that are implemented in the superclass
Math::BigInt::Lib. The methods removed are _digit(), _num(), _nok(), and
_log_int(). The version of _log_int() implemented in Math::BigInt::GMP was
buggy anyway.
* Fix _check() so it doesn't give a "use of uninitialized value" warning if
given an undefined "object".
* Trim whitespace in all files.
* Better use of the functionality in Test::More in t/bigintg.t.
1.51 2016-04-25 pjacklam
* Sync test files with Math-BigInt-1.999719.
1.50 2016-04-22 pjacklam
* Sync test files with Math-BigInt-1.999718.
1.49 2016-01-03 pjacklam
* Sync test files with Math-BigInt-1.999714.
1.48 2015-12-31 pjacklam
* Sync test files with Math-BigInt-1.999713.
1.47 2015-12-14 pjacklam
* Add patch from Gregor Herrmann (GREGOA) based on code by Dana Jacobsen
(DANAJ) to fix problems with the new() method when Perl is compiled with
support for 64-bit integers, but on platforms when the underlying OS is
32-bit (CPAN RT #71548).
1.46 2015-12-03 pjacklam
* Add patch from Dana Jacobsen (DANAJ) and add new test file
't/mbi-from-big-scalar.t' regarding CPAN RT #103517.
* Fix spelling in GMP.xs ('modifing' -> 'modifying').
* Whitespace/formatting in t/bigintg.t to make it more readble (for me, at
least) and more in accordance with the 'perlstyle' manpage.
1.45 2015-11-09 pjacklam
* Sync test files with Math-BigInt-1.999709.
* Required version of Test::More is 0.47.
1.44 2015-10-29 pjacklam
* Sync test files with Math-BigInt-1.999707.
* Update the README file.
* Remove the files INSTALL and LICENSE as this information is already covered
in the file README.
* Replace 'use vars ...' with 'our ...'. We require a Perl newer than 5.6.0
anyway.
* Required version of Math-BigInt is now 1.999706.
* Add 'Test::More' to TEST_REQUIRES in Makefile.PL.
* Enable 'use warnings'. We require a Perl newer than 5.6.0 anyway.
* Add 'assertlib.*\.exe' to MANIFEST.SKIP, since make generates temporary
files like 'assertlibzxjE4WfG.exe' on Cygwin.
1.43 2015-09-21 pjacklam
* Sync test files with Math-BigInt-1.999703.
* Required version of Math-BigInt is now 1.999703.
* Update author information.
1.42 2015-09-17 pjacklam
* Sync test files with Math-BigInt-1.999702.
* Required version of Math-BigInt is now 1.999702.
1.41 2015-09-11 pjacklam
lib/Math/BigInt/GMP.pm
* Updated version number.
Makefile.PL
* Updated required version of Math::BigInt.
t/bigfltpm.inc
* Synced tests with the Math-BigInt distribution.
t/bigfltpm.t
* Updated number of tests.
t/bigintpm.inc
* Synced tests with the Math-BigInt distribution.
t/bigintpm.t
* Updated number of tests.
1.40 2015-08-18 pjacklam
CHANGES
* Add changes for the newest release.
* Reorder change entries into descending chronological order.
lib/Devel/CheckLib.pm
* Update bundled Devel::CheckLib from v1.01 to v1.03.
Makefile.PL
* Update required version of Math-BigInt to 1.9994.
t/01load.t
* Improve formatting of module version information.
t/bigfltpm.t
* Use the correct backend, in this case Math::BigInt::GMP.
* Skip test specific for the Math::BigInt::Calc backend.
t/bigintpm.inc
* Rather than an early exit(), use skip() to skip tests.
t/bigintpm.t
* Use the correct backend, in this case Math::BigInt::GMP.
t/biglog.t
* Use the correct backend, in this case Math::BigInt::GMP. This was correct
in v1.21, but has been wrong since then.
t/bigroot.t
* Use the correct backend, in this case Math::BigInt::GMP. This was correct
up until v1.32, but has been wrong since then.
lib/Math/BigInt/GMP.pm
* Increment Math::BigInt::GMP version number to 1.40.
1.39 2015-08-17 pjacklam
* Updated test files with those from Math-BigInt-1.9997.
1.38 2014-04-03 pjacklam
* Updated test files from the Math::BigInt distribution (Peter John Acklam).
* Updated POD (Peter John Acklam)
* Updated bundled Devel::CheckLib from v0.93 to v1.01 (Peter John Acklam).
1.37 2011-09-04 pjacklam
* Updated test files from the Math::BigInt distribution (Peter John Acklam).
* Updated bundled Devel::CheckLib from v0.92 to v0.93 (Peter John Acklam).
* Math::BigInt::GMP now requires Math::BigInt v1.997 (Peter John Acklam).
* Include "^MYMETA\.(yml|json)\z" in MANIFEST.SKIP. Whereas META.* are
generated by the distribution author at packaging time, MYMETA.* are
generated by the end user at configure time after any dynamic dependencies
are known. (Peter John Acklam)
* Changed Makefile.PL so that a "make dist" makes a META.yml and META.json.
(Peter John Acklam)
* Updated common test files from the Math::BigInt distribution. (Peter John
Acklam)
1.36 2011-02-26 pjacklam (6362 tests)
* Change bigintpm.inc to reflect recent changes in the Math::BigInt
distribution (Peter John Acklam).
* Use a _nok() function more similar to the one in Math::BigInt::Calc
(Peter John Acklam).
1.35 2011-02-08 pjacklam (6361 tests)
* Rename files for testing signature, module loading, and POD so the names
are within the 8+3 character limit (Peter John Acklam).
* Rename method _nok_ok() to the correct _nok(). There ought to have been a
test catching an error like that (Peter John Acklam).
* Fix _nok() giving wrong output when second input argument is zero
(Peter John Acklam).
* Fix _nok() so it doesn't modify its second input arg (Peter John Acklam).
* Update the included Devel::CheckLib to most recent version as suggested in
RE #63055 (Peter John Acklam).
* Apply "chmod 0644" to the few test scripts that don't already have that
mode (Peter John Acklam).
1.34 2011-02-07 pjacklam (6361 tests)
* Rename _num() to _str(). The old _num() did exactly what _str() is supposed
to do, according to the API documentation (Peter John Acklam).
* Add a _num() function which (currently) simply numifies the output from
_str() (Peter John Acklam).
* Clean up whitespace (Peter John Acklam).
* Fix POD errors (Peter John Acklam).
* Add _nok() method. Now the old claim that Math::BigInt::GMP conforms to API
version 2 is actually true (Peter John Acklam).
* Edit the test files that were copied from the Math::BigInt distribution, so
we now test Math::BigInt against Math::BigInt::GMP, not Math::BigInt::Calc.
I had forgotten this when I copied the test files from the Math::BigInt
distribution. This reduces the total test count, since some test are not
executed with Math::BigInt::GMP (Peter John Acklam).
* Replace morse code in 'README' with proper text (Peter John Acklam).
* Include '01-load.t' for explicitly testing module loading (Peter John
Acklam).
* Use more generic code in 'pod.t' and 'pod_cov.t' (Peter John Acklam).
1.33 2011-01-30 pjacklam (6411 tests)
* Fix _modinv() so that it works the same way as _modinv() in other
Math::BigInt libraries: The output arguments are an object and the
corresponding sign, not undef (Peter John Acklam).
* Include most recent versions of the test files from the Math-BigInt
distribution (bigfltpm.inc, bigfltpm.t, bigintpm.inc, bigintpm.t,
biglog.t, and bigroot.t) (Peter John Acklam).
* Include generic SIGNATURE test file (Peter John Acklam).
* Required version of Math::BigInt is now 1.99_05 (Peter John Acklam).
1.32 2010-09-23 rafl 5559 tests
* Re-upload 1.31 as a stable release without further changes.
1.31 2010-09-21 rafl 5559 tests DEVELOPMENT RELEASE
* Add hooks for Storable (de-)serialisation.
* Avoid failure in the destructor if someone blessed nonsense into our class.
1.30 2010-09-20 rafl 5558 tests
* Re-upload 1.29 as a stable release without further changes.
1.29 2010-09-19 rafl 5558 tests DEVELOPMENT RELEASE
* Attempt to fix a bug in the bundled version Devel::CheckLib.
It used to ignore @Config{qw(ccflags ldflags)} and only tried to look for
headers and libraries with the compiler's default include- and lib-paths as
well as those explicitly asked for by the user.
1.28 2010-09-17 rafl 5558 tests
* Re-upload 1.27 without further changes as a stable release.
1.27 2010-09-15 rafl 5558 tests DEVELOPMENT RELEASE
* Try to support perls older than 5.8.8 again.
Tested with 5.8.7 and 5.6.2.
1.26 2010-09-14 rafl 5558 tests DEVELOPMENT RELEASE
* Error out early if libgmp or gmp.h are missing.
* Clone Math::BigInt::GMP instances on thread cloning.
This should make the module threadsafe.
1.25 2010-09-10 rafl 5536 tests
* Fix tests with Math::BigInt >= 1.90 and depend on it.
1.24 2007-07-31 Tels 5530 tests
* apply patch for warnings about ptr size mismatch under Cygwin (thanx
Reini Urban!)
* make it work under 5.6.x again by defining SvUOK() (Thanx Marcus
Holland-Moritz and Reini Urban!)
1.23 2007-07-25 Tels 5527 tests
* require Math::BigInt 1.87
* fix for _new() (appeared under Cygwin, but possible others, thanx
Linda W. (report) and Reini Urban (patch)!)
1.22 2007-06-01 Tels 5527 tests
* require Math::BigInt 1.86
* support api_version() 2 by adding _nok()
* fix compilation issues on Mac/Darwin
* _log_int() modifies it's argument instead of just returning a
different object as result
* speed up _log_int() greatly by taking a guess of the result
and then improve it, instead of startig with 1 and going up. This means
it takes now a more or less constant time, instead of a time proportional
to the size/value of the result:
Using Math::BigInt::GMP v1.21
baselen 2: 3s (3.22 usr + 0.00 sys = 3.22 CPU) @ 7270/s (n=23411)
baselen 2 big: 3s (3.11 usr + 0.06 sys = 3.17 CPU) @ 962/s (n=3051)
baselen 3: 3s (3.20 usr + 0.00 sys = 3.20 CPU) @ 1304/s (n=4173)
baselen 7: 3s (3.20 usr + 0.00 sys = 3.20 CPU) @ 3306/s (n=10582)
baselen 8: 3s (3.14 usr + 0.00 sys = 3.14 CPU) @ 3769/s (n=11836)
baselen 11: 3s (3.24 usr + 0.00 sys = 3.24 CPU) @ 4750/s (n=15392)
baselen 14: 3s (3.20 usr + 0.00 sys = 3.20 CPU) @ 5835/s (n=18673)
baselen 20: 3s (3.10 usr + 0.03 sys = 3.13 CPU) @ 7621/s (n=23855)
baselen 3 big: 4s (3.17 usr + 0.00 sys = 3.17 CPU) @ 320/s (n=1016)
Using Math::BigInt::GMP v1.22
baselen 2: 3s (3.15 usr + 0.00 sys = 3.15 CPU) @ 16290/s (n=51316)
baselen 2 big: 4s (3.21 usr + 0.01 sys = 3.22 CPU) @ 15933/s (n=51306)
baselen 3: 4s (3.12 usr + 0.02 sys = 3.14 CPU) @ 15555/s (n=48844)
baselen 7: 4s (3.15 usr + 0.07 sys = 3.22 CPU) @ 15658/s (n=50420)
baselen 8: 3s (3.18 usr + 0.01 sys = 3.19 CPU) @ 15610/s (n=49797)
baselen 11: 3s (3.14 usr + 0.00 sys = 3.14 CPU) @ 15555/s (n=48844)
baselen 14: 3s (3.15 usr + 0.00 sys = 3.15 CPU) @ 15506/s (n=48844)
baselen 20: 3s (3.14 usr + 0.01 sys = 3.15 CPU) @ 15506/s (n=48844)
baselen 3 big: 3s (3.10 usr + 0.04 sys = 3.14 CPU) @ 15555/s (n=48844)
1.21 2007-04-17 Tels 5488 tests
* add _as_oct(), _from_oct(), _alen(), _1ex() and some _root() tests
* require Math::BigInt 1.83
* support api_version() by adding _1ex() and _alen()
* _new(): take a shortcut if the passed an IV (integer value)
1.20 2007-04-09 Tels 5351 tests
* remove PREREQ_FATAL because the toolchain is broken and cannot handle it
* take over tests from MBI 1.82 and require it
* require Perl 5.6.2 as minimum
* speed up _zeros():
+ use Newx() instead of a full-blown SV for temp storage
+ no need to allocate temp storage for numbers < 10
* put _len() into XS code, making $x->length() faster (about 30% for "123",
less for longer numbers as the binary=>decimal conversion dominates)
* add POD tests
* add MANIFEST.SKIP
1.19 2007-01-27 Tels 5339 tests
* add support for octal
* take over tests from MBI 1.78 and require it
1.18 2005-04-11 Tels 5186 tests
* _log_int() handles now plain scalars as $base parameter
* take over tests from MBI 1.76, require it
1.17 2005-01-01 Tels 5182 tests
* use XSLoader instead of DynaLoader to save a tiny amount of memory
* take over tests from Math::BigInt v1.74
* require Math::BigInt v1.74
* simplify sub code in XS (left-over artifact from v1.16)
* fix a leak in _zeros()
* _zeros() is now much faster for odd numbers (O(1) vs. O(N*N))
1.16 2004-12-09 Tels 5112 tests
* fixed a leak in _div() (Thanx Tassilo v. Parsival!)
* put _div() into XS, making division slightly faster for small numbers
* put leak.pl and leaktest into MANIFEST for later checking
1.15 2004-11-22 Tels 5112 tests
* some small cleanups in the Perl code
* changed "class" to "Class" to avoid the reserved keyword for MS compiler
* do not pull unused parameter "Class" from stack - avoid compiler warnings
* put _sub() into XS for more speed and smaller memory footprint
* testsuite from MBI v1.73
1.14 2004-02-15 Tels 4867 tests
* require BigInt v1.70, use tests from it and make API compatible with it
* _rsft() and _lsft() modify their argument instead of making a copy,
meaning brsft() and blsft() got about 20% faster in BigInt
* added a working _zeros() method
* added a working _log_int() method
1.13 2004-01-10 Tels 4759 tests
* tests from BigInt v1.68
* removed DESTROY from GMP.pm and made GMP.xs destroy => DESTROY
* removed _num from GMP.pm and made GMP.xs __stringify => _num
* removed _modinv() from GMP.pm and fixed up _modinv in GMP.xs
* disabled the borken _log_int() from the XS code
* modify $x in place for _dec, _inc, _add, _mod, _mul, _fac, _and, _or,
_xor, _sqrt, _root and _sub (sub in non-reversed form), this removes some
malloc/free and makes these ops slightly faster
(between 10 and 33% in Math::BigInt (!), depending on input and size)
1.12 2003-12-11 Tels 4677 tests
* testsuite from v1.67, especialy revamped bigintg.t
* fixed prereq to require BigInt v1.67
* added _log_int() to XS code
* some routines did only return the result, but not modify $x in place
* testsuite from v1.65
* fixed prereq to require BigInt v1.65
* removed unused function _mmod from XS code
* removed unnecc. if len == 0 check in _as_bin(), _as_hex() etc
* replace some RETVAL = malloc() lines with defined to make changing them
later much easier
1.11 2003-01-01 Tels 4109 tests
* rewrote stringify_bin() and stringify_hex() to not allocate scratch buffers
Faster, no longer needs malloc()/free() and strlen().
Thanx to Sysiphus for pointing this out.
* removed _as_hex() and _as_bin() from GMP.pm and moved the logic to GMP.xs
* documented in todo to replace all malloc()/free() with New and Safefree()
* removed unused cmp_two() function in GMP.xs
* removed the unused "$zero = ..."/"$one = ..." in GMP.pm
1.10 2002-12-24 Tels 4109 tests
* Merry Christmas and a Happy New Year to all!
* cut out more dead wood from GMP.xs, GMP.so file shrunk a bit
* added some comments in GMP.xs
* fixed PREREQ to BigInt v1.64 since v1.65 is not yet out *sigh*
* more functions like _is_odd()/_is_even()/_acmp() directly in XS - cut away
perl layer subroutines for more speed (about 10-30% more ops/s for small
argument or constant cases or other cases where the overhead is greater
than the actual math operation itself)
* __stringify() no longer malloc()s a temp. storage => faster
* added _root(), _lsft() and_rsft() functions for great speedups
* Running the benchmark script above (adopted a bit) on the same 1 Ghz AMD
under BigInt v1.64:
Benchmark: running div_l, mod_l, mod_s for at least 3 CPU seconds...
div_l: 3s ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 4655.00/s (n=14896)
mod_l: 4s ( 3.31 usr + 0.00 sys = 3.31 CPU) @ 6851.96/s (n=22680)
mod_s: 3s ( 3.01 usr + 0.00 sys = 3.01 CPU) @ 7088.37/s (n=21336)
* Full (memory and other) benchmarks at http://bloodgate.com/perl/bigint/
* no longer needs Math::GMP (and Carp), but uses own XS layer
* is thus faster (saves one perl subroutine layer) and less memory hungry
(it now uses even less memory than using Calc!)
new XS lets us cut out a subroutine layer
* new XS will enable us to implement *all* missing functions like _root(),
_as_hex(), _as_bin() and _rsft(), _lsft()
* fixed PREREQ to BigInt v1.65
* extended tests in bigintg.t to cover more functions
1.08 2002-12-12 Tels 4069 tests (never released)
* added implementation of bmodpow() using GMPs mpow_gmp()
* release signed by key http://bloodgate.com/tels.asc id 93B84C15
1.07 2002-07-07 Tels
* testsuite from BigInt v1.60 - 4054 tests
* fixed PREREQUISITES to BigInt v1.60
1.06 2002-03-23 Tels
* testsuite from v1.55 - 3874 tests
* fixed PREREQUISITES to Math::GMP v2.03, BigInt v1.55
* fixed typos in CHANGES
* added _from_bin()
1.05 2002-02-16 Tels
* tests from Math::BigInt v1.51
* replaced _core_lib() by config()->{lib}
* added _and, _or, _xor (using Math::GMP internal methods)
* switched _fac over to use Math::GMP gmp_fac()
* added _sqrt() using gmp_sqrt()
* used div_two and bdiv_two for _div()
* tests for _div() in list context and _mod
* added _from_hex()
The speedups in band(), bxor(), bior() and bfac() are at least factor 10 for
small numbers and quickly raise as the numbers grow ;)
The speedup for bmod() and bdiv() aren't that dramatic, but still worth it.
1.04 2002-01-26 Tels
* use $zero,$one,$two etc instead of 0,1,2 in some routines
* tests from Math::BigInt v1.50
* bypass Math::GMP's overload interface and use Math::GMP::gmp_foo() directly
* added _gcd() and _fac() for more speed in bgcd() and bfac(), respectively
* _is_odd()/_is_even() use $two instead of 2: 5600 op/s instead of 4700
1.03 2001-11-01 Tels
* taken over tests from BigInt v1.45
* added _mod() for more speed for $x % $y
#!/usr/bin/perl -w
use lib 'lib';
#use lib '../Math-BigInt-GMP-1.02/lib';
use Math::BigInt lib => 'GMP';
use Benchmark;
my $digits = 1024;
my $x = Math::BigInt->new('1' . '0' x $digits);
my $y = Math::BigInt->new('3' . '0' x ($digits - 2) . '3');
my $u = Math::BigInt->new('3');
timethese ( 2000,
{
mod_l => sub { $z = $x % $y, },
mod_s => sub { $z = $x % $u, },
div_l => sub { ($z,$r) = $x->copy()->bdiv($y), },
} );
On a 1 Ghz Athlon with v1.45 of BigInt in ops/s:
v1.02 v1.03
mod_s 1100 2350
mod_l 1111 2325
div_l 1260 1300
1.02 2001-09-02 Tels
* removed auto-export and added empty import()
* taken over tests from BigInt v1.42
1.01 2001-08-06 Tels
* first release
* fixed all the bugs in v1.00
* taken over tests from BigInt v1.40
1.00 2001-07-22 Tels
* First version (basically working with some quirks)
|