Name: Anonymous 2008-06-04 10:39
GO!
#include <limits.h>
#define ISQRT(n)\
({ __typeof__(n) r = 0, _n = (n), i = 1;\
i = i << ((sizeof(i) * CHAR_BIT - (0 > ~i ? 2 : 1)) / 2) * 2;\
if(0 > _n) _n = -n;\
for(; i; i >>= 2)\
if(_n >= (i | r)) {\
_n -= i | r;\
r = r >> 1 | i;\
} else r >>= 1;\
r; })