# Binary function

In mathematics, a **binary function** (also called **bivariate function**, or **function of two variables**) is a function that takes two inputs.

Precisely stated, a function is binary if there exists sets such that

where is the Cartesian product of and

## Alternative definitions

Set-theoretically, one may represent a binary function as a subset of the Cartesian product *X* × *Y* × *Z*, where (*x*,*y*,*z*) belongs to the subset if and only if *f*(*x*,*y*) = *z*.
Conversely, a subset *R* defines a binary function if and only if for any *x* in *X* and *y* in *Y*, there exists a unique *z* in *Z* such that (*x*,*y*,*z*) belongs to *R*.
We then define *f*(*x*,*y*) to be this *z*.

Alternatively, a binary function may be interpreted as simply a function from *X* × *Y* to *Z*.
Even when thought of this way, however, one generally writes *f* (*x*,*y*) instead of *f*((*x*,*y*)).
(That is, the same pair of parentheses is used to indicate both function application and the formation of an ordered pair.)

## Examples

Division of whole numbers can be thought of as a function; if is the set of integers, is the set of natural numbers (except for zero), and is the set of rational numbers, then division is a binary function .

Another example is that of inner products, or more generally functions of the form where *x,y* are real-valued vectors of appropriate size and *M* is a matrix. If *M* is a positive definite matrix, this yields an inner product.[1]

## Functions of two real variables

Functions whose domain is a subset of are often also called functions of two variables even if their domain does not form a rectangle and thus the cartesian product of two sets.[2]

## Restrictions to ordinary functions

In turn, one can also derive ordinary functions of one variable from a binary function.
Given any element *x* of *X*, there is a function *f* ^{x}, or *f* (*x*,·), from *Y* to *Z*, given by *f* ^{x}(*y*) := *f* (*x*,*y*).
Similarly, given any element *y* of *Y*, there is a function *f* _{y}, or *f* (·,*y*), from *X* to *Z*, given by *f* _{y}(*x*) := *f* (*x*,*y*). In computer science, this identification between a function from *X* × *Y* to *Z* and a function from *X* to *Z*^{Y}, where *Z*^{Y} is the set of all functions from *Y* to *Z*, is called *currying*.

## Generalisations

The various concepts relating to functions can also be generalised to binary functions.
For example, the division example above is *surjective* (or *onto*) because every rational number may be expressed as a quotient of an integer and a natural number.
This example is *injective* in each input separately, because the functions *f* ^{x} and *f* _{y} are always injective.
However, it's not injective in both variables simultaneously, because (for example) *f* (2,4) = *f* (1,2).

One can also consider *partial* binary functions, which may be defined only for certain values of the inputs.
For example, the division example above may also be interpreted as a partial binary function from **Z** and **N** to **Q**, where **N** is the set of all natural numbers, including zero.
But this function is undefined when the second input is zero.

A binary operation is a binary function where the sets *X*, *Y*, and *Z* are all equal; binary operations are often used to define algebraic structures.

In linear algebra, a bilinear transformation is a binary function where the sets *X*, *Y*, and *Z* are all vector spaces and the derived functions *f* ^{x} and *f*_{y} are all linear transformations.
A bilinear transformation, like any binary function, can be interpreted as a function from *X* × *Y* to *Z*, but this function in general won't be linear.
However, the bilinear transformation can also be interpreted as a single linear transformation from the tensor product to *Z*.

## Generalisations to ternary and other functions

The concept of binary function generalises to *ternary* (or *3-ary*) *function*, *quaternary* (or *4-ary*) *function*, or more generally to *n-ary function* for any natural number *n*.
A *0-ary function* to *Z* is simply given by an element of *Z*.
One can also define an *A-ary function* where *A* is any set; there is one input for each element of *A*.

## Category theory

In category theory, *n*-ary functions generalise to *n*-ary morphisms in a multicategory.
The interpretation of an *n*-ary morphism as an ordinary morphisms whose domain is some sort of product of the domains of the original *n*-ary morphism will work in a monoidal category.
The construction of the derived morphisms of one variable will work in a closed monoidal category.
The category of sets is closed monoidal, but so is the category of vector spaces, giving the notion of bilinear transformation above.

## References

- Clarke, Bertrand; Fokoue, Ernest; Zhang, Hao Helen (2009-07-21).
*Principles and Theory for Data Mining and Machine Learning*. p. 285. ISBN 9780387981352. Retrieved 16 August 2016. - Stewart, James (2011).
*Essentials of Multivariate Calculus*. Toronto: Nelson Education. p. 591.