reported on the cause of the failure. It turns out that the cause was an inaccurate calculation of the time since boot due to computer arithmetic errors. Specifically, the time in tenths of second as measured by the system's internal clock was multiplied by 1/10 to produce the time in seconds. This calculation was performed using a 24 bit fixed point register. In particular, the value 1/10, which has a non-terminating binary expansion, was chopped at 24 bits after the radix point. The small chopping error, when multiplied by the large number giving the time in tenths of a second, lead to a significant error. Indeed, the Patriot battery had been up around 100 hours, and an easy calculation shows that the resulting time error due to the magnified chopping error was about 0.34 seconds. (The number 1/10 equals 1/2Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia

The following paragraph is excerpted from the GAO report.

*The range gate's prediction of where the Scud will next appear is
a function of the Scud's known velocity and the time of the last radar
detection. Velocity is a real number that can be expressed as a whole number
and a decimal (e.g., 3750.2563...miles per hour). Time is kept continuously
by the system's internal clock in tenths of seconds but is expressed as
an integer or whole number (e.g., 32, 33, 34...). The longer the system
has been running, the larger the number representing time. To predict where
the Scud will next appear, both time and velocity must be expressed as
real numbers. Because of the way the Patriot computer performs its calculations
and the fact that its registers are only 24 bits long, the conversion of
time from an integer to a real number cannot be any more precise than 24
bits. This conversion results in a loss of precision causing a less accurate
time calculation. The effect of this inaccuracy on the range gate's calculation
is directly proportional to the target's velocity and the length of the
the system has been running. Consequently, performing the conversion after
the Patriot has been running continuously for extended periods causes the
range gate to shift away from the center of the target, making it less
likely that the target, in this case a Scud, will be successfully intercepted.*

The report of the Inquiry Board is available in English or in the original French. The following paragraphs are extracted from that report.

*On 4 June 1996, the maiden flight of the Ariane 5 launcher ended
in a failure. Only about 40 seconds after initiation of the flight sequence,
at an altitude of about 3700 m, the launcher veered off its flight path,
broke up and exploded.*

*The failure of the Ariane 501 was caused by the complete loss of
guidance and attitude information 37 seconds after start of the main engine
ignition sequence (30 seconds after lift-off). This loss of information
was due to specification and design errors in the software of the inertial
reference system.*

*The internal SRI* software exception was caused during execution
of a data conversion from 64-bit floating point to 16-bit signed integer
value. The floating point number which was converted had a value greater
than what could be represented by a 16-bit signed integer.*

*SRI stands for Système de Référence
Inertielle or Inertial Reference System.