Page 300 - ARM 64 Bit Assembly Language
P. 300
Non-integral mathematics 289
second system which was responsible for locking onto the target and firing the Patriot missile.
The system would only fire when the potential target was at the proper location at the speci-
fied time. If the radar did not detect the incoming missile at the correct time and location, then
the system would not fire.
At the time of the failure, the Patriot battery had been up for around 100 hours. We can esti-
mate the error in the timing calculations by considering how the binary number was stored.
The binary representation of 1 is 0.00011. Note that it is a non-terminating, repeating bini-
10
mal. The 24 bit register in the Patriot could only hold the following set of bits:
This resultedinanerrorof0.000000000000000000000001100 2 . The error can be computed
in base 10 as:
e = 2 −24 + 2 −25 + 2 −28 + 2 −29 + 2 −32 + 2 −33 + ... (8.3)
∞
−(4i+24) −(4i+25)
= 2 + 2 (8.4)
i=0
≈ 9.5 × 10 −8 . (8.5)
To find out how much error was in the total time calculation, we multiply e by the number
of tenths of a second in 100 hours. This gives 9.5 × 10 −8 × 100 × 60 × 60 × 10 = 0.34
seconds. A SCUD missile travels at about 1,676 meters per second. Therefore it travels about
570 meters in 0.34 seconds. Because of this, the targeting and firing system was expecting to
find the Scud at a location that was over half a kilometer from where it really was. This was
far enough that the incoming Scud was outside the “range gate” that the Patriot tracked. It did
not detect the Scud at its predicted location, so it could not lock on and fire the Patriot.
This is an example of how a seemingly insignificant error can lead to a major failure. In this
case, it led to loss of life and serious injury. Ironically, one factor that contributed to the prob-
lem was that part of the code had been modified to provide more accurate timing calculations,
while another part had not. This meant that the inaccuracies did not cancel each other. Had
both sections of code been re-written, or neither section changed, then the issue probably
would not have surfaced.