int isqrt4(unsigned x) { unsigned m, y, b; m = 0x40000000; // position premier bit y = 0; // la racine while(m != 0) { // on boucle 16 fois. b = y | m; // valeur du gnomon y = y >> 1; // division par 2 (plus 1 ? voire) if (x >= b) { // plus 1 si on peut x = x - b; // soustraction du gnomon y = y | m; // plus 1 finalement } m = m >> 2; // division par 4 } return y; }