The Explosion of the Ariane 5: I was watching Modern Marvels tonight (easily my favorite show in the whole, wide world, ever), and it was another installment in their “Engineering Disasters” series. They had a bit on the Ariane 5 — a rocket that lost control on liftoff in 1996 and had to be destroyed at a cost of a half-billion dollars.
What was the problem? A single datatype:
It turned out that the cause of the failure was a software error in the inertial reference system. Specifically a 64 bit floating point number relating to the horizontal velocity of the rocket with respect to the platform was converted to a 16 bit signed integer. The number was larger than 32,767, the largest integer storeable in a 16 bit signed integer, and thus the conversion failed.
Software from the Ariane 4 was carried over and modified for the Ariane 5. However, the newer rocket accelerated faster than the older one, so the value in this variable had the potential to be much larger than the variable could hold.
Here’s the full report. Score one for weakly-typed languages.