mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-07 10:20:29 +00:00
added macros from musl-1.2.2
macros taken from musl-1.2.2/src/internal/libm.h
This commit is contained in:
parent
eb906e6def
commit
911c8dc41a
1 changed files with 43 additions and 0 deletions
|
@ -3,6 +3,49 @@
|
||||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||||
COSMOPOLITAN_C_START_
|
COSMOPOLITAN_C_START_
|
||||||
|
|
||||||
|
#define asuint(f) ((union{float _f; uint32_t _i;}){f})._i
|
||||||
|
#define asfloat(i) ((union{uint32_t _i; float _f;}){i})._f
|
||||||
|
#define asuint64(f) ((union{double _f; uint64_t _i;}){f})._i
|
||||||
|
#define asdouble(i) ((union{uint64_t _i; double _f;}){i})._f
|
||||||
|
|
||||||
|
#define EXTRACT_WORDS(hi,lo,d) \
|
||||||
|
do { \
|
||||||
|
uint64_t __u = asuint64(d); \
|
||||||
|
(hi) = __u >> 32; \
|
||||||
|
(lo) = (uint32_t)__u; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define GET_HIGH_WORD(hi,d) \
|
||||||
|
do { \
|
||||||
|
(hi) = asuint64(d) >> 32; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define GET_LOW_WORD(lo,d) \
|
||||||
|
do { \
|
||||||
|
(lo) = (uint32_t)asuint64(d); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define INSERT_WORDS(d,hi,lo) \
|
||||||
|
do { \
|
||||||
|
(d) = asdouble(((uint64_t)(hi)<<32) | (uint32_t)(lo)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define SET_HIGH_WORD(d,hi) \
|
||||||
|
INSERT_WORDS(d, hi, (uint32_t)asuint64(d))
|
||||||
|
|
||||||
|
#define SET_LOW_WORD(d,lo) \
|
||||||
|
INSERT_WORDS(d, asuint64(d)>>32, lo)
|
||||||
|
|
||||||
|
#define GET_FLOAT_WORD(w,d) \
|
||||||
|
do { \
|
||||||
|
(w) = asuint(d); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define SET_FLOAT_WORD(d,w) \
|
||||||
|
do { \
|
||||||
|
(d) = asfloat(w); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
_Complex double __ldexp_cexp(_Complex double, int) hidden;
|
_Complex double __ldexp_cexp(_Complex double, int) hidden;
|
||||||
_Complex float __ldexp_cexpf(_Complex float, int) hidden;
|
_Complex float __ldexp_cexpf(_Complex float, int) hidden;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue