Hi, All ! As far as I understand the comparison of 0.0 and -0.0 should give the equal answer, but the current implementation does not do so. Here is the corrected __cmpsf source:
int __cmpsf2(long a1, long a2) { if(a1 == a2) return 0; if(a1<0 && a2<0) { a1 ^= 0x80000000; a2 ^= 0x80000000; if(a1<a2) return 1; return -1; } if((a1|a2)==0x80000000)return 0; //Special case for -0.0==0.0 if(a1>a2) return 1; return -1; } I have added only one line (one with the comment). All the best ! Oleg