improved float32 handling