Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!usenet.stanford.edu!news.iecc.com!.POSTED!nerds-end From: christian.bau@cbau.wanadoo.co.uk Newsgroups: comp.compilers Subject: Re: Compiler optimization and floating point operations Date: Mon, 28 Oct 2013 15:50:07 -0700 (PDT) Organization: Compilers Central Lines: 8 Sender: johnl@iecc.com Approved: comp.compilers@iecc.com Message-ID: <13-10-037@comp.compilers> References: <13-10-026@comp.compilers> <13-10-029@comp.compilers> NNTP-Posting-Host: news.iecc.com Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: leila.iecc.com 1383000713 74383 64.57.183.58 (28 Oct 2013 22:51:53 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Mon, 28 Oct 2013 22:51:53 +0000 (UTC) Keywords: arithmetic, optimize Posted-Date: 28 Oct 2013 18:51:53 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1020 > [I think you mean they're not associative. I don't know any situations > where a+b != b+a, but lots where a+(b+c) != (a+b)+c -John] Take fused multiply-add, and the expression a*b + c*d. It can be evaluated either as fma (a, b, c*d) or fma (c, d, a*b). It would seem natural that the code for a*b + c*d and for c*d + a*b would be different, with different results.