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