4 Haziran 1996’da Ariane 5 roketinin birinci uçuşu pek uygun gitmedi.Kalkıştan 40 saniye sonra devasa roket birdenbire uçuş yolundan saptı ve patladı.
Bunun nedeni küçük bir yazılım yanlışıydı: 64 bit kullanılarak temsil edilen kayan noktalı sayı, 16 bitlik işaretli tam sayıya dönüştürülmüştü.
Ancak sayı, 16 bitin temsil edebileceği azamî sayı olan 32.767’den büyük olduğundan dönüştürme başarısız oldu.
Bu taşma yanlışı, yazılımın kusur ayıklama datalarını, roketin motorlarını denetim etmek için kullanılan hafıza alanına boşaltmasına neden oldu.
Yedek bilgisayar da daha düzgününü yapamadı, bunun sonucunda roket denetimi kaybetti ve patladı. Bu kolay matematik yanılgılarının nelere yol açabileceğine dair yalnızca bir örnek…
Uçaklardaki hesaplamalar da çok hassas
2015 yılında yapılan testlerde, misal bir taşma yanılgısı, Boeing 787 uçaklarının jeneratör denetim ünitelerinin 248 gün boyunca daima açık kalması durumunda elektriğini kesebileceğini ortaya çıkardı.
Bu şartlar altında yazılım sayaçları 2.147.483.647’ye ulaşıyor; bu, 32 bitlik imzalı bir kayıt için azamî paha manasına geliyor. Yazılım azamî pahaya ulaştığında ise kendini kapatıyor.
Ancak uçakların bilgisayarlarını kapatıp tekrar açmak, tekrar çalışmalarını sağlamak için sayacı sıfırlıyordu. Neyse ki bu durum, şimdiye kadar felaketle sonuçlanmadı.
Bunun üzere taşma yanlışları yuvarlama kusurlarına benzese de ortalarında ince bir fark var. Yuvarlama yanlışı, bir sayının çok büyük olması yerine, ekseriyetle yanlış bir formda hesaplanıp ikili olarak saklanması durumunda ortaya çıkar.
Örneğin, kimi hesaplamaların sonuçları irrasyonel sayılardır: Pi sayısı (3,14159265…) üzere. Hiçbir vakit bitmez, bu yüzden Pi sayısını 3,14 üzere yaklaşık olarak söyleriz.
Ondalık sistemde 2/3 üzere kolay hesaplamalar bile tam olarak yazılamaz ve ikili sistemde 0,667’ye muadil olması gerekebilir.
Yuvarlama yanılgıları füzelerin bahtını belirleyebilir
Bu tıp yanılgıların en meşhur örneklerinden biri Körfez Savaşı’nda yaşandı. Gelen bir Scud füzesini durdurmak için Patriot füzesi fırlatıldı.
Ancak fırlatılan füze, karşıdan gelen füzeyi durdurmak yerine bir kışlaya çarptı ve 28 askerin vefatına yol açtı. Bunun nedeni, takip sistemindeki birikmiş olan yuvarlama kusuruydu.
Olayın akabinde yapılan incelemeler, bu hatanın, bilgisayar aritmetik yanlışları nedeniyle önyüklemeden bu yana geçen mühletin yanlış hesaplanması olduğu ortaya çıktı.
Sistem, vakti 0.1 saniyelik kesirler olarak hesaplıyordu, lakin bu bedel, daima olarak birikerek vakitle büyüyen bir kusur oluşturdu.
Sistemin uzun müddet açık kalması (100 saatten fazla), bu yuvarlama yanlışının değerli bir sapmaya yol açmasına neden oldu.
Bu trajik olayın akabinde, Patriot sistemlerinde yazılım güncellemeleri yapıldı ve benzeri kusurların önlenmesi için ek denetimler getirildi.
Sleipner A platformunun batması olayı
23 Ağustos 1991’de Norveç’in Stavanger kenti yakınlarındaki Gandsfjorden’de Sleipner A açık deniz platformunun batması, yaklaşık bir milyar dolarlık kayba yol açtı.
Sleipner A platformu, Kuzey Denizi’nde petrol ve gaz üretiyor ve 82 m su derinliğinde deniz yatağında destekleniyordu.
24 hücreden oluşan ve toplam taban alanı 16 bin metrekareolan, kolay bir kusur yüzünden battı.
Kazanın çabucak akabinde platformun sahibi Norveçli petrol şirketi Statoil, bir araştırma kümesi görevlendirdi.
Soruşturmada, kaybın hücre duvarındaki bir arızadan kaynaklandığı, bunun sonucunda önemli bir çatlak ve pompaların baş edemediği bir sızıntı meydana geldiği belirlendi.
Kazanın, inşaat kademesindeki kolay bir matematik kusuru nedeniyle kayma gerilmelerinin eksik iddia edilmesi sonucu oluştuğu ortaya çıktı. Kelam konusu kusur, beton duvarlardan kimilerinin yeterinde kalın yapılmamasına yol açtı.