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