Hát persze hogy nem. Mert hiányzik neki a TVision. És az fordul? Naná, hogy nem. És miért? Mert C++. Na jó, most megbuktam, ugyszintén a programozó kolléga:
static
unsigned iSqr( unsigned i )
{
unsigned res1 = 2;
unsigned res2 = i/res1;
while( abs( res1 - res2 ) > 1 )
{
res1 = (res1 + res2)/2;
res2 = i/res1;
}
return res1 < res2 ? res1 : res2;
}
Ezen a ponton az 'abs' felesleges, hiszen két 'unsigned' különbsége is 'unsigned'.
Szerk: a következő nagyon tudományos megoldással próbálkozom:
#define uns_abs_diff(i,j) ((i)>=(j)?(i)-(j):(j)-(i))