An integer is a string of digits optionally preceded by + or -. A real
number looks like an integer, except that it has a decimal point and
optionally can be written in scientific notation. A rational looks like
two integers with a / between them. LISP supports complex numbers,
which are written `#c(r i)`

(where r is the real part and i is the
imaginary part). A number is any of the above. Here are some numbers:

- 5
- 17
- -34
- +6
- 3.1415
- 1.722e-15
- #c(1.722e-15 0.75)

The standard arithmetic functions are all available: `+`

, `-`

,
`*`

, `/`

, `floor`

,
`ceiling`

, `mod`

, `sin`

, `cos`

, `tan`

, `sqrt`

,
`exp`

, `expt`

, and so forth. All of them
accept any kind of number as an argument. `+`

, `-`

, `*`

, and
`/`

return a
number according to type contagion: an integer plus a rational is a
rational, a rational plus a real is a real, and a real plus a complex
is a complex. Here are some examples:

```
```> (+ 3 3/4) ;type contagion
15/4
> (exp 1) ;e
2.7182817
> (exp 3) ;e*e*e
20.085537
> (expt 3 4.2) ;exponent with a base other than e
100.90418
> (+ 5 6 7 (* 8 9 10)) ;the fns +-*/ all accept multiple arguments

There is no limit to the absolute value of an integer except the memory size of your computer. Be warned that computations with bignums (as large integers are called) can be slow. (So can computations with rationals, especially compared to the corresponding computations with small integers or floats.)