A computable function from tuples of nonnegative integers to nonnegative integers is a total function for which there is a Turing machine that halts on every input and outputs the function's value. A partial function is computable if a Turing machine halts with its value on inputs in its domain and does not halt otherwise (Kleene 1952).
Equivalently, computable functions can be described as recursive functions or implemented in a program using while-loops, whose number of iterations need not have a fixed bound. The Ackermann function is a standard example of a computable function that is not primitive recursive (Dötzel 1991).