ABSTRACT

The issue of reversibility of numerical computation can be approached from two perspectives: the software point of view and the hardware point of view. Reversibility in software is concerned with the ability to execute a sequence of arithmetic operations in both directions of the sequence: using normal operators in the forward direction, and using inverse operators in the reverse direction to recover operands that are lost or overwritten in the forward di-

rection. Reversibility in the software view is concerned about whether and how the loss of some operand values can be reversed by uncomputing the operator using the results of the operator and the rest of the operands that are not lost. Reversibility of arithmetic in the hardware is concerned with the extent to which the arithmetic logic circuitry can be made reversible, typically by employing reversible gates. The hardware view is also concerned with whether and how a numerical algorithm could be expressed using only reversible instructions at the machine code level.