equal
deleted
inserted
replaced
316 var t: hwFloat; |
316 var t: hwFloat; |
317 begin |
317 begin |
318 z.isNegative:= z1.isNegative xor z2.isNegative; |
318 z.isNegative:= z1.isNegative xor z2.isNegative; |
319 z.Round:= z1.QWordValue div z2.QWordValue; |
319 z.Round:= z1.QWordValue div z2.QWordValue; |
320 t:= z1 - z2 * z.Round; |
320 t:= z1 - z2 * z.Round; |
321 if t.QWordValue = 0 then |
321 z.Frac:= 0; |
322 z.Frac:= 0 |
322 |
323 else |
323 if t.QWordValue <> 0 then |
324 begin |
324 begin |
325 while ((t.QWordValue and $8000000000000000) = 0) and ((z2.QWordValue and $8000000000000000) = 0) do |
325 while ((t.QWordValue and $FF00000000000000) = 0) and ((z2.QWordValue and $FF00000000000000) = 0) do |
326 begin |
326 begin |
327 t.QWordValue:= t.QWordValue shl 1; |
327 t.QWordValue:= t.QWordValue shl 8; |
328 z2.QWordValue:= z2.QWordValue shl 1 |
328 z2.QWordValue:= z2.QWordValue shl 8 |
329 end; |
329 end; |
|
330 |
330 if z2.Round > 0 then |
331 if z2.Round > 0 then |
331 z.Frac:= (t.QWordValue) div (z2.Round) |
332 inc(z.QWordValue, t.QWordValue div z2.Round); |
332 else |
|
333 z.Frac:= 0 |
|
334 end |
333 end |
335 end; |
334 end; |
336 |
335 |
337 operator / (const z1: hwFloat; const z2: LongInt) z : hwFloat; inline; |
336 operator / (const z1: hwFloat; const z2: LongInt) z : hwFloat; inline; |
338 begin |
337 begin |