Browse Prior Art Database

Corrective Rounding on a Denormalized IEEE Floating Point Result which was Rounded as Normalized

IP.com Disclosure Number: IPCOM000105214D
Original Publication Date: 1993-Jun-01
Included in the Prior Art Database: 2005-Mar-19
Document File: 1 page(s) / 34K

Publishing Venue

IBM

Related People

Fagat, RR: AUTHOR [+2]

Abstract

For timing reasons Floating Point denormalized results may be rounded at an incorrect bit position. The result which was possibly incremented due to rounding can be fixed so that it appears to have been denormalized and then rounded while the effects of the first rounding are nullified.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 98% of the total text.

Corrective Rounding on a Denormalized IEEE Floating Point Result which was Rounded as Normalized

      For timing reasons Floating Point denormalized results may be
rounded at an incorrect bit position.  The result which was possibly
incremented due to rounding can be fixed so that it appears to have
been denormalized and then rounded while the effects of the first
rounding are nullified.

      A second rounding takes place on the shifted operand in the
correct least significant bit for the denormalized result, which
overcomes the first rounding in addition to the application of the
correct rounding required on the denormalized result.  The following
algorithm correctly accomplishes this correction and round:

1.  Initial Rounding:  If the LSB (Least Significant Bit) is
    incremented due to rounding then clear all rounding bits (Guard
    and Sticky), otherwise retain them for the subsequent
    denormalization shifting of the fraction.  If denormalization

    does not take place then these rounding bits are simply not
    included as part of the result.  A special signal indicates that
    the LSB was incremented.
2.  Denormal Rounding:  If the LSB was previously incremented
    (indicated by aforementioned special signal) and the Guard and
    Sticky bits equal '1' and '0', respectively, then force the Guard
    and Sticky bits to equal '0' and '1'.  For all other cases, leave
    the Guard and Sticky bits unaltered.

Disclo...