Blame view
lib/int_sqrt.c
533 Bytes
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <linux/kernel.h> #include <linux/module.h> /** * int_sqrt - rough approximation to sqrt * @x: integer of which to calculate the sqrt * * A very rough approximation to the sqrt() function. */ unsigned long int_sqrt(unsigned long x) { unsigned long op, res, one; op = x; res = 0; |
f0c00257d [PATCH] lib: Fix ... |
17 |
one = 1UL << (BITS_PER_LONG - 2); |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
while (one > op) one >>= 2; while (one != 0) { if (op >= res + one) { op = op - (res + one); res = res + 2 * one; } res /= 2; one /= 4; } return res; } EXPORT_SYMBOL(int_sqrt); |