From: Crt Mori > Sent: 20 December 2017 17:30 > I did a quick run through unit tests for the sensor and the results > are way off > ... Try this version instead: unsigned int sqrt64(unsigned long long x_in) { unsigned int x = x_in >> 32; unsigned int b = 0; unsigned int y = 0; unsigned int i; i = 31; if (!x) { x = x_in; i = 15; } if (!(x & 0xffff0000)) { x <<= 16; i -= 8; } if (!(x & 0xff000000)) { x <<= 8; i -= 4; } if (!(x & 0xf0000000)) { x <<= 4; i -= 2; } do { b <<= 2; b |= x >> 30; x <<= 2; if (i == 16) x = x_in; y <<= 1; if (b > y) { b -= ++y; y++; } } while (--i); /* 'b' becomes 33 bits if the input is greater than 2^62 */ b <<= 1; b |= x >> 31; if (b > y || (b == y && x & (1u << 30))) y |= 1; return y; } I've tested that one with more values. David ��.n��������+%������w��{.n�����{��(��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