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