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 return value of ungetc when argument is outside unsigned char range
[musl.git]
/
src
/
math
/
frexp.c
blob
27b6266ed0c1d7c5dadd06ecc186a994fdcd1c52
1
#include <math.h>
2
#include <stdint.h>
3
4
double
frexp
(
double
x
,
int
*
e
)
5
{
6
union
{
double
d
;
uint64_t
i
; }
y
= {
x
};
7
int
ee
=
y
.
i
>>
52
&
0x7ff
;
8
9
if
(!
ee
) {
10
if
(
x
) {
11
x
=
frexp
(
x
*
0x1
p
64
,
e
);
12
*
e
-=
64
;
13
}
else
*
e
=
0
;
14
return
x
;
15
}
else if
(
ee
==
0x7ff
) {
16
return
x
;
17
}
18
19
*
e
=
ee
-
0x3fe
;
20
y
.
i
&=
0x800fffffffffffff
ull
;
21
y
.
i
|=
0x3fe0000000000000
ull
;
22
return
y
.
d
;
23
}