...
Footnote 142 says a cast may be used to remove extra range and precision from the return expression. This means a predictable program must have casts on all floating-point function calls (except where the function directly feeds an operator like assignment that implies the conversion). With type-generic math (tgmath), the programmer has to reason through the tgmath resolution rules to determine which casts to apply. These are significant obstacles to writing predictable code.
NOTE: WG14 has voted to include the following text in C1X. This only impacts implementations that implement the optional Annex F "IEC 60559 floating-point arithmetic".
Require return expressions to be converted as if by assignment to the type of the function, but only in Annex F. This is a compromise that addresses the problems for Annex F implementations while not impacting non-Annex F implementations that exercise the license for wide returns.
Insert the following new subclause after F.5 (and increment subsequent subclause numbers):
F.6 The return statement
If the return expression is evaluated in a floating-point format different from the return type, then the expression is converted to the return type of the function and the resulting value is returned to the caller.