When using one of the large machines for computing in connection with a particular problem, four stages can be distinguished.
All stages must be fully checked if a satisfactory solution is to be obtained. Stage (1) is quite often tentative - e.g. the testing of some hypothesis - and it is important to give great care to this stage, involving consultation between the physicist and a mathematician well versed in the computational methods to be used subsequently. In my experience problems, as originally presented to me for computation, are often imperfect - sometimes because the mathematical development is incorrect, sometimes because assumptions introduced, while not unjustified, may yet severely complicate subsequent work, when compared with methods arising from other assumptions, equally justified. The idea of checking the formulation is not really applicable throughout, rather the word testing may be more suitable.
Stages (2), (3) and (4) however, must be thoroughly and fully checked. A full numerical check of any of these stages automatically includes a check of later stages, whereas earlier stages are completely unchecked. Hence a mathematical check is essential and, if the reliability of stages (3) and (4) is high (though not necessarily complete), sufficient.
Most of the checking so far considered has been concerned with the machine (stage 4) or, to a lesser extent, with the coding (stage 3). At this moment in the development of machine, it is clear that reliability is far from sufficient for these to be dispensed with. Nevertheless the aim must be to develop methods for avoiding errors - which may be expected, in time, to become infrequent in stages (3) and (4). When this time is reached an overall mathematical check, always essential, will be sufficient.
Repetition is the poorest form of check, only to be used in the direct emergency and, in fact, does not check the mathematics at all. Consequently the building of duplicate machines (which leaves even coding unchecked) or the duplication of calculations (which, however well arranged, must use some parts of the machine twice in the same way) are both justified only if machines are what must be called unreliable. Duplication is a counsel of despair.
To sum up, a necessary check is complete checking of calculations by an alternative mathematical method which should, however, make use of the important fact that the results are then known. If machines and coding are reliable, such a check will also be sufficient in the majority of cases, and need be the only one applied. Any checking devices used in coding and in the machine should be arranged to avoid errors - nothing else will, in the long run, be worth while.
A further remark on errors is concerned with the problem of location distinct from the mere detection of an error.
The idea of weighted counts or sums was mentioned, where calculation with a number, say, a0 + a1.2-1 + a2.2-2 + a3.2-3 +... is checked by manipulation of the sum.
S = a0b0 + a1b1 + a2b2 + ...
in which b0, b1, b2, ... are fixed constants for a particular machine. To aid in location of errors (detection is made evident by a wrong value of S), it might be useful to give b0, b1, b2, values which are different prime values. An error in S could then be factorised and, provided small primes were excluded from b0, b1, b2, the erroneous value of a1 could often be located. Small primes are excluded, because the error in a1 will itself have factors which will usually be small or, if not, have a fair chance of not being one of the b1. If no factor b1 turns up, at least two errors are indicated, and location becomes more difficult.