File: CHANGES

package info (click to toggle)
libmath-bigint-gmp-perl 1.37-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 336 kB
  • sloc: pascal: 4,078; perl: 881; makefile: 2; sh: 1
file content (316 lines) | stat: -rw-r--r-- 15,159 bytes parent folder | download
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
Revision history for Perl extension Math::BigInt::GMP.

2011-09-04 v1.37 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)

2011-02-26 v1.36 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).

2011-02-08 v1.35 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).

2011-02-07 v1.34 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).

2011-01-30 v1.33 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).

2010-09-23 v1.32 rafl 5559 tests
  * Re-upload 1.31 as a stable release without further changes.

2010-09-21 v1.31 rafl 5559 tests  DEVELOPMENT RELEASE
  * Add hooks for Storable (de-)serialisation.
  * Avoid failure in the destructor if someone blessed nonsense into our class.

2010-09-20 v1.30 rafl 5558 tests
  * Re-upload 1.29 as a stable release without further changes.

2010-09-19 v1.29 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.

2010-09-17 v1.28 rafl 5558 tests
  * Re-upload 1.27 without further changes as a stable release.

2010-09-15 v1.27 rafl 5558 tests  DEVELOPMENT RELEASE
  * Try to support perls older than 5.8.8 again.
    Tested with 5.8.7 and 5.6.2.

2010-09-14 v1.26 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.

2010-09-10 v1.25 rafl 5536 tests
  * Fix tests with Math::BigInt >= 1.90 and depend on it.

2007-07-31 v1.24 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!)

2007-07-25 v1.23 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)!)

2007-06-01 v1.22 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)

2007-04-17 v1.21 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)

2007-04-09 v1.20 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

2007-01-27 v1.19 Tels 5339 tests
  * add support for octal
  * take over tests from MBI 1.78 and require it

Older Changelog:

2001-07-22 v1.00 Tels
 * First version (basically working with some quirks)
2001-08-06 v1.01 Tels
 * first release
 * fixed all the bugs in v1.00
 * taken over tests from BigInt v1.40
2001-09-02 v1.02 Tels
 * removed auto-export and added empty import()
 * taken over tests from BigInt v1.42
2001-11-01 v1.03 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

2001-11-01 v1.04a Tels (never released)
  * _is_odd()/_is_even() use $two instead of 2: 5600 op/s instead of 4700
2002-01-26 v1.04 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
2002-02-16 v1.05 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.
2002-03-23 v1.06 Tels
  * testsuite from v1.55 - 3874 tests
  * fixed PREREQUISITES to Math::GMP v2.03, BigInt v1.55
  * fixed typos in CHANGES
  * added _from_bin()
2002-07-07 v1.07 Tels
  * testsuite from BigInt v1.60 - 4054 tests
  * fixed PREREQUISITES to BigInt v1.60
2002-12-12 v1.08 Tels 4069 tests (never released)
  * added implementation of bmodpow() using GMPs mpow_gmp()
  * release signed by key http://bloodgate.com/tels.asc id 93B84C15
2002-12-15 v1.10a Tels Never released
  * 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
2002-12-24 v1.10 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/
2003-01-01 v1.11 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
2003-01-08 v1.12a Tels 4109 tests (not released)
  * 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
2003-07-04 v1.12b Tels 4491 tests (not released)
  * testsuite from v1.65
  * fixed prereq to require BigInt v1.65
2003-12-11 v1.12 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
2004-01-10 v1.13 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)
2004-02-15 v1.14 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
2004-11-22 v1.15 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
2004-12-09 v1.16 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
2005-01-01 v1.17 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))
2005-04-11 v1.18 Tels 5186 tests
  * _log_int() handles now plain scalars as $base parameter
  * take over tests from MBI 1.76, require it

Please send me test-reports, your experiences with this and your ideas - I love
to hear about my work!

Tels <http://bloodgate.com/>