Path: csiph.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Kaz Kylheku <847-115-0292@kylheku.com> Newsgroups: comp.compilers Subject: Re: Optimization techniques Date: Fri, 26 Apr 2019 21:11:09 +0000 (UTC) Organization: Aioe.org NNTP Server Lines: 17 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <19-04-030@comp.compilers> References: <19-04-004@comp.compilers> <19-04-012@comp.compilers> <19-04-018@comp.compilers> <19-04-028@comp.compilers> Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="87687"; mail-complaints-to="abuse@iecc.com" Keywords: arithmetic Posted-Date: 27 Apr 2019 10:16:10 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:2214 On 2019-04-26, Martin Ward wrote: > On 23/04/19 08:43, David Brown wrote: >> But mathematical identities such as associativity and commutativity are >> valid because signed integer overflow does not happen - thus "a * (b + >> c)" can be changed to "(a * b) + (a * c)". > > If b is large and c has a value close to -b then a * (b + c) > might be OK while (a * b) will overflow and cause undefined > behaviour. I.e. careless application of arithmetic identities can introduce overflows that don't exist in the original form. -- TXR Programming Lanuage: http://nongnu.org/txr Music DIY Mailing List: http://www.kylheku.com/diy ADA MP-1 Mailing List: http://www.kylheku.com/mp1