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