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);