On Jun 5, 2012, at 2:45 PM, John McCall <[email protected]> wrote:

> On Jun 5, 2012, at 2:15 PM, Stephen Canon wrote:
> 
>> On Jun 5, 2012, at 1:51 PM, Chandler Carruth <[email protected]> wrote:
>> 
>>> That said, FP_CONTRACT doesn't apply to C++, and it's quite unlikely to 
>>> become a serious part of the standard given these (among other) 
>>> limitations. Curiously, in C++11, it may not be needed to get the benefit 
>>> of fused multiply-add:
>> 
>> Perversely, a strict reading of C++11 seems (to me) to not allow FMA 
>> formation in C++ at all:
>> 
>>      • The values of the floating operands and the results of floating 
>> expressions may be represented in greater precision and range than that 
>> required by the type; the types are not changed thereby. 
>> 
>> FMA formation does not increase the precision or range of the result (it may 
>> or may not have smaller error, but it is not more precise), so this 
>> paragraph doesn't actually license FMA formation.  I can't find anywhere 
>> else in the standard that could (though I am *far* less familiar with C++11 
>> than C11, so I may not be looking in the right places).
> 
> Correct me if I'm wrong, but I thought that an FMA could be formalized as 
> representing the result of the multiply with greater precision than the 
> operation's type actually provides, and then using that as the operand of the 
> addition.  It's understand that that can change the result of the addition in 
> ways that aren't just "more precise".  Similarly, performing 'float' 
> operations using x87 long doubles can change the result of the operation, but 
> I'm pretty sure that the committees explicitly had hardware limitations like 
> that in mind when they added this language.

That's an interesting point.  I'm inclined to agree with this interpretation 
(there are some minor details about whether or not 0*INF + NAN raises the 
invalid flag, but let's agree to ignore that).

I'm not familiar enough with the language used in the C++ spec to know whether 
this makes C++ numerics equivalent to STDC FP_CONTRACT on, or equivalent to 
"allow greedy FMA formation".  Anyone?

- Steve
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to