wordToFloat :: Word32 -> Float
wordToFloat (W32# x) = runST $ ST $ \s1 ->
    case newByteArray# 4# s1 of
        (# s2, mbarr #) ->
            let !s3 = writeWord32Array# mbarr 0# x s2
             in case readFloatArray# mbarr 0# s3 of
                    (# s4, f #) -> (# s4, F# f #)

wordToFloat :: Word32 -> Float
wordToFloat (W32# x) = runST $ ST $ \s1 ->
    case newByteArray# 4# s1 of
        (# s2, mbarr #) ->
            let !s3 = writeWord32Array# mbarr 0# x s2
             in case readFloatArray# mbarr 0# s3 of
                    (# s4, f #) -> (# s4, F# f #)

wordToFloat (W32# x) = runST $ ST $ \s1 ->
    case newByteArray# 4# s1 of
        (# s2, mbarr #) ->
            let !s3 = writeWord32Array# mbarr 0# x s2
             in case readFloatArray# mbarr 0# s3 of
                    (# s4, f #) -> (# s4, F# f #)
