**Common Lisp the Language, 2nd Edition**

Common
Lisp provides several different representations for numbers.
These representations may be divided into four categories: integers,
ratios, floating-point numbers, and complex numbers. Many numeric
functions will accept any kind of number; they are *generic*. Other
functions accept only certain kinds of numbers.

Note that this remark, predating the design of the Common Lisp Object System,
uses the term ``generic'' in a generic sense and not necessarily
in the technical sense used by CLOS
(see chapter 2).

In general, numbers in Common Lisp are not true objects; `eq` cannot
be counted upon to operate on them reliably. In particular,
it is possible that the expression

(let ((x z) (y z)) (eq x y))

may be false rather than true if the value of `z` is a number.

If two objects are to be compared for ``identity,'' but either might be
a number, then the predicate `eql` is probably appropriate;
if both objects are known to be numbers, then `=`
may be preferable.

- Precision, Contagion, and Coercion
- Predicates on Numbers
- Comparisons on Numbers
- Arithmetic Operations
- Irrational and Transcendental Functions
- Type Conversions and Component Extractions on Numbers
- Logical Operations on Numbers
- Byte Manipulation Functions
- Random Numbers
- Implementation Parameters

[email protected]