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