a proposed fix to the qword_to_float64 problem

git-svn-id: trunk@28318 -
This commit is contained in:
Károly Balogh 2014-08-06 15:14:52 +00:00
parent b898b169d4
commit 3c8b24eead

View File

@ -2868,6 +2868,8 @@ point value corresponding to the abstract input. This routine is just like
`roundAndPackFloat64' except that `zSig' does not have to be normalized.
Bit 63 of `zSig' must be zero, and `zExp' must be 1 less than the ``true''
floating-point exponent.
--
additionally the Pascal version should support Bit 63 set in 'zSig'
----------------------------------------------------------------------------
*}
@ -2876,7 +2878,10 @@ function normalizeRoundAndPackFloat64(zSign: flag; zExp: int16; zSig: bits64): f
shiftCount: int8;
begin
shiftCount := countLeadingZeros64( zSig ) - 1;
result := roundAndPackFloat64( zSign, zExp - shiftCount, zSig shl shiftCount);
if ( shiftCount <= 0) then
result := roundAndPackFloat64( zSign, zExp - shiftCount, zSig shr (-shiftCount))
else
result := roundAndPackFloat64( zSign, zExp - shiftCount, zSig shl shiftCount);
end;
{*