Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
lib
int_sqrt.c
Go to the documentation of this file.
1
2
#include <linux/kernel.h>
3
#include <linux/export.h>
4
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
UL
<< (
BITS_PER_LONG
- 2);
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
);
Generated on Thu Jan 10 2013 14:55:37 for Linux Kernel by
1.8.2