iPXE
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
Data Structure Index
+
Data Fields
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
_
b
d
i
p
s
t
u
v
x
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
+
Enumerations
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
core
isqrt.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2014 Michael Brown <mbrown@fensystems.co.uk>.
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License as
6
* published by the Free Software Foundation; either version 2 of the
7
* License, or any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17
* 02110-1301, USA.
18
*
19
* You can also choose to distribute this program under the terms of
20
* the Unmodified Binary Distribution Licence (as given in the file
21
* COPYING.UBDL), provided that you have satisfied its requirements.
22
*/
23
24
FILE_LICENCE
( GPL2_OR_LATER_OR_UBDL );
25
26
/** @file
27
*
28
* Integer square root
29
*
30
*/
31
32
#include <
ipxe/isqrt.h
>
33
34
/**
35
* Find integer square root
36
*
37
* @v value Value
38
* @v isqrt Integer square root of value
39
*/
40
unsigned
long
isqrt
(
unsigned
long
value
) {
41
unsigned
long
result
= 0;
42
unsigned
long
bit
= ( 1UL << ( ( 8 *
sizeof
(
bit
) ) - 2 ) );
43
44
while
(
bit
>
value
)
45
bit
>>= 2;
46
while
(
bit
) {
47
if
(
value
>= (
result
+
bit
) ) {
48
value
-= (
result
+
bit
);
49
result
= ( (
result
>> 1 ) +
bit
);
50
}
else
{
51
result
>>= 1;
52
}
53
bit
>>= 2;
54
}
55
return
result
;
56
}
isqrt
unsigned long isqrt(unsigned long value)
Find integer square root.
Definition:
isqrt.c:40
bit
static unsigned int unsigned int bit
Definition:
bigint.h:391
value
pseudo_bit_t value[0x00020]
Definition:
arbel.h:13
FILE_LICENCE
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
isqrt.h
Integer square root.
result
uint16_t result
Definition:
hyperv.h:33
Generated by
1.8.15