In mathematics, a function is a relation, such that each element of a set (the domain) is associated with a unique element of another (possibly the same) set (the codomain, not to be confused with the range). The concept of a function is fundamental to virtually every branch of mathematics and every quantitative science.
The terms function, mapping, map and transformation are usually used synonymously. The term operation is frequently used for binary functions; functions whose domain is a set of functions, or a vector space, are often called operators (see also operator (programming)).
Intuitive introduction
Essentially, a function is a "rule" that assigns an output to each given input. Here are some examples of functions:
 Each person has a favorite colour (red, orange, yellow, green, cyan, blue, indigo, or violet). The favorite colour is a function of the person. For example, John has favorite colour red, while Kim has favorite colour violet. Here, the input is the person, and the output is one of the 8 colours. Note that more than one person may be assigned to a given colour (e.g. John and Kim may both like red).
 A stone is dropped from different stories of a tall building. The dropped stone may take 2 seconds to fall from the second story, and (only) 4 seconds to fall from the 8th story. Here, the input is the story, and the output is the number of seconds. The relevant function describes the relationship between the time it takes the stone to reach the ground and the story. (See acceleration)
The "rule" defining a function can be specified by a formula, a relationship, or simply a table listing the outputs against inputs. The most important feature of a function is that it is deterministic, always producing the same output from the same input. In this way, a function may be thought of as a "machine" or a "black box", converting a valid input into a unique output. The input is often called the argument of the function, and the output the value of the function.
A very common type of function occurs when the argument and the function value are both numbers, the functional relationship is expressed by a formula, and the value of the function is obtained by direct substitution of the argument into the formula. Consider for example
 f(x) = x^{2}
which assigns to any number x its square.
A straightforward generalization is to allow functions depending on several arguments. For instance,
 g(x,y) = xy
is a function which takes two numbers x and y and assigns to them their product, xy. It might seem that this is not really a function as we described above, because this "rule" depends on two inputs. However, if we think of the two inputs together as a single pair (x, y), then we can interpret g as a function  the argument is the ordered pair (x, y), and the function value is xy. Such functions whose input consists of ordered pairs are called "binary" or "2ary".
In the sciences, we often encounter functions that are not given by (known) formulas. Consider for instance the temperature distribution on earth over time: this is a function which takes location and time as arguments and gives as output the temperature at that location at that time.
We have seen that the intuitive notion of function is not limited to computations using single numbers and not even limited to computations; the mathematical notion of function is still more general and is not limited to situations involving numbers. Rather, a function links a "domain" (set of inputs) to a "codomain" (set of possible outputs) in such a way that every element of the domain is associated to precisely one element of the codomain. Functions are abstractly defined as certain relations, as will be seen below. Because of this generality, the function concept is fundamental to virtually every branch of mathematics.
History
As a mathematical term, "function" was coined by Leibniz in 1694, to describe a quantity related to a curve, such as a curve's slope or a specific point of a curve. The functions Leibniz considered are today called differentiable functions, and they are the type of function most frequently encountered by nonmathematicians. For this type of function, one can talk about limits and derivatives; both are measurements of the change of output values associated to a change of input values, and these measurements are the basis of calculus.
The word function was later used by Euler during the mid18th century to describe an expression or formula involving various arguments, e.g. f(x) = sin(x) + x^{3}.
During the 19th century, mathematicians started to formalize all the different branches of mathematics. Weierstrass advocated building calculus on arithmetic rather than on geometry, which favoured Euler's definition over Leibniz's (see arithmetization of analysis).
By broadening the definition of functions, mathematicians were then able to study "strange" mathematical objects such as continuous functions that are nowhere differentiable. These functions were first thought to be only theoretical curiosities, and they were collectively called "monsters" as late as the turn of the 20th century. However, powerful techniques from functional analysis have shown that these functions are in some sense "more common" than differentiable functions. Such functions have since been applied to the modelling of physical phenomena such as Brownian motion.
Towards the end of the 19th century, mathematicians started trying to formalize all of mathematics using set theory, and they sought to define every mathematical object as a set. Dirichlet and Lobachevcky independently and almost simultaneously gave the modern "formal" definition of function (see formal definition below).
In this definition, a function is a special case of a relation. In most cases of practical interest, however, the differences between the modern definition and Euler's definition are negligible.
The notion of function as a rule for computing, rather than a special kind of relation, has been formalized in mathematical logic and theoretical computer science by means of several systems, including the lambda calculus, the theory of recursive functions and the Turing machine.
Formal definition
Formally, a function f from a set X of input values to a set Y of possible output values (written as f : X → Y) is a relation between X and Y which satisfies:
 f is total, or entire: for all x in X, there exists a y in Y such that x f y (x is frelated to y), i.e. for each input value, there is at least one output value in Y.
 f is manytoone, or functional: if x f y and x f z, then y = z. i.e., many input values can be related to one output value, but one input value cannot be related to many output values.
