]> www.ginac.de Git - cln.git/blob - NEWS
Document a broken version of GNU make.
[cln.git] / NEWS
1 2002-01-04, version 1.1.4
2 =========================
3
4 Other changes
5 -------------
6
7 * Fix compilation issues with GMP-4.0 and on IBM s390.
8
9 * Updated infrastructure to autoconf-2.52.
10
11
12 2001-11-05, version 1.1.3
13 =========================
14
15 Implementation changes
16 ----------------------
17
18 * Fix a computation error of sin and sinh for small arguments.
19   (Reported by Christopher Kennedy.)
20
21 * Module ordering works with gcc-3.0 -fuse-cxa-atexit now.
22
23 * -DNO_ASM works properly on Sparc.
24
25
26 2001-07-25, version 1.1.2
27
28 Implementation changes
29 ----------------------
30
31 * Minor cleanups and portability issues.
32   (No need to upgrade if you have been happy so far.)
33
34
35 2001-05-31, version 1.1.1
36 =========================
37
38 Implementation changes
39 ----------------------
40
41 * Minor cleanups for GCC 3.0 and libstdc++-v3.
42
43 * Fixes several little bugs and portability issues.
44
45
46 2000-12-14, version 1.1.0
47 =========================
48
49 Functional changes
50 ------------------
51
52 * ISO/IEC 14882 fashion adjustments:
53   Put everything into namespace cln.  All fundamental data types still
54   carry their old names.  Other non-macro identifiers are now written as 
55   cln::foo instead of cl_foo, except where the cl_ comes from a data type
56   (as in cl_I_to_int()).  Headers are installed into a separate
57   directory, #include <cln/foo.h> instead of <cl_foo.h>.  Applications
58   must be manually ported to the new style.  We apologize for the
59   inconvenience.
60
61 Implementation changes
62 ----------------------
63
64 * Removed internal copy of mpn subdirectory tree from libgmp-2.0.2.
65   Configuring with --with-gmp now relies on an installed libgmp library
66   version 3 or above.  We recommend libgmp-3.1 or newer.
67
68 * Adjusted several break-even points to make better use of a faster libgmp and
69   better match present-day CPUs.
70
71 * Fix several errors for architectures with 64-bit wide words.
72   (Others than Alpha, which worked already.)
73
74 * Fix compilation errors with current GCC-3.0 snapshots.
75
76 Other changes
77 -------------
78
79 * Added package tools: script cln-config and autoconf macro AC_PATH_CLN
80   (in file cln.m4).
81
82
83 2000-01-13, version 1.0.3
84 =========================
85
86 Functional changes
87 ------------------
88
89 * New function
90   `cl_I doublefactorial (uintL n)'.
91
92 Implementation changes
93 ----------------------
94
95 * Fix several little configuration errors.
96
97 * Fix some compilation errors with gcc-2.96 prereleases.
98
99
100 1999-09-07, version 1.0.2
101 =========================
102
103 Functional changes
104 ------------------
105
106 * New functions
107   `cl_I numerator (const cl_RA&)'
108   `cl_I denominator (const cl_RA&)'.
109   Suggested by Richard Kreckel and Sylvain Pion.
110
111 * New function `cl_equal_hashcode' for the classes cl_N, cl_R, cl_RA, cl_I,
112   cl_F, cl_SF, cl_FF, cl_DF, cl_LF.
113   Suggested by Richard Kreckel.
114
115 Implementation changes
116 ----------------------
117
118 * Fix an endless loop when either of the functions
119   `cl_boolean rootp (const cl_RA&, uintL, cl_RA*)',
120   `cl_boolean rootp (const cl_RA&, const cl_I&, cl_RA*)'
121   was called with an integer argument. Thanks to Richard Kreckel.
122
123 * Fix a bug in the addition and subtraction of rational numbers which could
124   cause unnormalized rational numbers like 3/1 to be created.
125
126
127 1999-06-09, version 1.0.1
128 =========================
129
130 Algorithmic changes
131 -------------------
132
133 * Speed up the functions `logand', `lognand', `logandc2'.
134
135 Implementation changes
136 ----------------------
137
138 * Fix compilation errors with gcc-2.7.2, egcs-1.1.2 and gcc-2.95.
139
140 * Fix compilation errors on HPPA, MIPS, some versions of DEC Alpha, OpenBSD,
141   and SPARC with LiDIA.
142
143 * Fix compilation errors on Win32. Thanks to Mumit Khan.
144
145
146 1999-01-12, version 1.0
147 =======================
148
149 Functional changes
150 ------------------
151
152 * New include files, containing I/O functions:
153     <cl_integer_io.h>
154     <cl_rational_io.h>
155     <cl_float_io.h>
156     <cl_sfloat_io.h> <cl_ffloat_io.h> <cl_dfloat_io.h> <cl_lfloat_io.h>
157     <cl_real_io.h>
158     <cl_complex_io.h>
159   The file <cl_io.h> now contains only I/O functions for characters and
160   C integers.
161
162 * To access the base ring of a univariate polynomial ring, now use
163   `R->basering()' instead of `R->basering'.
164
165 * Implement `plusp', `max', `min' for the classes cl_F, cl_SF, cl_FF, cl_DF,
166   cl_LF, cl_RA, cl_I.
167
168 * Implement `abs' for the class cl_RA.
169
170 * Replaced `read_number' with specialized functions `read_complex',
171   `read_real', `read_float', `read_rational', `read_integer'.
172
173 * Replaced the functions
174   `void fprint (cl_ostream stream, int x)'
175   `void fprint (cl_ostream stream, unsigned int x)'
176   `void fprint (cl_ostream stream, long x)'
177   `void fprint (cl_ostream stream, unsigned long x)'
178   with
179   `void fprintdecimal (cl_ostream stream, int x)'
180   `void fprintdecimal (cl_ostream stream, unsigned int x)'
181   `void fprintdecimal (cl_ostream stream, long x)'
182   `void fprintdecimal (cl_ostream stream, unsigned long x)'
183
184 Algorithmic changes
185 -------------------
186
187 * The function `cl_I xgcd (const cl_I& a, const cl_I& b, cl_I* u, cl_I* v)'
188   now normalizes the resulting u and v to be of minimum absolute value.
189   (Suggested by the LiDIA group.)
190
191 * The conversion from string to cl_F, cl_R, cl_N now chooses the format of
192   the resulting float depending on the number of significant digits present
193   in the input string.
194
195 * Speed up the functions
196   `cl_R operator* (const cl_RA&, const cl_LF&)'
197   `cl_R operator* (const cl_LF&, const cl_RA&)'
198   `cl_R operator/ (const cl_RA&, const cl_LF&)'
199   `cl_LF operator/ (const cl_LF&, const cl_RA&)'
200
201 Implementation changes
202 ----------------------
203
204 * Fix for `cl_I ash (const cl_I& x, const cl_I& n)' when |n| is between
205   2^29 and 2^37.
206   (Reported by Thomas Papanikolaou.)
207
208 * Fixed a memory leak in the long-float truncate function.
209   (Reported by Keith Briggs.)
210
211 * Fixed a memory leak in the modular integer exponentiation.
212
213 * Reduced the stack space consumption. The default stack size (typically
214   8 MB on Unix) should now be sufficient in order to run all CLN programs.
215
216 * Portability fixes for m68k platforms.
217   (Reported and fixed by Roman Hodek.)
218
219 Other changes
220 -------------
221
222 * Restructured the sources. The subpackages
223     - base
224     - base + integer
225     - base + integer + rational
226     - base + integer + rational + float
227     - base + integer + rational + float + real
228     - base + integer + rational + float + real + complex
229     - base + integer + modinteger
230   are now self-contained.
231
232 * The configuration script can be called with option `--enable-shared',
233   to build CLN as a shared library.
234
235 * Updated the LiDIA interface.
236
237
238 1998-05-07, version 0.98
239 ========================
240
241 Implementation changes
242 ----------------------
243
244 * Portability fixes for 64-bit platforms like DEC Alpha.
245   (Reported by John Cremona and Thomas Papanikolaou.)
246
247
248 1998-02-27
249 ==========
250
251 Other changes
252 -------------
253
254 * Portability fixes for new ISO/ANSI C++ compilers.
255
256 * Updated the LiDIA interface for LiDIA version 1.3 and fixed a couple of
257   bugs.
258
259
260 1997-09-06
261 ==========
262
263 Implementation changes
264 ----------------------
265
266 * Portability fix for i686 platforms.
267   (Reported by Michael Pfeifer.)
268
269
270 1997-09-01
271 ==========
272
273 Functional changes
274 ------------------
275
276 * New include files:
277   <cl_ring.h>, declaring general rings,
278   <cl_GV.h>, <cl_SV.h>, defining vectors,
279   <cl_univpoly.h>, defining univariate polynomial rings.
280
281 Algorithmic changes
282 -------------------
283
284 * Speed up the internal computation of ln(2) and ln(10) by about 20%.
285
286 * Speed up the computation of exp (for 1000 digits or more) by about 10%.
287
288 Implementation changes
289 ----------------------
290
291 * Portability fix for 64-bit platforms like DEC Alpha:
292   Fixed a bug: endless loop in `sqrt' for large precision.
293   (Reported by Blake Jones.)
294
295 * Portability fix for RS/6000 platforms.
296
297
298 1997-02-21
299 ==========
300
301 Algorithmic changes
302 -------------------
303
304 * Speed up the computation of the elementary transcendental functions:
305   exp, sinh, cosh, asinh, atanh (for 100 digits) by about 30%,
306   log (for 100 digits) by about 25%,
307   sin, cos (for 1000 or 10000 digits) by about 20%,
308   asin, acos, atan (for 1000 digits) by about 25%.
309
310 Implementation changes
311 ----------------------
312
313 * Portability fix for SunOS 4 and other BSD platforms.
314
315
316 1997-01-31
317 ==========
318
319 Algorithmic changes
320 -------------------
321
322 * Fixed a bug: endless recursion in `cl_boolean sqrtp (const cl_RA&, cl_RA*)'.
323
324 * Fixed a bug: Only the first 85% of the digits returned by `cl_eulerconst'
325   for moderate precision (< 11370 digits) were correct.
326   (Reported by Thomas Papanikolaou.)
327
328 Implementation changes
329 ----------------------
330
331 * Fix static initialization order bug. Requires g++ 2.7.0 or newer
332   (g++ 2.8.0 or newer on HPPA).
333
334 * New method `debug_print()', for pretty printing of CLN objects, intended
335   to be called from the debugger.
336
337
338 1997-01-07
339 ==========
340
341 Functional changes
342 ------------------
343
344 * New functions `float cl_float_approx (const cl_R&)',
345                 `double cl_double_approx (const cl_R&)'
346   for converting a real number to a C `float' or `double'.
347
348 Algorithmic changes
349 -------------------
350
351 * Speed up `cl_zeta' using Cohen-Villegas-Zagier convergence acceleration.
352
353 Implementation changes
354 ----------------------
355
356 * New function `cl_print', for pretty printing of CLN objects, intended to be
357   called from the debugger.
358
359 * Portability fixes for 64-bit platforms like DEC Alpha.
360
361
362 1996-11-29
363 ==========
364
365 Functional changes
366 ------------------
367
368 * New include files:
369   <cl_string.h>, defining strings,
370   <cl_symbol.h>, defining symbols,
371   <cl_proplist.h>, defining property lists,
372   <cl_condition.h>, defining conditions/exceptions.
373
374 * New functions `cl_F cl_catalanconst ()',
375                 `cl_F cl_catalanconst (const cl_F&)',
376                 `cl_F cl_catalanconst (cl_float_format_t)'
377   which return Catalan's constant.
378   (Suggested by Thomas Papanikolaou.)
379
380 * New functions `cl_F cl_zeta (int s)',
381                 `cl_F cl_zeta (int s, const cl_F&)',
382                 `cl_F cl_zeta (int s, cl_float_format_t)'
383   which return the Riemann zeta function at an integral point s>1.
384
385 * New functions `cl_F cl_exp1 ()',
386                 `cl_F cl_exp1 (const cl_F&)',
387                 `cl_F cl_exp1 (cl_float_format_t)'
388   which return e = exp(1).
389
390 * New function `cl_I binomial (uintL n, uintL k)' which returns the
391   binomial coefficient (n choose k).
392
393 * New functions `int cl_I_to_int (const cl_I&)',
394        `unsigned int cl_I_to_uint (const cl_I&)',
395                 `long cl_I_to_long (const cl_I&)',
396        `unsigned long cl_I_to_ulong (const cl_I&)'
397   for converting an integer to a C `int' or `long'.
398
399 * New functions `float cl_float_approx (const cl_I&)',
400                 `float cl_float_approx (const cl_RA&)',
401                 `double cl_double_approx (const cl_I&)',
402                 `double cl_double_approx (const cl_RA&)'
403   for converting a rational number to a C `float' or `double'.
404
405 Implementation changes
406 ----------------------
407
408 * Moved the sources to subdirectories.
409   (Suggested by Jörg Arndt.)
410
411 Other changes
412 -------------
413
414 * New benchmark for better comparing LiDIA, Pari and CLN.
415
416 * Added an interface to LiDIA, allows using CLN as a replacement of libI.
417   (Suggested by Thomas Papanikolaou.)
418
419 * Added an ILOG Talk interface, for interactive use of the library.
420
421
422 1996-10-13
423 ==========
424
425 Functional changes
426 ------------------
427
428 * New include file <cl_modinteger.h>, defining modular integer rings.
429
430 * New functions `cl_F cl_eulerconst ()', `cl_F cl_eulerconst (const cl_F&)',
431   `cl_F cl_eulerconst (cl_float_format_t)' which return Euler's constant.
432
433 Algorithmic changes
434 -------------------
435
436 * Speed up square root of large numbers by use of Newton's algorithm.
437
438 * Speed up multiplication and division of large long-floats by small integers.
439
440 * Speed up the computation of pi, e, exp, log, sin, cos, tan, sinh, cosh, tanh,
441   asin, acos, atan, asinh, acosh, atanh.
442   All of them are now computed with asymptotically fast algorithms, of
443   bit complexity O(log(N)^2*M(N)) = O(N^(1+epsilon)) for N digits.
444
445 * Fixed several bugs in the transcendental functions routines. In particular,
446   the `log' function went into an endless loop.
447
448 * Fixed a bug: The cl_I -> cl_DF and cl_I -> cl_LF conversions didn't work
449   correctly for negative integers.
450
451
452 1996-09-08
453 ==========
454
455 Functional changes
456 ------------------
457
458 * New include file <cl_numtheory.h>, containing number theoretic functions,
459   for now only the Jacobi symbol.
460
461 Algorithmic changes
462 -------------------
463
464 * Speed up squaring of large numbers by 30%.
465
466 * Speed up division of large numbers by use of Newton's algorithm. The
467   improvement is noticeable for numbers with at least about 1000 words =
468   32000 bits = 10000 decimal digits.
469
470 * Speed up the binary-to-decimal conversion of large numbers by use of
471   a divide-and-conquer method. The improvement is noticeable for numbers
472   of at least 1250 words = 40000 bits = 12000 decimal digits.
473
474 * Fixed a bug: The functions `cl_boolean minusp (const type&)' and
475   `cl_boolean zerop (const type&)' were missing for type=cl_I and type=cl_RA.
476
477 * Fixed a bug: The function `cl_boolean logtest (const cl_I&, const cl_I&)'
478   didn't work correctly if both arguments were bignums.
479
480 * Fixed a bug: The function `cl_I mod (const cl_I&, const cl_I&)', when called
481   as `mod(-n*m,m)' (n>0), returned m instead of 0.
482
483 * Fixed a bug: The function `uintL power2p (const cl_I&)' returned wrong
484   values for arguments x = 2^n, n >= 29.
485
486 Implementation changes
487 ----------------------
488
489 * Speed up CLN by using the low-level addition/subtraction, shift and
490   multiplication loops from GNU gmp-2.0.2.
491
492 * Fixed a severe reference counting bug in the constructors
493   `type::type (const long)' and `type::type (const unsigned long)'
494   for type=cl_number, type=cl_N, type=cl_RA, type=cl_I that most often
495   caused a core dump.
496
497 * CLN's word sequences can be chosen to be stored big-endian in memory
498   (like it was up to now) or little-endian (needed for interfacing to GMP).
499
500
501 1996-05-20
502 ==========
503
504 Functional changes
505 ------------------
506
507 * New include file <cl_timing.h>, contains timing facilities.
508
509 Algorithmic changes
510 -------------------
511
512 * Speed up the multiplication of large numbers by use of an FFT based
513   algorithm (Schönhage-Strassen). The improvement is noticeable when both
514   factors have at least 1250 words = 40000 bits = 12000 decimal digits.
515
516 * Speed up the functions `cl_I gcd (const cl_I&, const cl_I&)' and
517   `cl_I xgcd (const cl_I&, const cl_I&, cl_I*, cl_I*)' by a factor
518   of 1.5. Simple trick.
519
520 * Speed up the function `cl_boolean sqrtp (const cl_I&, cl_I*)' using a
521   trick from Henri Cohen.
522
523 * Fixed an endless loop in the function `uint32 gcd (uint32, uint32)'
524   which occurred when one of the arguments is zero.
525
526 * Fixed an endless loop in the function `cl_I factorial (uintL)'.
527
528 Implementation changes
529 ----------------------
530
531 * <cl_io.h> now uses iostreams by default instead of stdio FILE pointers.
532   (Reported by Tito Flagella.)
533
534 * Fixed linking error when compiling without -O.
535   (Reported by Tito Flagella.)
536
537 * Fixed syntax error in <cl_input.h>.
538   (Reported by Tito Flagella.)
539
540 * Fixed syntax errors in src/cl_DS.h and src/cl_FF_plus.h.
541   (Reported by Marcus Daniels.)
542
543 * More portability fixes.
544
545 * Configuration now supports the --srcdir option.
546   (Reported by Marcus Daniels.)
547
548
549 1996-01-03
550 ==========
551
552 * Compiles well on Sparc, using gcc.
553
554 * Mail to beta testers.
555
556
557 1995-12-06
558 ==========
559
560 * Compiles well on Linux, using gcc.
561