On 03/03/2017 12:14 AM, BongHyeon. Jo wrote: > (unchecked-multiply 100000000000 100000000000)
The default type clojure uses for integers is the jvm's long (or the boxed variant Long) type. Longs are signed 64bit numbers. 10000000000000000000000 is outside the range of longs. `(* 100000000000 100000000000)` will throw an error because of the overflow. `(*' 100000000000 100000000000)` will promote the result to a BigInt (most ops have a primed variant that auto promotes). The `unchecked` in `unchecked-multiply` means it doesn't check the result, so overflow silently happens, as you have seen. The `unchecked` variants are intended for use when you are sure overflow is ok and you want the fastest possible math. -- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
