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