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