repo.or.cz
/
musl.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
fix struct layout mismatch in sound ioctl time32 fallback conversion
[musl.git]
/
src
/
math
/
ilogbf.c
blob
e23ba209ec4cd1c7648ca903e6b3aa948c6dc053
1
#include <limits.h>
2
#include
"libm.h"
3
4
int
ilogbf
(
float
x
)
5
{
6
#pragma STDC FENV_ACCESS ON
7
union
{
float
f
;
uint32_t
i
;}
u
= {
x
};
8
uint32_t
i
=
u
.
i
;
9
int
e
=
i
>>
23
&
0xff
;
10
11
if
(!
e
) {
12
i
<<=
9
;
13
if
(
i
==
0
) {
14
FORCE_EVAL
(
0
/
0.0
f
);
15
return
FP_ILOGB0
;
16
}
17
/* subnormal x */
18
for
(
e
= -
0x7f
;
i
>>
31
==
0
;
e
--,
i
<<=
1
);
19
return
e
;
20
}
21
if
(
e
==
0xff
) {
22
FORCE_EVAL
(
0
/
0.0
f
);
23
return
i
<<
9
?
FP_ILOGBNAN
:
INT_MAX
;
24
}
25
return
e
-
0x7f
;
26
}