For each input value x in the domain, the corresponding unique output value y in the codomain is denoted by f(x).
A more concise expression of the above definition is the following: a function from X to Y is a subset f of the cartesian product X × Y, such that for each x in X, there is a unique y in Y such that the ordered pair (x, y) is in f.
The set of all functions f : X → Y is denoted by Y^{X}. Note that Y^{X} = Y^{X} (refer to Cardinal numbers).
A relation between X and Y that satisfies condition (1) is a multivalued function. Every function is a multivalued function, but not every multivalued function is a function. A relation between X and Y that satisfies condition (2) is a partial function. Every function is a partial function, but not every partial function is a function. In this encyclopedia, the term "function" will mean a relation satisfying both conditions (1) and (2), unless otherwise stated.
Consider the following three examples:

This relation is total but not manytoone; the element 3 in X is related to two elements b and c in Y. Therefore, this is a multivalued function, but not a function. 

This relation is manytoone but not total; the element 1 in X is not related to any element of Y. Therefore, this is a partial function, but not a function. 


This relation is both total and manytoone, and so it is a function from X to Y. Note that the emphasis is on "toone" as "many" may actually mean "one". The function can be given explicitly as f = {(1, d), (2, d), (3, c)} or as

Domains, codomains, and ranges
X, the set of input values, is called the domain of f, and Y, the set of possible output values, is called the codomain. The range of f is the set of all actual outputs {f(x) : x in the domain}. Beware that sometimes the codomain is incorrectly called the range because of a failure to distinguish between possible and actual values.
Functions are named after their ranges, for example real functions and complex functions.
An endofunction is a function whose domain and range are identical.
In computer science, the datatypes of the arguments and return values specify the domain and codomain (respectively) of a subprogram. So the domain and codomain are constraints imposed initially on a function; on the other hand the range has to do with how things turn out in practice.
Injective, surjective and bijective functions
Several properties of functions that are very useful have special names:

Injective (onetoone) functions send different arguments to different values; in other words, if x_{1} and x_{2} are members of the domain of f, then f(x_{1}) = f(x_{2}) only if x_{1} = x_{2}.

Surjective (onto) functions have their range equal to their codomain; in other words, if y is any member of the codomain of f, then there exists at least one x such that f(x) = y.

Bijective functions are both injective and surjective; they are often used to show that the sets X and Y are the "same size" in some sense.
Images and preimages
The image of an element x∈X under f is the output f(x).
The image of a subset A⊂X under f is the subset of Y formally defined by
 f[A] = {f(x)  x in A}
