decode to 32 bit float instead, to make it easy to handle clipping later