cplusplus / CWG

Core Working Group
23 stars 7 forks source link

CWG2892 [expr.arith.conv] Floating-point promotion rules are unclear #533

Open vasama opened 1 month ago

vasama commented 1 month ago

Full name of submitter: Lauri Vasama

Reference (section label): [expr.arith.conv]

Issue description:

Otherwise, if either operand is of floating-point type, the following rules are applied:

  • If both operands have the same type, no further conversion is needed.

No conversion is needed, but is it permitted? Is an implementation allowed to define the result of float + float as double? That does not seem like it is the intent, at least for standard floating-point types. What about extended floating-point types? Supposing that half is a narrower than float floating-point type such as an 8 or 16 bit float, half + half resulting in float may be quite reasonable on some architectures.

Suggested resolution:

Assuming that no such conversions should be permitted for any floating-point types:

- If both operands have the same type, no further conversion is needed.
+ If both operands have the same type, no further conversion is applied.
jensmaurer commented 1 month ago

CWG2892