summaryrefslogtreecommitdiff
path: root/CHANGES
blob: 0fc05bee060dcb4d86e832def2c64d23b1780838 (plain)
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
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)