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