Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sat, 14 May 2011 10:09:03 -0500 Date: Sat, 14 May 2011 08:09:02 -0700 From: Patricia Shanahan User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Java puzzler References: <4db69c13-878f-4806-adb2-a3c5adb1c48c@glegroupsg2000goo.googlegroups.com> <-8mdnSRPEIdA21HQnZ2dnUVZ_j2dnZ2d@earthlink.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 40 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 75.8.126.96 X-Trace: sv3-1brqxknRJ8CKdO+WMyMmY2Q1yhTomswNQNuEEYt0Xv4YEq8zifhkb7dwRoN+Gvd5mpD+DZsBpNl1tY1!2AHkDlpKuDb5tzfCkcgMMdNOcV//zfDlQyDzuVcAeIcQX/7k+k6TeyYBY6YEC6Ce46phaF0yiRgV!ZhWYHYK6mg73C2ejMQYvax1Jbk4pCUVytGZfv/3Xd8w= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 3181 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:4074 On 5/14/2011 2:18 AM, Tom Anderson wrote: > On Thu, 12 May 2011, Patricia Shanahan wrote: > >> On 5/12/2011 5:40 PM, markspace wrote: >>> On 5/12/2011 4:05 PM, Patricia Shanahan wrote: ... >> The original proposal was to make all arithmetic detect overflow, and >> that would remove the existing ability to do unsigned arithmetic by >> ignoring overflow. > > The semantics of which, i've realised, is an utter can of worms. Does this: > > byte b = 100; > byte c = (b + b) - b; > > Throw an exception? A interpreter which evaluates > expression-by-expression would blow up when it came to the b + b. An > optimising compiler can pretty easily optimise that expression out of > existence altogether, but in doing so, it eliminates any opportunity to > detect an overflow. If you require the exception, you close the door to > a lot of optimisations. ... These issues already exist in Java, and there are established rules for dealing with them. Optimizers are required to make it look as though expressions were evaluated exactly the way the JLS defines, regardless of whether that is how the expression was actually evaluated. Consider: double d = Double.MAX_VALUE; double e = (d + d) - d; The correct result is Double.POSITIVE_INFINITY, not Double.MAX_VALUE. In effect, adding integer overflow exceptions would extend the non-associativity and non-commutativity properties of floating point arithmetic to integers. Patricia