And I was too quick to post.  Sorry about that.

You've got the unchecked addition fn for speed, and those are allowed
the throw overflow errors.  The + fn is always supposed to work.  The
fact that it auto-promotes the bound version is proof.  It needs to
work with the literal, too.

It's a Clojure issue, not a JVM one.  That's why this needs to be
fixed.

Sean

On May 5, 10:10 am, Sean Devlin <[email protected]> wrote:
> When this doesn't work:
>
> (=
>   (+ Integer/MAX_VALUE Integer/MAX_VALUE)
>   (+ Integer/MAX_VALUE Integer/MAX_VALUE 0))
>
> You have a bug.
>
> On May 5, 9:38 am, AlexK <[email protected]
>
>
>
> hamburg.de> wrote:
> > That's a wierd behviour, but it never produces incorrect results (it
> > throws an exception when it would).
>
> > the two-argument versions of + - * / get inlined to a static method
> > call. Either to a static method which accepts unboxed primitives or
> > one that accepts their boxed variants. The problem is that the
> > primitive versions return primitives and thus cannot overflow to
> > Bignums, so they throw an exception. This 'bug' is unsolvable for now
> > (until we get Fixnums on the JVM) without sacrificing the speed of
> > primitive math.
>
> > AlexK
>
> > On 5 Mai, 14:44, Sean Devlin <[email protected]> wrote:
>
> > > Yeah, I just reproduced this.  I think it's a bug.  Created Assembla
> > > ticket 339.  I've added some more test cases their too.
>
> > > Thanks!
> > > Sean
>
> > > On May 5, 3:15 am, alux <[email protected]> wrote:
>
> > > > Hello,
>
> > > > can somebody please explain the difference between the following two?
>
> > > > (def imax (Integer/MAX_VALUE))
> > > > (+ imax imax)
>
> > > > gives 4294967294
>
> > > > but
>
> > > > (+ (Integer/MAX_VALUE) (Integer/MAX_VALUE))
>
> > > > results in integer overflow
> > > >    [Thrown class java.lang.ArithmeticException]
>
> > > > Shouldnt this be the same?
>
> > > > Thank you, alux
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Clojure" group.
> > > > To post to this group, send email to [email protected]
> > > > Note that posts from new members are moderated - please be patient with 
> > > > your first post.
> > > > To unsubscribe from this group, send email to
> > > > [email protected]
> > > > For more options, visit this group 
> > > > athttp://groups.google.com/group/clojure?hl=en
>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Clojure" group.
> > > To post to this group, send email to [email protected]
> > > Note that posts from new members are moderated - please be patient with 
> > > your first post.
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/clojure?hl=en
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to [email protected]
> > Note that posts from new members are moderated - please be patient with 
> > your first post.
> > To unsubscribe from this group, send email to
> > [email protected]
> > For more options, visit this group 
> > athttp://groups.google.com/group/clojure?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group 
> athttp://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to