did not work properly; assumet it could remove sign AFTER converting to
machine dependant order
This commit is contained in:
parent
c29ac899da
commit
1cf834f731
|
@ -21,7 +21,6 @@ _double d1,d2;
|
||||||
* return ((d1 < d2) ? 1 : (d1 > d2) ? -1 : 0))
|
* return ((d1 < d2) ? 1 : (d1 > d2) ? -1 : 0))
|
||||||
*/
|
*/
|
||||||
long l1,l2;
|
long l1,l2;
|
||||||
unsigned short *s1,*s2;
|
|
||||||
int sign1,sign2;
|
int sign1,sign2;
|
||||||
|
|
||||||
l1 = get4((char *)&d1);
|
l1 = get4((char *)&d1);
|
||||||
|
@ -31,27 +30,17 @@ _double d1,d2;
|
||||||
if (sign1 != sign2)
|
if (sign1 != sign2)
|
||||||
return ((sign1 > 0) ? -1 : 1);
|
return ((sign1 > 0) ? -1 : 1);
|
||||||
if (l1 != l2) { /* we can decide here */
|
if (l1 != l2) { /* we can decide here */
|
||||||
s1 = (unsigned short *) &l1;
|
return sign1 * (l1 < l2 ? 1 : -1) ;
|
||||||
s2 = (unsigned short *) &l2;
|
|
||||||
/* set both signs positive */
|
|
||||||
*s1 &= ~0x8000;
|
|
||||||
*s2 &= ~0x8000;
|
|
||||||
/* we already know they aren't equal so */
|
|
||||||
return (sign1 * ((l1 < l2) ? 1 : -1));
|
|
||||||
}
|
}
|
||||||
else { /* decide in 2nd half */
|
else { /* decide in 2nd half */
|
||||||
l1 = get4(((char *)&d1 + 4));
|
l1 = get4(((char *)&d1 + 4));
|
||||||
l2 = get4(((char *)&d2 + 4));
|
l2 = get4(((char *)&d2 + 4));
|
||||||
if (l1 == l2)
|
if (l1 == l2)
|
||||||
return(0);
|
return(0);
|
||||||
else {
|
if (l1 < 0)
|
||||||
s1 = (unsigned short *) &l1;
|
return l2 < 0 ? l2 > l1 : -1;
|
||||||
s2 = (unsigned short *) &l2;
|
if (l2 < 0)
|
||||||
if (*s1 == *s2) {
|
return 1;
|
||||||
s1++;
|
return l2 > l1 ? 1 : -1;
|
||||||
s2++;
|
|
||||||
}
|
|
||||||
return (sign1 * ((*s1 < *s2) ? 1 : -1));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue