]> www.ginac.de Git - cln.git/blob - NEWS
3d80d26f672447f5f338297d11b9799dc61f3976
[cln.git] / NEWS
1 2009-xx-xx, version 1.3.0
2 =========================
3
4 Other changes
5 -------------
6
7 * Implemented a more portable module dependency mechanism.
8
9
10 2008-04-05, version 1.2.2
11 =========================
12
13 Implementation changes
14 ----------------------
15
16 * Re-establish CLN-1.2.0 ABI and fix ARM build, both inadvertently broken in
17   the previous release.
18
19
20 2008-03-24, version 1.2.1
21 =========================
22
23 Implementation changes
24 ----------------------
25
26 * Fixed some bugs in the output of numbers larger than 2^32 decimal digits.
27
28 Other changes
29 -------------
30
31 * Modifying C/C++ operators like +=, ++, etc. are now enabled by default.
32
33
34 2008-01-19, version 1.2.0
35 =========================
36
37 Algorithmic changes
38 -------------------
39
40 * Save big amounts of memory in computation of some functions and constants by:
41     - Avoiding pre-computation of series terms and instead computing them in a
42       streamed way.
43     - Avoiding computation with excess precision in binary splitting algorithm
44       by coercion of intermediate integer values to floating-point as early as
45       possible.
46
47 Implementation changes
48 ----------------------
49
50 * Added support for huge numbers:
51     - intC used for all counter loops.
52     - intE is now a 64-bit type on all 64-bit platforms and even on selected
53       32-bit platforms.
54
55 * CLN now uses C++ exceptions for error handling. The cl_abort() hook is not
56   supported any more. Please refer to the documentation to learn about existing
57   exception types.
58
59 * Fixed a bug on i386 where comparing Z/2Z ring zeros returnd random results.
60
61 * Removed cl_boolean. Use built-in C++ bool instead.
62
63 Other changes
64 -------------
65
66 * Dropped the cln-config script. Please use pkg-config instead.
67
68 * Updated infrastructure to that of libtool-1.5.24.
69
70 * Changed encoding of all files to UTF-8.
71
72 * Fix compilation issues with GCC-4.3.
73
74 * Fix linking issues on platforms that don't feature weak symbols (like win32).
75
76
77 2006-08-08, version 1.1.13
78 ==========================
79
80 * Compilation fixes for 64-bit brokenness introduced in last release.
81
82
83 2006-08-06, version 1.1.12
84 ==========================
85
86 Implementation changes
87 ----------------------
88
89 * Fix rare assertion when printing quite large floats.
90
91 Other changes
92 -------------
93
94 * Compilation fixes for several platforms: *BSD, Intel Mac, and MinGW.
95
96
97 2005-11-23, version 1.1.11
98 ==========================
99
100 Algorithmic changes
101 -------------------
102
103 * Considerably improved performance of number input.
104
105
106 2005-10-22, version 1.1.10
107 ==========================
108
109 Implementation changes
110 ----------------------
111
112 * Removed the vptr of modular integer and univariate polynomial
113   classes in order to fix some crashes in that sector of CLN.  Code
114   using this needs to be recompiled.
115
116 * Many more operator signatures make the integration of CLN types with
117   float/double easier.
118
119 Other changes
120 -------------
121
122 * Several compilation fixes.
123
124 * Made it possible to cross-compile CLN.
125
126
127 2004-11-03, version 1.1.9
128 =========================
129
130 Algorithmic changes
131 -------------------
132
133 * Input of numbers in bases 2, 4, 8, 16 and 32 is now done in linear bit
134   complexity as opposed to O(N^2). Useful for all kinds of persistency.
135
136 Implementation changes
137 ----------------------
138
139 * Fixed several bugs in the integer input and output routines that could be
140   blamed for random crashes in the following cases: output in base 32 for
141   quite large numbers, input in base 2 for fixnums and input in base 3 for
142   fixnums on a 64 bit target.
143
144 * Fixed crash when radix specifiers were used in input streams.
145
146 * Speed up on x86_64 and ia64 by adding some inline assembly.
147
148 Other changes
149 -------------
150
151 * Fixes for compilation on MacOS X and little endian Mips.
152
153
154 2004-07-01, version 1.1.8
155 =========================
156
157 Implementation changes
158 ----------------------
159
160 * Fix bug in log(a,b) when b is 1/n.
161
162 * Fix crash in shared library on AMD64.
163
164 Other changes
165 -------------
166
167 * Fixes for some language conformance issues.
168
169
170 2004-05-02, version 1.1.7
171 =========================
172
173 Implementation changes
174 ----------------------
175
176 * Fixed two corner case bugs in cl_LF multiplication and sqrt.
177
178 * Workaround GCC 3.[123] compiler bug.
179
180 * Parallel build should work reliably now.
181
182
183 2004-01-01, version 1.1.6
184 =========================
185
186 Functional changes
187 ------------------
188
189 * New function
190   `sintL ldegree(const cl_UP& x)'.
191   (Suggested by Munagala Ramanath.)
192
193 Implementation changes
194 ----------------------
195
196 * Fixed a bug in polynomial subtraction.
197   (Reported by Munagala Ramanath.)
198
199 Other changes
200 -------------
201
202 * Provide a package control file cln.pc.
203
204 * Updated infrastructure to autoconf-2.57.
205
206 * Fixed compilation issues with GCC-3.4 prereleases and on Mac OSX.
207
208
209 2002-05-28, version 1.1.5
210 =========================
211
212 Other changes
213 -------------
214
215 * Fix compilation issues with GCC-3.1.
216
217
218 2002-01-04, version 1.1.4
219 =========================
220
221 Other changes
222 -------------
223
224 * Fix compilation issues with GMP-4.0 and on IBM s390.
225
226 * Updated infrastructure to autoconf-2.52.
227
228
229 2001-11-05, version 1.1.3
230 =========================
231
232 Implementation changes
233 ----------------------
234
235 * Fix a computation error of sin and sinh for small arguments.
236   (Reported by Christopher Kennedy.)
237
238 * Module ordering works with gcc-3.0 -fuse-cxa-atexit now.
239
240 * -DNO_ASM works properly on Sparc.
241
242
243 2001-07-25, version 1.1.2
244
245 Implementation changes
246 ----------------------
247
248 * Minor cleanups and portability issues.
249   (No need to upgrade if you have been happy so far.)
250
251
252 2001-05-31, version 1.1.1
253 =========================
254
255 Implementation changes
256 ----------------------
257
258 * Minor cleanups for GCC 3.0 and libstdc++-v3.
259
260 * Fixes several little bugs and portability issues.
261
262
263 2000-12-14, version 1.1.0
264 =========================
265
266 Functional changes
267 ------------------
268
269 * ISO/IEC 14882 fashion adjustments:
270   Put everything into namespace cln.  All fundamental data types still
271   carry their old names.  Other non-macro identifiers are now written as 
272   cln::foo instead of cl_foo, except where the cl_ comes from a data type
273   (as in cl_I_to_int()).  Headers are installed into a separate
274   directory, #include <cln/foo.h> instead of <cl_foo.h>.  Applications
275   must be manually ported to the new style.  We apologize for the
276   inconvenience.
277
278 Implementation changes
279 ----------------------
280
281 * Removed internal copy of mpn subdirectory tree from libgmp-2.0.2.
282   Configuring with --with-gmp now relies on an installed libgmp library
283   version 3 or above.  We recommend libgmp-3.1 or newer.
284
285 * Adjusted several break-even points to make better use of a faster libgmp and
286   better match present-day CPUs.
287
288 * Fix several errors for architectures with 64-bit wide words.
289   (Others than Alpha, which worked already.)
290
291 * Fix compilation errors with current GCC-3.0 snapshots.
292
293 Other changes
294 -------------
295
296 * Added package tools: script cln-config and autoconf macro AC_PATH_CLN
297   (in file cln.m4).
298
299
300 2000-01-13, version 1.0.3
301 =========================
302
303 Functional changes
304 ------------------
305
306 * New function
307   `cl_I doublefactorial (uintL n)'.
308
309 Implementation changes
310 ----------------------
311
312 * Fix several little configuration errors.
313
314 * Fix some compilation errors with gcc-2.96 prereleases.
315
316
317 1999-09-07, version 1.0.2
318 =========================
319
320 Functional changes
321 ------------------
322
323 * New functions
324   `cl_I numerator (const cl_RA&)'
325   `cl_I denominator (const cl_RA&)'.
326   Suggested by Richard Kreckel and Sylvain Pion.
327
328 * New function `cl_equal_hashcode' for the classes cl_N, cl_R, cl_RA, cl_I,
329   cl_F, cl_SF, cl_FF, cl_DF, cl_LF.
330   Suggested by Richard Kreckel.
331
332 Implementation changes
333 ----------------------
334
335 * Fix an endless loop when either of the functions
336   `cl_boolean rootp (const cl_RA&, uintL, cl_RA*)',
337   `cl_boolean rootp (const cl_RA&, const cl_I&, cl_RA*)'
338   was called with an integer argument. Thanks to Richard Kreckel.
339
340 * Fix a bug in the addition and subtraction of rational numbers which could
341   cause unnormalized rational numbers like 3/1 to be created.
342
343
344 1999-06-09, version 1.0.1
345 =========================
346
347 Algorithmic changes
348 -------------------
349
350 * Speed up the functions `logand', `lognand', `logandc2'.
351
352 Implementation changes
353 ----------------------
354
355 * Fix compilation errors with gcc-2.7.2, egcs-1.1.2 and gcc-2.95.
356
357 * Fix compilation errors on HPPA, MIPS, some versions of DEC Alpha, OpenBSD,
358   and SPARC with LiDIA.
359
360 * Fix compilation errors on Win32. Thanks to Mumit Khan.
361
362
363 1999-01-12, version 1.0
364 =======================
365
366 Functional changes
367 ------------------
368
369 * New include files, containing I/O functions:
370     <cl_integer_io.h>
371     <cl_rational_io.h>
372     <cl_float_io.h>
373     <cl_sfloat_io.h> <cl_ffloat_io.h> <cl_dfloat_io.h> <cl_lfloat_io.h>
374     <cl_real_io.h>
375     <cl_complex_io.h>
376   The file <cl_io.h> now contains only I/O functions for characters and
377   C integers.
378
379 * To access the base ring of a univariate polynomial ring, now use
380   `R->basering()' instead of `R->basering'.
381
382 * Implement `plusp', `max', `min' for the classes cl_F, cl_SF, cl_FF, cl_DF,
383   cl_LF, cl_RA, cl_I.
384
385 * Implement `abs' for the class cl_RA.
386
387 * Replaced `read_number' with specialized functions `read_complex',
388   `read_real', `read_float', `read_rational', `read_integer'.
389
390 * Replaced the functions
391   `void fprint (cl_ostream stream, int x)'
392   `void fprint (cl_ostream stream, unsigned int x)'
393   `void fprint (cl_ostream stream, long x)'
394   `void fprint (cl_ostream stream, unsigned long x)'
395   with
396   `void fprintdecimal (cl_ostream stream, int x)'
397   `void fprintdecimal (cl_ostream stream, unsigned int x)'
398   `void fprintdecimal (cl_ostream stream, long x)'
399   `void fprintdecimal (cl_ostream stream, unsigned long x)'
400
401 Algorithmic changes
402 -------------------
403
404 * The function `cl_I xgcd (const cl_I& a, const cl_I& b, cl_I* u, cl_I* v)'
405   now normalizes the resulting u and v to be of minimum absolute value.
406   (Suggested by the LiDIA group.)
407
408 * The conversion from string to cl_F, cl_R, cl_N now chooses the format of
409   the resulting float depending on the number of significant digits present
410   in the input string.
411
412 * Speed up the functions
413   `cl_R operator* (const cl_RA&, const cl_LF&)'
414   `cl_R operator* (const cl_LF&, const cl_RA&)'
415   `cl_R operator/ (const cl_RA&, const cl_LF&)'
416   `cl_LF operator/ (const cl_LF&, const cl_RA&)'
417
418 Implementation changes
419 ----------------------
420
421 * Fix for `cl_I ash (const cl_I& x, const cl_I& n)' when |n| is between
422   2^29 and 2^37.
423   (Reported by Thomas Papanikolaou.)
424
425 * Fixed a memory leak in the long-float truncate function.
426   (Reported by Keith Briggs.)
427
428 * Fixed a memory leak in the modular integer exponentiation.
429
430 * Reduced the stack space consumption. The default stack size (typically
431   8 MB on Unix) should now be sufficient in order to run all CLN programs.
432
433 * Portability fixes for m68k platforms.
434   (Reported and fixed by Roman Hodek.)
435
436 Other changes
437 -------------
438
439 * Restructured the sources. The subpackages
440     - base
441     - base + integer
442     - base + integer + rational
443     - base + integer + rational + float
444     - base + integer + rational + float + real
445     - base + integer + rational + float + real + complex
446     - base + integer + modinteger
447   are now self-contained.
448
449 * The configuration script can be called with option `--enable-shared',
450   to build CLN as a shared library.
451
452 * Updated the LiDIA interface.
453
454
455 1998-05-07, version 0.98
456 ========================
457
458 Implementation changes
459 ----------------------
460
461 * Portability fixes for 64-bit platforms like DEC Alpha.
462   (Reported by John Cremona and Thomas Papanikolaou.)
463
464
465 1998-02-27
466 ==========
467
468 Other changes
469 -------------
470
471 * Portability fixes for new ISO/ANSI C++ compilers.
472
473 * Updated the LiDIA interface for LiDIA version 1.3 and fixed a couple of
474   bugs.
475
476
477 1997-09-06
478 ==========
479
480 Implementation changes
481 ----------------------
482
483 * Portability fix for i686 platforms.
484   (Reported by Michael Pfeifer.)
485
486
487 1997-09-01
488 ==========
489
490 Functional changes
491 ------------------
492
493 * New include files:
494   <cl_ring.h>, declaring general rings,
495   <cl_GV.h>, <cl_SV.h>, defining vectors,
496   <cl_univpoly.h>, defining univariate polynomial rings.
497
498 Algorithmic changes
499 -------------------
500
501 * Speed up the internal computation of ln(2) and ln(10) by about 20%.
502
503 * Speed up the computation of exp (for 1000 digits or more) by about 10%.
504
505 Implementation changes
506 ----------------------
507
508 * Portability fix for 64-bit platforms like DEC Alpha:
509   Fixed a bug: endless loop in `sqrt' for large precision.
510   (Reported by Blake Jones.)
511
512 * Portability fix for RS/6000 platforms.
513
514
515 1997-02-21
516 ==========
517
518 Algorithmic changes
519 -------------------
520
521 * Speed up the computation of the elementary transcendental functions:
522   exp, sinh, cosh, asinh, atanh (for 100 digits) by about 30%,
523   log (for 100 digits) by about 25%,
524   sin, cos (for 1000 or 10000 digits) by about 20%,
525   asin, acos, atan (for 1000 digits) by about 25%.
526
527 Implementation changes
528 ----------------------
529
530 * Portability fix for SunOS 4 and other BSD platforms.
531
532
533 1997-01-31
534 ==========
535
536 Algorithmic changes
537 -------------------
538
539 * Fixed a bug: endless recursion in `cl_boolean sqrtp (const cl_RA&, cl_RA*)'.
540
541 * Fixed a bug: Only the first 85% of the digits returned by `cl_eulerconst'
542   for moderate precision (< 11370 digits) were correct.
543   (Reported by Thomas Papanikolaou.)
544
545 Implementation changes
546 ----------------------
547
548 * Fix static initialization order bug. Requires g++ 2.7.0 or newer
549   (g++ 2.8.0 or newer on HPPA).
550
551 * New method `debug_print()', for pretty printing of CLN objects, intended
552   to be called from the debugger.
553
554
555 1997-01-07
556 ==========
557
558 Functional changes
559 ------------------
560
561 * New functions `float cl_float_approx (const cl_R&)',
562                 `double cl_double_approx (const cl_R&)'
563   for converting a real number to a C `float' or `double'.
564
565 Algorithmic changes
566 -------------------
567
568 * Speed up `cl_zeta' using Cohen-Villegas-Zagier convergence acceleration.
569
570 Implementation changes
571 ----------------------
572
573 * New function `cl_print', for pretty printing of CLN objects, intended to be
574   called from the debugger.
575
576 * Portability fixes for 64-bit platforms like DEC Alpha.
577
578
579 1996-11-29
580 ==========
581
582 Functional changes
583 ------------------
584
585 * New include files:
586   <cl_string.h>, defining strings,
587   <cl_symbol.h>, defining symbols,
588   <cl_proplist.h>, defining property lists,
589   <cl_condition.h>, defining conditions/exceptions.
590
591 * New functions `cl_F cl_catalanconst ()',
592                 `cl_F cl_catalanconst (const cl_F&)',
593                 `cl_F cl_catalanconst (cl_float_format_t)'
594   which return Catalan's constant.
595   (Suggested by Thomas Papanikolaou.)
596
597 * New functions `cl_F cl_zeta (int s)',
598                 `cl_F cl_zeta (int s, const cl_F&)',
599                 `cl_F cl_zeta (int s, cl_float_format_t)'
600   which return the Riemann zeta function at an integral point s>1.
601
602 * New functions `cl_F cl_exp1 ()',
603                 `cl_F cl_exp1 (const cl_F&)',
604                 `cl_F cl_exp1 (cl_float_format_t)'
605   which return e = exp(1).
606
607 * New function `cl_I binomial (uintL n, uintL k)' which returns the
608   binomial coefficient (n choose k).
609
610 * New functions `int cl_I_to_int (const cl_I&)',
611        `unsigned int cl_I_to_uint (const cl_I&)',
612                 `long cl_I_to_long (const cl_I&)',
613        `unsigned long cl_I_to_ulong (const cl_I&)'
614   for converting an integer to a C `int' or `long'.
615
616 * New functions `float cl_float_approx (const cl_I&)',
617                 `float cl_float_approx (const cl_RA&)',
618                 `double cl_double_approx (const cl_I&)',
619                 `double cl_double_approx (const cl_RA&)'
620   for converting a rational number to a C `float' or `double'.
621
622 Implementation changes
623 ----------------------
624
625 * Moved the sources to subdirectories.
626   (Suggested by Jörg Arndt.)
627
628 Other changes
629 -------------
630
631 * New benchmark for better comparing LiDIA, Pari and CLN.
632
633 * Added an interface to LiDIA, allows using CLN as a replacement of libI.
634   (Suggested by Thomas Papanikolaou.)
635
636 * Added an ILOG Talk interface, for interactive use of the library.
637
638
639 1996-10-13
640 ==========
641
642 Functional changes
643 ------------------
644
645 * New include file <cl_modinteger.h>, defining modular integer rings.
646
647 * New functions `cl_F cl_eulerconst ()', `cl_F cl_eulerconst (const cl_F&)',
648   `cl_F cl_eulerconst (cl_float_format_t)' which return Euler's constant.
649
650 Algorithmic changes
651 -------------------
652
653 * Speed up square root of large numbers by use of Newton's algorithm.
654
655 * Speed up multiplication and division of large long-floats by small integers.
656
657 * Speed up the computation of pi, e, exp, log, sin, cos, tan, sinh, cosh, tanh,
658   asin, acos, atan, asinh, acosh, atanh.
659   All of them are now computed with asymptotically fast algorithms, of
660   bit complexity O(log(N)^2*M(N)) = O(N^(1+epsilon)) for N digits.
661
662 * Fixed several bugs in the transcendental functions routines. In particular,
663   the `log' function went into an endless loop.
664
665 * Fixed a bug: The cl_I -> cl_DF and cl_I -> cl_LF conversions didn't work
666   correctly for negative integers.
667
668
669 1996-09-08
670 ==========
671
672 Functional changes
673 ------------------
674
675 * New include file <cl_numtheory.h>, containing number theoretic functions,
676   for now only the Jacobi symbol.
677
678 Algorithmic changes
679 -------------------
680
681 * Speed up squaring of large numbers by 30%.
682
683 * Speed up division of large numbers by use of Newton's algorithm. The
684   improvement is noticeable for numbers with at least about 1000 words =
685   32000 bits = 10000 decimal digits.
686
687 * Speed up the binary-to-decimal conversion of large numbers by use of
688   a divide-and-conquer method. The improvement is noticeable for numbers
689   of at least 1250 words = 40000 bits = 12000 decimal digits.
690
691 * Fixed a bug: The functions `cl_boolean minusp (const type&)' and
692   `cl_boolean zerop (const type&)' were missing for type=cl_I and type=cl_RA.
693
694 * Fixed a bug: The function `cl_boolean logtest (const cl_I&, const cl_I&)'
695   didn't work correctly if both arguments were bignums.
696
697 * Fixed a bug: The function `cl_I mod (const cl_I&, const cl_I&)', when called
698   as `mod(-n*m,m)' (n>0), returned m instead of 0.
699
700 * Fixed a bug: The function `uintL power2p (const cl_I&)' returned wrong
701   values for arguments x = 2^n, n >= 29.
702
703 Implementation changes
704 ----------------------
705
706 * Speed up CLN by using the low-level addition/subtraction, shift and
707   multiplication loops from GNU gmp-2.0.2.
708
709 * Fixed a severe reference counting bug in the constructors
710   `type::type (const long)' and `type::type (const unsigned long)'
711   for type=cl_number, type=cl_N, type=cl_RA, type=cl_I that most often
712   caused a core dump.
713
714 * CLN's word sequences can be chosen to be stored big-endian in memory
715   (like it was up to now) or little-endian (needed for interfacing to GMP).
716
717
718 1996-05-20
719 ==========
720
721 Functional changes
722 ------------------
723
724 * New include file <cl_timing.h>, contains timing facilities.
725
726 Algorithmic changes
727 -------------------
728
729 * Speed up the multiplication of large numbers by use of an FFT based
730   algorithm (Schönhage-Strassen). The improvement is noticeable when both
731   factors have at least 1250 words = 40000 bits = 12000 decimal digits.
732
733 * Speed up the functions `cl_I gcd (const cl_I&, const cl_I&)' and
734   `cl_I xgcd (const cl_I&, const cl_I&, cl_I*, cl_I*)' by a factor
735   of 1.5. Simple trick.
736
737 * Speed up the function `cl_boolean sqrtp (const cl_I&, cl_I*)' using a
738   trick from Henri Cohen.
739
740 * Fixed an endless loop in the function `uint32 gcd (uint32, uint32)'
741   which occurred when one of the arguments is zero.
742
743 * Fixed an endless loop in the function `cl_I factorial (uintL)'.
744
745 Implementation changes
746 ----------------------
747
748 * <cl_io.h> now uses iostreams by default instead of stdio FILE pointers.
749   (Reported by Tito Flagella.)
750
751 * Fixed linking error when compiling without -O.
752   (Reported by Tito Flagella.)
753
754 * Fixed syntax error in <cl_input.h>.
755   (Reported by Tito Flagella.)
756
757 * Fixed syntax errors in src/cl_DS.h and src/cl_FF_plus.h.
758   (Reported by Marcus Daniels.)
759
760 * More portability fixes.
761
762 * Configuration now supports the --srcdir option.
763   (Reported by Marcus Daniels.)
764
765
766 1996-01-03
767 ==========
768
769 * Compiles well on Sparc, using gcc.
770
771 * Mail to beta testers.
772
773
774 1995-12-06
775 ==========
776
777 * Compiles well on Linux, using gcc.
778