|
|
| Table of contents |
|
2 Computing digit strings 3 References 4 See also |
The computable complex numbers form an algebraically closed field, and arguably this field contains all the numbers we ever need in practice. It contains all algebraic numbers as well as many known transcendental mathematical constants. There are however many real numbers which are not computable: the set of all computable numbers is countable (because the set of algorithms is) while the set of real numbers is not (see Cantor's diagonal argument).
The arithmetical operations on computable numbers are themselves computable. Take addition as example: there exists an algorithm or Turing machine which on input (A,B,ε) produces output r, where A is the description of a Turing machine approximating a (in the sense of the above definition), B is the description of a Turing machine approximating b, and r is an ε approximation of a+b.
However, order relations on computable numbers are not computable. There is no Turing machine which on input A (the description of a Turing machine approximating the number a) outputs "YES" if a>0 and "NO" if a≤0. The reason: suppose the machine described by A keeps outputing 0 as ε approximations. It is not clear how long to wait before deciding that the machine will never output an approximation which forces a to be positive.
While the set of computable numbers is countable, it cannot be enumerated by any algorithm, program or Turing machine. Formally: it is not possible to provide a complete list x1, x2, x3, ... of all computable real numbers and a Turing machine which on input (m, ε) produces an ε-approximation of xm. This is proved with a slight modification of Cantor's diagonal argument.
Every computable number is definable, but not vice versa. An example of a definable, non-computable real number is
Chaitin's constant, &Omega.
Turing's original paper (and a previous version of this article) defined computable numbers as follows:
Properties
Computing digit strings
The problem with this definition is this: addition is not computable if we use descriptions of digit-enumerating Turing machines as input and require a digit enumeration as ouput. The reason is similar to the one described above, when talking about order relations: if the first machine keeps outputing the digit 9 and the second machine the digit 0, how long do you wait before deciding that no carry to the current digit position is needed?References
See also