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