54 static struct half half_from_float(float f)
59 memcpy(&IValue, &f,
sizeof(IValue));
60 uint32_t Sign = (IValue & 0x80000000U) >> 16U;
61 IValue = IValue & 0x7FFFFFFFU;
63 if (IValue > 0x477FE000U) {
65 if (((IValue & 0x7F800000) == 0x7F800000) &&
66 ((IValue & 0x7FFFFF) != 0)) {
74 if (IValue < 0x38800000U) {
77 uint32_t Shift = 113U - (IValue >> 23U);
78 IValue = (0x800000U | (IValue & 0x7FFFFFU)) >> Shift;
81 IValue += 0xC8000000U;
84 Result = ((IValue + 0x0FFFU + ((IValue >> 13U) & 1U)) >> 13U) &
89 h.
u = (uint16_t)(Result | Sign);
93 static struct half half_from_bits(uint16_t
u)