Floating point is the represenation of real numbers in computers. Real numbers are numbers with values that cannot be counted, but are measured, like distance or temperature or even time. By international standards, floating point numbers are comparable to scientific notation with representations for the sign, the exponent, and the fraction (mantissa or significand) of a number as a single computing entity. Nearly all general purpose computers have hardware or software implementations of mathematical operations on floating point numbers. In most cases floating point numbers, and the operations on them, introduce an error which is undetected and can accumulate, even catestrophically, over a sequence of operations. Performing complex mathematical computations requires numerous floating point operations, each of which is likely to make the result less accurate. Wikipedia on Floating Point Error.
In the current art, static error analysis requires significant mathematical analysis and cannot determine actual error in real time. This work must be done by highly skilled mathematician programmers and is only applied to critical projects because of the greatly increased cost and time required. In contrast, the present invention provides error computation in real time with, at most, a small increase in computation time and a small decrease in the maximum number of bits available for the significand.
The dynamic error analysis by means of error injection used in the current technology has similar problems requiring multiple execution of algorithms that require floating point.1 Such techniques would be of little use when using adaptive algorithms or when error information is required in real time. This invention eliminates the need for multiple execution and provides error information in real time.
Adding additional storage to retain statistical information on error, which is a commonly proposed solution, significantly increases computation time and required storage. The present invention makes a slight decrease in the maximum number of bits available for the significand for real number representation in order to accommodate space for error information. The storage space required by the present invention is the same as standard floating point.
Though interval arithmetic provides a means of computing bounds for floating point computations, it requires greatly increased computation time and at least twice as much storage. In contrast, the circuit for calculating and retaining a bound computes both the first and second bounds on the real number represented and does this within the execution of a single instruction. Additional memory is not required. The computed bounds are fail safe.
1 Chotin & Mehrez, 2002,"A Floating-Point Unit Using Stochastic Arithmetic Compliant With The IEEE-754 Standard", 9th IEEE International Conference on Electronics Circuits and Systems (ICECS'2002), Dubrovnik, Croatie, pp. 603-606
The most notorious floating point error catastrophe was the Patriot Missle Failure at Dhahran, Saudi Arabia, February 25, 1991, when a Patriot Missle failed to destroy a Scud missle and 28 U.S. militry people were killed as a result. The conversion of 100 hours in tenths of a second (3600000) to floating point introduced an undetectable error resulting in the missle guidance software incorrectly locating the scud missle.