In mathematics, the **domain** of a function is the set of all input values to the function.

Given a function *f* : *A* → *B*, the set *A* is called the **domain**, or **domain of definition** of *f*.

The set of all values in the codomain that *f* maps to is called the range of *f*, written *f*(*A*).

A well-defined function must map every element of the domain to an element of its codomain. For example, the function *f* defined by

*f*(*x*) = 1/*x*

has no value for *f*(0). Thus, the set **R** of real numbers cannot be its domain. In cases like this, the function is usually either defined on **R** \ {0}, or the "gap" is plugged by specifically defining *f*(0). If we extend the definition of *f* to

*f*(*x*) = 1/*x*, for *x* ≠ 0
*f*(0) = 0,

then *f* is defined for all real numbers and we can choose its domain to be **R**.

Any function can be restricted to a subset of its domain. The restriction of *g* : *A* → *B* to *S*, where *S* ⊆ *A*, is written *g* |_{S} : *S* → *B*.

## See also