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