Files
Upsilon/liba/src/ieee754.c
Romain Goyet a1f1e2df6a [liba] isinf/isnan both work on double
Change-Id: I08e0c338e343a5357b91ed3a3f2e63db37efc983
2017-08-03 14:51:00 +02:00

38 lines
545 B
C

#include <private/ieee754.h>
uint32_t ieee754man32(float x) {
union {
float f;
uint32_t i;
} u;
u.f = x;
return (u.i & ((1<<23)-1));
}
uint8_t ieee754exp32(float x) {
union {
float f;
uint32_t i;
} u;
u.f = x;
return (u.i >> 23) & 0xFF;
}
uint64_t ieee754man64(double x) {
union {
double d;
uint64_t i;
} u;
u.d = x;
return (u.i & (((uint64_t)1<<52)-1));
}
uint16_t ieee754exp64(double x) {
union {
double d;
uint64_t i;
} u;
u.d = x;
return (uint16_t)((u.i >> 52) & 0x7FF);
}