This commit is contained in:
igor-m
2014-04-11 22:45:22 +02:00
parent 98d034efe1
commit bcff791a3c

View File

@@ -11,9 +11,25 @@
* isinff(x) returns 1 is x is inf, -1 if x is -inf, else 0; * isinff(x) returns 1 is x is inf, -1 if x is -inf, else 0;
* no branching! * no branching!
*/ */
int isinff (float x) typedef union {
float x;
struct {
long lxx;
};
} ival;
//int isinff (float x)
//{
// long lx = *(long*) &x;
// long v = (lx & 0x7fffffff) ^ 0x7f800000;
// return ~((v | -v) >> 31) & (lx >> 30);
//}
int isinff (float xx)
{ {
unsigned long lx = *(unsigned long*) &x; ival temp;
temp.x = xx;
long lx = temp.lxx;
long v = (lx & 0x7fffffff) ^ 0x7f800000; long v = (lx & 0x7fffffff) ^ 0x7f800000;
return ~((v | -v) >> 31) & (lx >> 30); return ~((v | -v) >> 31) & (lx >> 30);
} }