CLN 1.2.0 has been released
Richard B. Kreckel
kreckel at ginac.de
Sat Jan 19 23:46:28 CET 2008
Dear fellow friends of mind-boggling piles of digits!
I have the honor to announce CLN version 1.2.0. It is about one year
behind schedule: I announced it in September 2006 at the ICMS'2006
conference in Spain to be "just around the corner". But, hey, I'm not
the only master of procrastination: Torbjörn has announced GMP-5.0 to be
released in 2007 at the same event!
Anyway, for those of you not familiar with CLN: CLN stands for "Class
Library for Numbers". It is a feature-rich C++ library for arbitrary
precision arithmetic that has been around since more than ten years now.
It operates on signed integers, rational numbers, floating point
numbers, complex numbers, modular numbers, and univariate polynomials.
CLN uses object oriented techniques and operator overloading to achieve
a natural algebraic syntax: The sum x of two variables a and b is
written as x=a+b, as opposed to as some function add(&x,a,b).
CLN uses class inheritance to model the natural subsets of the available
number types: E.g. the integer class is a subtype of the rational class,
just as the integer numbers are a subset of the rational numbers. The
complex numbers and all its subtypes behave exactly like the types of
numbers known to the Common Lisp language. Due to this, CLN can be and
is used for implementations of Common Lisp, other interpreted languages,
or Computer algebra systems.
The implementation is efficient. It can be configured to use GMP's MPN
layer as kernel for speed-critical inner loops and implements Karatsuba,
Schönhage-Strassen multiplication, Binary splitting and so on on top of
it (but it can also be configured without GMP). All CLN objects are
either immediate or reference counted, providing for non-interruptive
garbage collection with no burden on the main application.
Ob-Question for gmp-discuss: Does CLN have trigonometric functions? Does
it have logarithms. Answer: Yes, it does. :)
The release focus of CLN 1.2.0 has been to support huge numbers, i.e.
those with billions of decimal digits. As is to be expected, if one
pushes such limits, memory consumption becomes a critical issue. So, CLN
1.2.0 is noticeably more memory efficient than previous releases. I take
the liberty of using this fact as an excuse for the late release: The
turnaround times when testing, debugging and benchmarking programs
operating on numbers many GiB in size can be stultifying. Looking
forward to hearing Torbjörn's excuse, now! ;-)
CLN is GPLed and available from <http://www.ginac.de/CLN/>.
Richard B. Kreckel
More information about the gmp-discuss