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