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.
   295   296   297   298   299   300   301   302   303   304   305