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
