#include /* A float = FLOAT_SIGN * FLOAT_MANTISSA * (2 ^ FLOAT_EXPONENT) */ soft_float32_t decode_float(uint32_t raw) { soft_float32_t f; f.sign = (raw >> 31) & 1; f.exponent = (raw >> 23) & 0xFF; f.mantissa = raw & 0x7FFFFF; return f; } soft_float64_t decode_double(uint64_t raw) { soft_float64_t d; d.sign = (raw >> 63) & 1; d.exponent = (raw >> 52) & 0x7FF; d.mantissa = raw & 0xFFFFFFFFFFFFF; return d; }