# HG changeset patch # User unc0rr # Date 1211834472 0 # Node ID 237fc147950c9a745a4f5a30fc11ec75e235bced # Parent 9dd48265e0b928a553e158d70f9089014223f677 Fix bug in hwSqrt when calculating square root of number >= 65536 diff -r 9dd48265e0b9 -r 237fc147950c hedgewars/uFloat.pas --- a/hedgewars/uFloat.pas Mon May 26 18:10:51 2008 +0000 +++ b/hedgewars/uFloat.pas Mon May 26 20:41:12 2008 +0000 @@ -279,7 +279,7 @@ begin hwSqr.isNegative:=false; hwSqr.QWordValue:= QWord(t.Round) * t.Frac * 2 + ((QWord(t.Frac) * t.Frac) shr 32); -hwSqr.Round:= hwSqr.Round + QWord(t.Round) * t.Round +hwSqr.Round:= hwSqr.Round + t.Round * t.Round end; function hwSqrt(const t: hwFloat): hwFloat; @@ -295,7 +295,8 @@ end else begin l:= $100000000; - r:= t.QWordValue div 2 + $80000000 // r:= t / 2 + 0.5 + r:= t.QWordValue div 2 + $80000000; // r:= t / 2 + 0.5 + if r > $FFFFFFFFFFFF then r:= $FFFFFFFFFFFF end; repeat