Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #4106
| From | Tom Anderson <twic@urchin.earth.li> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Java puzzler |
| Date | 2011-05-15 11:16 +0100 |
| Organization | Stack Usenet News Service |
| Message-ID | <alpine.DEB.2.00.1105151107130.12373@urchin.earth.li> (permalink) |
| References | (10 earlier) <jY-dnS9ZV4RyG1HQnZ2dnUVZ_tadnZ2d@earthlink.com> <alpine.DEB.2.00.1105140954470.12373@urchin.earth.li> <iqm848$52b$1@dont-email.me> <alpine.DEB.2.00.1105150033090.12373@urchin.earth.li> <iqnakv$t9g$1@dont-email.me> |
On Sat, 14 May 2011, markspace wrote: >>> On 5/14/2011 2:18 AM, Tom Anderson wrote: > >> I'm only saying that the semantics would be defined in terms of >> infinite precision; the implementation could be anything the compiler >> can come up with which simulates the semantics. Since we're talking >> about fairly small expressions with integers, i would expect it to do a >> good job of finding efficient ways to compute things. For example, in >> the c = (b + b) - b case, it would be free to reduce that to c = b. > > I think I understand what you are saying, but that's not what I'm after, > personally. > > What I'm saying is: at the machine level, the implementation is free to throw > an excpetion if any intermediate calculation overflows. I think that's the > difference between "infinite precision" and saying the compiler and optimizer > have some latitude. Okay, i think we now understand where we both stand. And, of course, i think your desires are unnatural, and that you hate freedom. > What I'm really worried about is how do you simulate "infinite > precision" with longs or something like that, where there is no larger > width word? It becomes a mess. Then there's also really large numbers > of small width integers, which could overflow quickly, but "infinite > precision" means they don't overflow until the end. Both of those > scenarios are impractical to implement with "infinite precision" I > think. I was mostly thinking about the infinite width rule being something that gives permission for algebraic optimisation. For example, if you evaluate c = (b + b) - b with infinite width, then whatever the value of b, you end up with c = b. So, the infinite width rule gives the compiler permission to make that optimisation. But you're right, in that there are possible, and even realistic, cases, which can't be optimised away and where a calculation with a tolerably small result has some intolerably large intermediate values. Anything like: long a, b, c; long d = (a * b) % c; Runs that risk. Having access to a 128-bit integer type in the hardware wouldn't fix it, either, because: long a, b, c, d, e, f, g, h, i, j, k, l; long z = (a * b * c * d * e * f) / (g * h * i * j * k * l); And because these are integers, i don't think you can get away with rewriting to a more plausible: long z = (a / g) * (b / h) * (c / i) * (d / j) * (e / k) * (f / l); >> The problem is that not all correct results are practical to compute >> with finite-width arithmetic. That means that as well as a rule that >> results have to be correct, we have to have a rule about when results >> that would be correct explode. > > It's alright for a result to not be correct, as long the system throws > an exception instead. That's the rule: incorrect result means throw an > exception. > > Just to be 100% clear, what I'm really after is for Java to use the > existing hardware detection that exists in most platforms for integer > overflow/underflow. It's practically cost free, and would really go a > long ways to making programs error-free, imo. That's what I'm gunning > for. Fair enough. I suppose my position is that this hardware ability has to be used in the service of some solidly well-defined software semantics. Throwing exceptions at random from arithmetic expressions is not what i think of as solidly well-defined. tom -- Nullius in verba
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Re: Java puzzler Gábor Bakos <aborgabor@gmail.com> - 2011-05-11 01:44 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-11 05:24 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-11 21:57 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-11 16:07 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-12 21:38 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 13:45 -0700
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 16:56 -0400
Re: Java puzzler markspace <-@.> - 2011-05-12 14:32 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 16:05 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 17:40 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:18 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 19:26 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-14 10:18 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-14 08:09 -0700
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-14 13:00 -0400
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-14 15:08 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-14 13:25 -0700
Re: Java puzzler markspace <-@.> - 2011-05-14 08:46 -0700
Re: Java puzzler Spock <spock@starfleet.ufp> - 2011-05-14 19:33 -0400
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 00:41 +0100
Re: Java puzzler markspace <-@.> - 2011-05-14 18:35 -0700
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-14 23:43 -0400
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 11:16 +0100
Re: Java puzzler markspace <-@.> - 2011-05-15 05:40 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 15:23 +0100
Re: Java puzzler markspace <-@.> - 2011-05-15 08:09 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 07:37 -0700
Re: Java puzzler markspace <-@.> - 2011-05-15 08:00 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 08:16 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 07:35 -0700
Re: Java puzzler markspace <-@.> - 2011-05-15 08:11 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 08:15 -0700
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-15 13:11 -0400
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 20:47 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:00 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 18:01 -0700
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 21:22 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:32 -0700
Re: Java puzzler Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-12 22:34 -0400
Re: Java puzzler Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-12 22:27 -0400
Re: Java puzzler "John B. Matthews" <nospam@nospam.invalid> - 2011-05-12 00:28 -0400
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-12 10:33 -0400
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-11 09:12 -0400
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-11 09:13 -0400
Re: Java puzzler markspace <-@.> - 2011-05-11 08:00 -0700
csiph-web