-
Notifications
You must be signed in to change notification settings - Fork 4
/
CHANGELOG
311 lines (274 loc) · 13.2 KB
/
CHANGELOG
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
0.7.xx
* GMP::Z can now be initialized from a Float or GMP::F, as well as the existing
Fixnum, Bignum, GMP::Z, and String.
0.7.19
* GMP::Q.new can now accept a GMP::Z or Fixnum more intelligently, and can
accept a Float, and is tested better.
* GMP::F.new can now accept a rounding mode after the base, when a String is
passed in.
* Rakefile is much more robust with various dependencies.
* Yardoc documentation is less completely broken.
* GMP::F#** is now slightly more efficient when the argument is a Fixnum or
GMP::Z, and is now tested.
* Bigger error message when GMP can't be found. Fixes #4.
* Rearrange args for GMP::F#atan2, #agm, and #hypot; contributed by @timpeters
* Allow Float for args to GMP::F#atan2, #agm, and #hypot; contributed by
@timpeters
* Sanity checks for GMP::F#hypot
* Added new MPFR class methods: GMP::F.emin, GMP::F.emax, GMP::F.emin=,
GMP::F.emax=, GMP::F.emin_min, GMP::F.emin_max, GMP::F.emax_min, and
GMP::F.emax_max; also minimal tests, and documentation
* Added new MPFR constructor method: GMP::F.new_2exp, not really tested :)
0.6.47
* Fixed GMP::F#to_s when MPFR is not present. It now works, and accepts an
optional base argument, just like GMP::F#to_s does when MPFR _is_ present.
* Added new optional rounding mode argument to GMP::F.new(Fixnum),
GMP::F.new(Bignum), GMP::F.new(GMP::Z), GMP::F.new(GMP::Q),
GMP::F.new(Float), and GMP::F.new(GMP::F) with tests (MPFR only)
* Added MPFR method GMP::RandState.mpfr_urandom (mpfr_urandom) and tests
* Added MPFR methods GMP::F#lessgreater? and GMP::F#unordered?, with sanity
tests
* Added tests for GMP::F#abs and GMP::F#neg
* Added GMP::F.fac(n) (mpfr_fac_ui) and tests
* Added GMP::F.nan, GMP::F.inf, GMP::F.zero (MPFR >= 3.0.0), documentation,
and simple tests
* Added GMP::F#frexp, documentation, and tests
* Fixed GMP::MPFR_RNDA
0.6.43
* Fixed compilation on OS X 10.9 Mavericks, using LLVM 5.0
* Added license: Apache v2
0.6.41
* Added GMP::Z.fib2, with documentation and tests
* Properly coerce GMP::Q and Float. GMP::Q / Float will now convert both
operands into GMP::F
* Workaround Ruby 2.0.0 bug in using --with-gmp-dir in extconf.rb (#8047)
* Fixed bugs for Z#fac, Z#2fac, Z#primorial, Z#fib, and Z#lucnum, where Ruby
would crash if a negative number was passed in as the argument.
* Aliasing #inspect to #to_s for GMP::Z, GMP::Q, and GMP::F, for better
usability in Ruby 2.x, where Object#inspect no longer calls #to_s.
* Support now verified for Ruby 2.0.0 and Ruby 2.1.0-preview1
0.6.31:
* Added GMP::Z#rootrem and tests
0.6.19:
* Added GMP::Z#congruent? and tests
* Added GMP::Z#export and GMP::Z.import and _minimal_ tests
0.6.17:
* Added GMP::Z#out_raw, GMP::Z.inp_raw
0.6.13:
* Added three new GMP::Z methods for GMP 5.1.x: GMP::Z#2fac
(GMP::Z#double_fac), GMP::Z#mfac, and GMP::Z#primorial
* Fixed a compilation bug when MPFR is not available.
* Fixed test bugs when MPFR is not available.
* Tweaked README documentation
* Added GMP::Z method: GMP::Z#hamdist, with minimal tests
0.6.7:
* Added 9th set of Functional Mappings: GMP::Z.divisible?
* Added 11th set of Functional Mappings: GMP::Z.congruent?
* Added GMP::sprintf for Ruby 1.9.x (requires Oniguruma regular expressions)
* Added optional parameter to GMP::F#to_s to allow a base to be passed in
* Finally added a rake file. My workflow now consists largely of:
rvm use _some_ruby_
rake make
* Added tests for GMP::F#to_s
* Added GMP::F#integer?
* Fixed tests for MPFR 3.1's PRNG
* Completely reorganized the benchmarks
* Added new performance.md, performance.html, and performance.pdf, a reworked benchmarking report
* Added GMP::Z#lcm, with tests
* Added an alloc_func, so that now GMP::Z#dup and GMP::Z#clone work
* Added GMP::Z#gcdext2, which only calculates g and s, for as + bt = g
0.5.47:
* Probably last release before 0.6.7
* Added GMP::Q#hash and GMP::Q#eql?; tested.
* Added optional parameter to GMP::Z.new(String), the base; tested.
* Added GMP::F.mpfr_buildopt_tls_p() when MPFR > 2.x.x.
* Added GMP::F.mpfr_buildopt_decimal_p() when MPFR > 2.x.x.
* I'm seeing weird failures on tests with JRuby 1.6.5... they are flickering though.
GMP::Z(GMP::GMP_NUMB_MAX) is not happy... need to research.
* If using MPFR 3.1.0, the random number generator tests will fail, I imagine because
of this new functionality, documented on the MPFR site:
"The mpfr_urandom and mpfr_urandomb functions now return identical values on
processors with different word size (assuming the same random seed, and since the
GMP random generator does not depend itself on the word size, cf
http://gmplib.org/list-archives/gmp-devel/2010-September/001642.html)."
* Unit test results: 118 tests, 16396 assertions, 0 failures, 0 errors
* Unit test results: 99 tests, 5118 assertions, 0 failures, 0 errors (w/o MPFR)
0.5.41:
* Added first five sets of Functional Mappings. These will be the primary new features
of 0.6.
* First Functional Mappings: GMP::Z.add, .addmul, .submul, .divexact, .lcm, .sub, .mul,
.mul_2exp, .cdiv_q_2exp, .cdiv_r_2exp, .fdiv_q_2exp, .fdiv_r_2exp, .tdiv_q_2exp,
.tdiv_r_2exp, .neg, .abs, .sqrt, .nextprime, .com
* Added hopeful support for the Rubinius Ruby interpreter and VM! All tests pass in
Rubinius 1.1.0, but full support won't be added until the release and inspection of
Rubinius 1.1.1. Tested on 64-bit OS X 10.6 and 64-bit Linux 2.6.35.
* Unit test results: 114 tests, 16203 assertions, 0 failures, 0 errors
* Unit test results: 114 tests, 16190 assertions, 0 failures, 0 errors (MPFR 2.4.2)
* Unit test results: 95 tests, 4925 assertions, 0 failures, 0 errors (w/o MPFR)
0.5.23:
* Added MPFR method GMP::F.can_round? (mpfr_can_round), not tested.
* MPFR const_ functions now accept an optional rounding mode and precision.
* Added GMP method GMP::RandState.rrandomb (mpz_rrandomb)
* Added GMP constant GMP_NUMB_MAX
* Added GMP method GMP::Z.gcdext.
* GMP::Z.gcd and GMP::Z.gcdext are now heavily tested via GMP's tests.
* Added MPFR methods GMP::F.sin[h]_cos[h] (mpfr_sin[h]_cos[h]), not tested.
* Added MPFR methods GMP::F.atan2, .agm, and .hypot, not tested.
* Seriously improved RDoc/YARD documentation.
I didn't know rubygems.org auto-yardocs my stuff!
* Added GMP method GMP::Z#submul! (mpz_submul) with tests.
* Added GMP method GMP::Z#divisible? (mpz_divisible[_ui]_p) with tests.
* Preliminary testing with REE on Linux... probably supported next release.
* Unit test results: 109 tests, 16144 assertions, 0 failures, 0 errors
* Unit test results: 109 tests, 16131 assertions, 0 failures, 0 errors (MPFR 2.4.2)
* Unit test results: 90 tests, 4866 assertions, 0 failures, 0 errors (w/o MPFR)
0.5.3:
* Now supporting GMP 5.0.1 (I now test with GMP 4.3.2 and 5.0.1).
* Now supporting MPFR 3.0.0 (I now test with MPFR 2.4.2 and 3.0.0).
* Now supporting Ruby 1.9.2. A few changes had to be made.
* Now supporting 64-bit (mostly Linux right now).
* Added MPFR method GMP::F.zero? (mpfr_zero_p) with tests.
* Added MPFR method GMP::F.regular? (mpfr_regular_p) with tests (MPFR 3.0.0
only).
* Added MPFR methods GMP::F.rec_sqrt (mpfr_rec_sqrt) and GMP::F.cbrt
(mpfr_rec_cbrt), both heavily tested.
* Added MPFR method GMP::F.digamma (mpfr_digamma), not tested.
* Added GMP::F.prec= (mpf_set_prec) and GMP::F.prec_raw= (mpf_set_prec_raw),
neither tested yet.
* Added a dramatic amount of content to the manual. 26 pages.
* Unit test results: 98 tests, 11974 assertions, 0 failures, 0 errors
* Unit test results: 98 tests, 11961 assertions, 0 failures, 0 errors (MPFR 2.4.2)
* Unit test results: 79 tests, 742 assertions, 0 failures, 0 errors (w/o MPFR)
0.4.19:
* Added FIX2NUM macro to help support x86_64.
* Fixed bug in MPRF functions; they were not using specified rounding modes.
* Added ** (pow) to GMP::F (when not using MPFR)
* Fixed add'l bug in MPFR functions, when specifying a rounding mode.
* Fixed memory bug when specifying an invalid precision, or base range.
* Fixed GMP::Z#pow (note that GMP::Z.pow has always worked.)
* Added many tests from MPFR's tsqrt.c. This actually exposed a lot of bugs in
the gem.
* Added GMP::Z.size (mpz_size). Not tested yet.
* Added GMP::Z.addmul! (mpz_addmul) with tests.
* Unit test results: 90 tests, 1500 assertions, 0 failures, 0 errors
* Unit test results: 79 tests, 742 assertions, 0 failures, 0 errors (w/o MPFR)
0.4.7:
* Added 6 MPFR trig methods, plus eint, li2, gamma, lngamma, zeta, erf, erfc,
j0, j1, jn, y0, y1, and yn.
* Completely fixed the rounding constants. They are now objects, sporting name,
mode, and ieee754 reader methods.
* Added 4 MPFR "constants". Their values can change based on precision and
rounding mode. const_log2, const_pi, const_euler, const_catalan.
* Added GMP::Z.eql? and GMP::Z.hash to allow GMP::Z objects to be proper keys
in a hash
* "Completed" documentation of GMP::Z.
* Started documentation of GMP::Q.
* Tests now for GMP::Q.to_s.
* Unit test results: 84 tests, 1378 assertions, 0 failures, 0 errors
* Unit test results: 74 tests, 719 assertions, 0 failures, 0 errors (w/o MPFR)
0.4.3:
* Support for MPFR on Windows introduced. gmp-x86-mswin32 gem should be used.
* Removed compilation warnings when using MPFR
* Added constants GMP::GMP_CC, GMP::GMP_CFLAGS, and GMP::GMP_BITS_PER_LIMB.
* Added constant GMP::MPFR_VERSION.
* Added MPFR rounding constants. These will be changed soon though.
* Added MPFR tests adapted straight from the MPFR library, just tsqrt so far.
* Added 3x MPFR functions: sec(), csc(), cot().
* Added function existence tests
* Unit test results: 78 tests, 1025 assertions, 0 failures, 0 errors
* Unit test results: 72 tests, 593 assertions, 0 failures, 0 errors (w/o MPFR)
0.4.1:
* Fixed some gem dates
* Fixed gmp.so in x86-mswin32 gem
* Added urandomm(), documentation, and tests.
* Unit test results: 70 tests, 577 assertions, 0 failures, 0 errors
0.4.0:
* Support for Windows introduced. gmp-x86-mswin32 gem should be used.
* All tests should pass under Windows.
* Support for Windows in benchmark started. Still buggy.
* Added tests for GMP::Z.gcd.
* Added tests for GMP::Z.invert.
* Added tests for GMP::RandState (seed, urandomb).
* Added documentation for GMP::Z.gcd.
* Added documentation for GMP::Z.invert.
* Added documentation for GMP::RandState (new, seed, urandomb).
* Cleaned up documentation (fixed GMP :: Z spacings).
* Added benchmark/gcd
* Unit test results: 69 tests, 533 assertions, 0 failures, 0 errors
0.2.11:
* Added GMP::Z.gcd. _not_ tested or documented.
* Added GMP::Z.invert. _not_ tested or documented.
* Added GMP::Z.sizeinbase and size_in_bin. _not_ tested or documented.
* benchmark/rsa is complete, assuming gcd and invert function properly.
0.2.10:
* Added GMP::Z.%. Tested. Documented.
* Beginning benchmark/rsa (it required %).
0.2.9:
* benchmark/ finally something.
* GMP::time and GMP::cputime introduced.
* GMP::RandState.new now supports different algorithms.
0.2.8:
* GMP::RandState introduced. urandomb supported.
* PDF documentation is extended.
0.2.2:
* GMP::Z.jacobi and GPM::Z#jacobi work and are tested.
* GMP::Z.legendre works and is tested.
* GMP::Z.next_prime is an alias for GMP::Z.nextprime.
* GMP::Z.next_prime! is an alias for GMP::Z.nextprime!.
* GMP::Z.remove works as it is supposed to.
* PDF documentation is extended.
0.2.1:
* Got GMP::F(Fixnum) working, (I think it already was).
* More and more documentation in PDF.
0.1.9:
* Cleaning up more documentation in PDF format.
0.1.8:
* Added test: tc_division, in progress.
* Unit test results: 56 tests, 361 assertions, 0 failures, 0 errors
* Added to_f ==> to_d aliases for GMP::Q and GMP::F.
0.1.7:
* Added tests: tc_shifts_last_bits, tc_logical_roots, tc_f_precision,
tc_f_arithmetics_coersion, tc_default_prec
* Unit test results: 54 tests, 326 assertions, 0 failures, 0 errors
* Fixed defect in GMP::F.sub when argument is Bignum
* Fixed defect in GMP::F.div when argument is Bignum
* Added documentation "manual" in form of a LaTeX-based PDF. Very incomplete
* as of yet.
0.1.6.2:
* Added optional argument to GMP::Z.to_s. Supply base as either a Fixnum or
a Symbol like :hex to get the string in a different base.
0.1.6:
* Tested on OS X 10.5.8 with Ruby 1.9.1. It's a go!
* Tested on LinuxMint 7 with Ruby 1.8.7. It's a go! Ping me if you have Linux
problems.
* Added documentation.
* Cleaned up source.
* Added tests: tc_swap, tc_floor_ceil_truncate, tc_to_i_to_d
0.1.5:
* Merged in reorg changes: Files like gmpz.c allow for documenting the C
extension methods.
* A good portion of the documentation has been written, may not be included
yet, but can be generated with
rdoc README.rdoc ext/*.c ext/*.h
0.1.4:
* Fixed a lot of gemspec problems
* Many more tests
* Tested on OS X 10.5.8
0.1.1:
* Attempting to revitalize through GitHub
* no changes to code yet
* modernizing files, eg with new ruby standards, towards a gem
1.0:
* MPFR support
* better string conversion
* Debian package
alpha9:
* more GMP::F code
* GMP::Z division
alpha8:
* various minor changes
alpha7:
* more GMP::F code
alpha6:
* basic support for GMP::F
* various minor changes