CLN 1.2.0 has been released

Richard B. Kreckel kreckel at
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 <>.

Richard B. Kreckel

More information about the gmp-discuss mailing list