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