Contents of /alx-src/tags/kernel26-2.6.12-alx-r9/lib/int_sqrt.c
Parent Directory
|
Revision Log
Revision 630 -
(show annotations)
(download)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 514 byte(s)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 514 byte(s)
Tag kernel26-2.6.12-alx-r9
1 | |
2 | #include <linux/kernel.h> |
3 | #include <linux/module.h> |
4 | |
5 | /** |
6 | * int_sqrt - rough approximation to sqrt |
7 | * @x: integer of which to calculate the sqrt |
8 | * |
9 | * A very rough approximation to the sqrt() function. |
10 | */ |
11 | unsigned long int_sqrt(unsigned long x) |
12 | { |
13 | unsigned long op, res, one; |
14 | |
15 | op = x; |
16 | res = 0; |
17 | |
18 | one = 1 << 30; |
19 | while (one > op) |
20 | one >>= 2; |
21 | |
22 | while (one != 0) { |
23 | if (op >= res + one) { |
24 | op = op - (res + one); |
25 | res = res + 2 * one; |
26 | } |
27 | res /= 2; |
28 | one /= 4; |
29 | } |
30 | return res; |
31 | } |
32 | EXPORT_SYMBOL(int_sqrt); |