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