Originally posted by vigo@Nov 6 2005, 09:39 PM
hmmm tüh ya...
[post=2739]Quoted post[/post]
[/b]
Yaw boşver tühü mühü... Kullan C=Hacking'deki yöntemi. Özellikle 9. sayıda oldukça hızlı bir çarpma işlemi var tablo kullanarak (x²/4 tablosu). Hatta onu özelleştirerek oldukça hızlı işlemler yapabiliyorsun.
x²/4'ün mantığı da şöyle.
Diyelim ki a ile b'yi çarpacaksın. x²/4 tablosunun elemanları 0'dan 255'e kadar gidiyor... Bu durumda (a+b)inci elemandan (a-b)inci elemanı çıkarınca geriye a*b işleminin sonucu kalıyor. Hemen deneyelim.
a = 7
b = 4
f(a+b) - f(a-b) = a*b
f(7+4) - f(7-4) = 7*4
f(11) - f(3) = 7*4
Bu aşamada precalculated tablodan 11. ve 3. değerler okunacak. Burada biz hesaplayalım.
x²/4 ise;
(11²/4) - (3²/4) = 7*4
(121/4) - (9/4) = 7*4
(121-9) / 4 = 7*4
112 / 4 = 7 * 4
28 = 28
Ahanda doğruymuş işlem :)
Dikkat edilmesi gereken nokta işleme girmeden önce a ile b'nin sort edilmesi gerektiği. Ya da diğer bir deyişle formül şöyle
f(a+b) - f(|a-b|) = a*b
Bir mutlak değer giriyor işin içine.
Bu anlattıklarım pozitif işlemler için geçerli. Negatif çarpım için flag kullanabilir ya da 7 numaralı bitten yararlanabilirsin. Kolay gelsin Vigo kardeş.