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
select: overhaul for time64
[musl.git]
/
src
/
math
/
scalbnf.c
blob
a5ad208b69929f24336fae40e6af37101c99a72f
1
#include <math.h>
2
#include <stdint.h>
3
4
float
scalbnf
(
float
x
,
int
n
)
5
{
6
union
{
float
f
;
uint32_t
i
;}
u
;
7
float_t y
=
x
;
8
9
if
(
n
>
127
) {
10
y
*=
0x1
p
127
f
;
11
n
-=
127
;
12
if
(
n
>
127
) {
13
y
*=
0x1
p
127
f
;
14
n
-=
127
;
15
if
(
n
>
127
)
16
n
=
127
;
17
}
18
}
else if
(
n
< -
126
) {
19
y
*=
0x1
p
-
126
f
*
0x1
p
24
f
;
20
n
+=
126
-
24
;
21
if
(
n
< -
126
) {
22
y
*=
0x1
p
-
126
f
*
0x1
p
24
f
;
23
n
+=
126
-
24
;
24
if
(
n
< -
126
)
25
n
= -
126
;
26
}
27
}
28
u
.
i
= (
uint32_t
)(
0x7f
+
n
)<<
23
;
29
x
=
y
*
u
.
f
;
30
return
x
;
31
}