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