PyTorch float64 casts may drop double-rounding via float32
A proposed conversion change would move default numeric results, and some CPU complex32 fills would return infinity instead of raising.
PyTorch is weighing a change to how 64-bit floats are cast to lower precision, and maintainers have not yet accepted it as a compatibility break.
Conversions from float64 to float16, bfloat16, the float8 formats, and complex32 currently round twice, once into float32 and again into the destination type. The change would round once, directly into the target type. Default results would move for tensor casts and copies, scalar fills, iterator output casts, CUDA kernels that use the jiterator, and the vectorized CPU conversions used by Inductor, as well as the convert helpers that extensions call. Users who need the old results can still force a double round by casting through float32 first.
An automated review found no correctness or security defect in the new rounding, but said a maintainer must sign off, label the break, and add a release note. A supporting maintainer is still listed as a to-do.
The same review flagged a split in complex32 fills. Filling two or more elements on CPU would use an unchecked conversion, so a value such as 1e39 that used to raise would become infinity. The one-element CPU path and the CUDA fill would still raise. That disagreement has not been resolved.