An example of a partial function that is not a total function.

An example of a partial function that is also a total function.

In mathematics, a partial function from X to Y is a function : X' Y, where X' is a subset of X. It generalizes the concept of a function by not forcing f to map every element of X to an element of Y (only some subset X' of X). If X' = X, then is called a total function and is equivalent to a function. Partial functions are often used when the exact domain, X' , is not known (e.g. many functions in computability theory).
Specifically, we will say that for any x X, either:

(x) = y Y (it is defined as a single element in Y) or

(x) is undefined.
For example we can consider the square root function restricted to the integers
 g\colon \mathbb{Z} \to \mathbb{Z}
 g(n) = \sqrt{n}
Thus g(n) is only defined for n that are perfect squares (i.e. 0, 1, 4, 9, 16, ...). So, g(25) = 5, but g(26) is undefined.
Domain of a partial function
There are two distinct meanings in current mathematical usage for the notion of the domain of a partial function. Most mathematicians, including recursion theorists, use the term "domain of f" for the set of all values x such that f(x) is defined ( X' above). But some, particularly category theorists, consider the domain of a partial function f:X Y to be X, and refer to X' as the domain of definition.
Occasionally, a partial function with domain X and codomain Y is written as f: X Y, using an arrow with vertical stroke.
A partial function is said to be injective or surjective when the total function given by the restriction of the partial function to its domain of definition is. A partial function may be both injective and surjective, but the term bijection generally only applies to total functions.
An injective partial function may be inverted to an injective partial function, and a partial function which is both injective and surjective has an injective function as inverse.
Total function
Total function is a synonym for function. The use of the prefix "total" is to suggest that it is a special case of a partial function. For example, when considering the operation of morphism composition in Concrete Categories, the composition operation \circ : \operatorname{Hom}(C) \times \operatorname{Hom}(C) \to \operatorname{Hom}(C) is a total function if and only if \operatorname{Ob}(C) has one element. The reason for this is that two morphisms f:X\to Y and g:U\to V can only be composed as g \circ f if Y=U, that is, the codomain of f must equal the domain of g.
Discussion and examples
The first diagram above represents a partial function that is not a total function since the element 1 in the lefthand set is not associated with anything in the righthand set.
Natural logarithm
Consider the natural logarithm function mapping the real numbers to themselves. The logarithm of a nonpositive real is not a real number, so the natural logarithm function doesn't associate any real number in the codomain with any nonpositive real number in the domain. Therefore, the natural logarithm function is not a total function when viewed as a function from the reals to themselves, but it is a partial function. If the domain is restricted to only include the positive reals (that is, if the natural logarithm function is viewed as a function from the positive reals to the reals), then the natural logarithm is a total function.
Subtraction of natural numbers
Subtraction of natural numbers (nonnegative integers) can be viewed as a partial function:
 f: \mathbb{N} \times \mathbb{N} \to \mathbb{N}
 f(x,y) = x  y
It is only defined when x \ge y.
Bottom type
In some automated theorem proving systems a partial function is considered as returning the bottom type when it is undefined. The CurryHoward correspondence uses this to map proofs and computer programs to each other.
In computer science a partial function corresponds to a subroutine that raises an exception or loops forever. The IEEE floating point standard defines a Notanumber value which is returned when a floating point operation is undefined and exceptions are suppressed, e.g. when the square root of a negative number is requested.
In a programming language where function parameters are statically typed, a function may be defined as a partial function because the language's type system cannot express the exact domain of the function, so the programmer instead gives it the smallest domain which is expressible as a type and contains the true domain.
See also
References

Martin Davis (1958), Computability and Unsolvability, McGrawHill Book Company, Inc, New York. Republished by Dover in 1982. ISBN 0486614719.

Stephen Kleene (1952), Introduction to MetaMathematics, NorthHolland Publishing Company, Amsterdam, Netherlands, 10th printing with corrections added on 7th printing (1974). ISBN 0720421039.

Harold S. Stone (1972), Introduction to Computer Organization and Data Structures, McGrawHill Book Company, New York.
de:Partielle Funktion es:Funci n parcial fr:Fonction partielle it:Funzione parziale he: nl:Parti le functie pl:Funkcja cz ciowa pt:Fun o parcial fi:Osittaisfunktio
