On 12/11/2017 04:57 AM, Alex Bennée wrote: > + } > + if (p.exp < DECOMPOSED_BINARY_POINT) { > + return p.frac >> (DECOMPOSED_BINARY_POINT - p.exp); > + } else if (p.exp < 64) { > + return p.frac << (p.exp - DECOMPOSED_BINARY_POINT); > + } else { > + return UINT64_MAX; > + } > + default: > + g_assert_not_reached(); > + } > +} > + > +static uint16_t uint16_pack_decomposed(decomposed_parts p, float_status *s) > +{ > + uint64_t r = uint64_pack_decomposed(p, s); > + return r > UINT16_MAX ? UINT16_MAX : r; > +} > + > +static uint32_t uint32_pack_decomposed(decomposed_parts p, float_status *s) > +{ > + uint64_t r = uint64_pack_decomposed(p, s); > + return r > UINT32_MAX ? UINT32_MAX : r; > +}
Missing float_flag_invalid for unsigned overflows. r~