Changeset cf4a823 in mainline for softfloat/generic/comparison.c


Ignore:
Timestamp:
2005-12-22T12:11:35Z (20 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
75a23abf
Parents:
ef0aa999
Message:

Fixed some bugs in softfloat after tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • softfloat/generic/comparison.c

    ref0aa999 rcf4a823  
    5050inline int isFloat32eq(float32 a, float32 b)
    5151{
    52         return ((a==b)||(((a.binary| b.binary)&0x7FFFFFFF)==0)); /* a equals to b or both are zeros (with any sign) */
     52        return ((a.binary==b.binary)||(((a.binary| b.binary)&0x7FFFFFFF)==0)); /* a equals to b or both are zeros (with any sign) */
    5353}
    5454
     
    5959{
    6060        if (((a.binary| b.binary)&0x7FFFFFFF)==0) {
    61                 return 0;
     61                return 0; /* +- zeroes */
    6262        };
    63         a.parts.sign^=a.parts.sign;
    64         b.parts.sign^=b.parts.sign;
     63       
     64        if ((a.parts.sign)&&(b.parts.sign)) {
     65                /*if both are negative, smaller is that with greater binary value*/
     66                return (a.binary>b.binary);
     67                };
     68       
     69        /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/
     70        a.parts.sign=!a.parts.sign;
     71        b.parts.sign=!b.parts.sign;
    6572        return (a.binary<b.binary);
    6673                       
     
    7380{
    7481        if (((a.binary| b.binary)&0x7FFFFFFF)==0) {
    75                 return 0;
     82                return 0; /* zeroes are equal with any sign */
    7683        };
    77         a.parts.sign^=a.parts.sign;
    78         b.parts.sign^=b.parts.sign;
     84       
     85        if ((a.parts.sign)&&(b.parts.sign)) {
     86                /*if both are negative, greater is that with smaller binary value*/
     87                return (a.binary<b.binary);
     88                };
     89       
     90        /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/
     91        a.parts.sign=!a.parts.sign;
     92        b.parts.sign=!b.parts.sign;
    7993        return (a.binary>b.binary);
    8094                       
Note: See TracChangeset for help on using the changeset viewer.