This seems correct to me.
Note that there are transformations from double to float that still are UB. I couldn't find documentation on those.
I suspected that the use of `<=` and `>=` combined with the transformation from decimal to binary at compile time of `-2147483648.0`, `2147483648.0`, and `4294967296.0` could include more values that the intended in the checks, but I see now that this is not the case since both float and double can exactly represent these values.