Kayan nokta aritmetiği, gerçek matematikten oldukça farklıdır. Özellikle, kayan nokta aritmetiği ilişkilendirici veya dağıtıcı değildir. Bu nedenle, matematiksel olarak eşdeğer ifadeler, sınırlı sonlu kayan noktalı aritmetik ile değerlendirildiğinde mutlaka eşdeğer değildir. Bu, toplama, çıkarma, çarpma, bölme ve karekök gibi bireysel işlemlerin, IEEE-754 floating-point standard'un gerektirdiği gibi doğru sonuçlar elde ettiğinde bile bu durum geçerlidir.
Bu durumda g()
, f()
'dan ve aynı zamanda x = 500
özel durumu için çok daha doğru olacaktır. Bunun nedeni, f()
'un eksiltici iptalden kaynaklanmasıdır. Bu, hemen hemen aynı büyüklükteki iki kayan noktalı sayının etkili çıkarılması sırasında ortaya çıkar. Öncelikli basamaklar, çıkarma sırasında iptal eder ve sonraki hesaplamaya giren geriye kalan birkaç rakamı bırakır. Ayrıca, çıkarılmak istenen orijinal işlenenlerin sondaki rakamlarında biriken herhangi bir yuvarlama hatası müteakip hesaplama ile büyütülebilir. Örnekle genişletilmiş bir açıklama this Wikipedia article'da bulunabilir. Bu durumda, sqrt(x+1)
ve sqrt(x)
sqrt(x+1)
ve sqrt(x)
, özellikle x
'un büyüklüğü arttıkça hemen hemen aynı büyüklüktedir. x = 500
örneği kullanılarak ve IEEE-754 tek hassas aritmetik kullanılarak, sürekli olarak: g(500)
doğru tek duyarlıklı sonucu yuvarlak verirken f(500)
içinde
x = 500 f(x) = 0x1.659ae0p+3 (11.175156) reference = 0x1.659798p+3 (11.174755)
x = 500 g(x) = 0x1.659798p+3 (11.174755) reference = 0x1.659798p+3 (11.174755)
hata, 420 ulps olup.
SO için Waaaay konu dışı, yerine [math.stackexchange] (http://math.stackexchange.com/) deneyin. –
Hello Claire, StackExchange farklı konulara odaklanarak birden fazla sayfaya bölünmüştür. Bunlardan biri [Matematik] (http://math.stackexchange.com/). Sorunuzu orada sormalısınız. – Stefan
Teşekkürler, ben sadece –