Similar to #2438 . I assume it is safe for `/fp:fast`. Not sure about other FP modes and how to handle FP corner cases such as denormals or singalings.