Skip to content

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

@vasama

Description

@vasama

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions