BUG: Fix rounding of denormals in double and float to half casts
Previously the significand was shifted right to align denormals of
different magnitude. This loses some bits that can make a difference
for rounding. This is fixed:
- For floats, by inspecting the original last bits when this may make a difference (should happen rarely)
- For doubles by shifting the bits left to align the denromals and thus not lose the lowest orginal bits.