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 the function sum(&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.
Due to this, CLN can be and is used for implementations of Common Lisp, other interpreted languages, or computer algebra systems.
It can be configured to use the GNU Multi-Precision Library as kernel for speed-critical inner loops and implements advanced algorithms like Schönhage–Strassen multiplication, binary splitting[1] for computing certain mathematical constants and others.
All CLN objects are either immediate or reference counted, providing for non-interruptive garbage collection with no burden on the main application.