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