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 |