Aşağıdaki C işlevi fastapprox projesinden alınmıştır.Bu C kodunda kullanılan IEEE-754 üssü öneki değeri 127 yerine 126.94269504 olur?
static inline float
fasterlog2 (float x)
{
union { float f; uint32_t i; } vx = { x };
float y = vx.i;
y *= 1.1920928955078125e-7f;
return y - 126.94269504f;
}
burada bazı uzmanlar yukarıdaki kodu kullanılan üs önyargı 126,94269504 yerine 127 neden açıklayabilir misiniz? Daha doğru önyargı değeri mi?
derleyici uyarı 'y yüzer = vx.i “olası veri kaybı”. –
Neden onu yazan birisine sormuyorsunuz? Bu gerçekten bir kodlama sorusu değil, daha çok bir algoritma sorusu, değil mi? – Dan
@Dan - Evet, fakat C geliştiricileri C kodunu okuyan kişilerdir ve genellikle düşük seviyeli bir bilgiyle ilgilenirler. Benim googlingime göre, fastapprox'ta uygulanan fonksiyonları kullanan çok sayıda C projesi var, bu yüzden bu sorunun cevabı C geliştiricileri için de yararlıdır. Bir tane daha söylemek gerekirse, neden yazarın sorusunu cevaplamanın tek yolu cevaplandırıyor? Burada farklı uzmanlardan daha hızlı yanıtlar alabiliyorum. – Astaroth