Usually (when subsets of the domain are not at the same time elements of the domain) one writes f(A) instead of f[A].
(An oldfashioned notation writes f'x instead of f(x), and f"A instead of f[A].)
Notice that the range of f is the image f(X) of its domain. In our function above, the image of {2,3} under f is f({2, 3}) = {c, d} and the range of f is {a, c, d}.
The preimage (or inverse image) of a set B ⊂ Y under f is the subset of X defined by
 f^{ −1}(B) = {x in X  f(x) ∈B}
For our function above, the preimage of {a, b} is f^{ −1}({a, b}) = {1}.
Graph of a function
The graph of a function f is the set of all ordered pairs(x, f(x)), for all x in the domain X. There are theorems formulated or proved most easily in terms of the graph, such as the closed graph theorem. If X and Y are real lines, then this definition coincides with the familiar sense of graph.
the graph of a
cubic function, This function is surjective but not injective.
Note that a binary relation on the two sets X and Y could be identified with an orderred triple (X,Y,G) where G is the graph of the relation or identified with the its graph. In the latter case a function f is the same as its graph.
Examples of functions
(More can be found at list of functions.)
 The relation wght between persons in the United States and their weights at a particular time.
 The relation between nations and their capitals, if we exclude those nations that maintain multiple capitals [1].
 The relation sqr between natural numbers n and their squares n^{2}.
 The relation ln between positive real numbers x and their natural logarithms ln(x). Note that the relation between real numbers and their natural logarithms is not a function because not every real number has a natural logarithm; that is, this relation is not total.
 The relation dist between points in the plane R^{2} and their distances from the origin (0,0).
 The relation grav between a point in the punctured plane R^{2} \ {(0,0)} and the vector describing the gravitational force that a certain mass at that point would experience from a certain other mass at the origin (0,0).
The most commonly used types of mathematical functions involve addition, division, exponents, logarithms, multiplication, polynomials, radicals, rationals, subtraction, and trigonometric expressions. These functions, and functions obtained by composing them, are sometimes collectively referred as elementary functions  but the meaning of this term varies among different branches of mathematics. Example of nonelementary functions (or special functions) are Bessel functions and Gamma function.
Properties of functions
Functions can be
Ambiguous functions
An ambiguous function is a mathematical equation that can have more than one correct answer. For example, the square root of 4 can be either 2 or 2 as both answers squared would give 4.
Strictly speaking, an ambiguous function is not truly a function because a mathematical function is defined as having "a unique output to each given input". In fact, such "functions" are more properly termed relations.
nary function: function of several variables
Functions in applications are often functions of several variables, or multivariate functions: the values they take depend on a number of different factors. From a mathematical point of view all the variables must be made explicit in order to have a functional relationship  no 'hidden' factors are allowed. Then again, from the mathematical point of view, there is no qualitative difference between functions of one and of several variables. A function of three real variables is just a function that applies to triples of real numbers. The following paragraph says this in more formal language.
If the domain of a function is a subset of the Cartesian product of n sets then the function is called an nary function. For example, the relation dist has the domain R × R and is therefore a binary function. In that case dist((x,y)) is simply written as dist(x,y).
Another name applied to some types of functions of several variables is operation. In abstract algebra, operators such as "*" are defined as binary functions; when we write a formula such as x*y in this context, we are implicitly invoking the function *(x,y), but writing it in a convenient infix notation.
An important theoretical paradigm, functional programming, takes the function concept as central. In that setting, the handling of functions of several variables becomes an operational matter, for which the lambda calculus provides the basic syntax. The composition of functions (see under composing functions immediately below) becomes a question of explicit forms of substitution, as used in the substitution rule of calculus. In particular, a formalism called currying can be used to reduce nary functions to functions of a single variable.
Composing functions
The functions f: X → Y and g: Y → Z can be composed by first applying f to an argument x and then applying g to the result. Thus one obtains a composite function g o f: X → Z defined by (g o f)(x) = g(f(x)) for all x in X. As an example, suppose that an airplane's height at time t is given by the function h(t) and that the oxygen concentration at height x is given by the function c(x). Then (c o h)(t) describes the oxygen concentration around the plane at time t.
Inverse function
If a function f:X→Y is bijective then preimages of any element y in the codomain Y is a singleton. A function taking y∈Y to its preimage f^{−1}(y) is a welldefined function called the inverse of f and is denoted by f^{−1}.
An example of an inverse function, for f(x) = 2x, is f(x)^{−1} = x/2. The inverse function is the function that "undoes" its original. See also inverse image.
Inverses are sometimes difficult or impossible to find. Consider f(x) = x^{2}. The function f(x) = √x is not an inverse when the domain of f is R. (As 2^{2} is 4, but √4 is either 2 or 2).
Restrictions and extensions
Suppose that X is a subset of Y and that
is a function. Let
be the inclusion function
 i(x) = x
for all .
The restriction of f to X is then the function . Intuitively, this is the same function as f except that we restrict the domain of f to X.
An extension of a function is a function defined on a superset Y of X such that f  X = g. Provided the domain of g is not the universal set, g always has lots of extensions.
Pointwise operations
If f: X → R and g: X → R are functions with common domain X and codomain is a ring R, then one can define the sum function f + g: X → R and the product function f × g: X → R as follows:
 (f + g)(x) = f(x) + g(x)
 (f × g)(x) = f(x) × g(x)
for all x in X.
This turns the set of all such functions into a ring. The binary operations in that ring have as domain ordered pairs of functions, and as codomain functions. This is an example of climbing up in abstraction, to functions of more complex types.
By taking some other algebraic structure A in the place of R, we can turn the set of all functions from X to A into an algebraic structure of the same type in an analogous way.
Computable and noncomputable functions
The number of computable functions from integers to integers is countable, because the number of possible algorithms is. The number of all functions from integers to integers is higher: the same as the cardinality of the real numbers. This argument shows that there are functions from integers to integers that are not computable. For examples of noncomputable functions, see the articles on the halting problem and Rice's theorem.
Functions from the categorical viewpoint
In the formal definition, a function represents a relationship between its domain and its codomainn, rather than just a rule for taking an input to an output. A generalisation of the notion of funtion is morphism in the context of category theory. A category is a collection of objects and morphisms, each morphism is an ordered triple (X, Y, f), where f is a rule connecting domain X and codomain Y, and X and Y are objects in the collection.
Ordinary functions are sometimes referred to as morphisms in a concrete category.
References
See also
External links

The Wolfram Functions Site, largest compendium of formulae and visualizations of mathematical functions

xFunctions is a versatile Java applet for exploring functions graphically. It can be used on line or downloaded for use off line.