46 uint32_t s = ((i>>16) & 0x8000);
47 int32_t e = ((i>>13) & 0x3fc00) - 0x1c000;
51 union { uint32_t i;
float f; } u;
53 return (uint16_t)(s|int(fabs(u.f)*1.6777216e7 + .5));
58 return (uint16_t)(s|0x7c00|((i&0x7fffff)>>13));
61 return (uint16_t)(s|0x7c00);