**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

AI.Repository@cs.cmu.edu