The domain of a function *f*:**A** → **B** is **A**.

This is an important point to make: the domain is not the set of values for which an interpretation of the function *may* make sense. Take, for example, *f*(`x`) = (2`x` + 3). This, believe it or not, is not a full mathematical definition for a function. A more full definition would be *f*(`x`):ℜ → ℜ = (2`x` + 3). In this case, the domain is ℜ, or the set of real numbers. A **different** function might be *g*(`x`):**Q** → **Q** = (2`x` + 3) [**Q** being the set of rational numbers]. The value of *g*(`x`) is equal to the value of *f*(`x`), when `x` is in the domain of both functions, but *f* and *g* are in fact *different functions*; for example, *f*(√2) is defined but *g*(√2) is undefined [because the square root of 2 is not a rational number and so not in the domain of *g*]. Other similar functions might have domains of the integers, or complex numbers, or multiples of √5, or integers modulo n, or p-adic integers, or other sets…

It often happens that the domain of a function is not specified, and in those cases, the obvious logical choice is usually good enough for the task at hand. However, it does make a difference in some special cases, and the strict definition of the domain becomes important.

Compare with range and codomain.