Hi Eric, The fundamental reason on that behaviour , is that Java Math library which takes *double *as args, truncates its arguments, which is the case with *Math.pow .*
>From *The Joy of Clojure, sec. 4.1.1:* __________________________________________ (let [imadeuapi 3.14159265358979323846264338327950288419716939937M] (println (class imadeuapi)) imadeuapi) ; java.math.BigDecimal ;=> 3.14159265358979323846264338327950288419716939937M *BUT* (let [butieatedit 3.141592653589793*23846264338327950288419716939937*] (println (class butieatedit)) butieatedit) ; java.lang.Double ;=> 3.141592653589793 ______________________________________________ So , I think the solution to your pb, seen that *exponent = * 9.18354961579912115600575419704879435795832466228193376178712270530013483949005603790283203125E-21M is to do a limited development which leads to: *probabiblity-of-collision = exponent * when *number-of-decimal (exponent) > 15* HTH Le samedi 30 juin 2012 08:46:10 UTC+2, Eric Scrivner a écrit : > > Hey All, > > This is more than likely a newbie question, so my apologies if this is not > directly clojure related. > > I'm not sure if this is a Java or Clojure specific issue, my guess is > both. I'm trying to do some probability calculations with both very large > and very small numbers. The function I'm using is as follows: > > >> (defn probability-of-collision [num-unique, num-generated] >> >> (let [exponent (.divide num-generated (.multiply 2M num-unique))] >> >> (.subtract 1M (.divide 1M (.pow (bigdec java.lang.Math/E) >>> exponent))))) >> >> > I would like to compute the answer for the following numbers, but only > receive zero back: > > user=> (probability-of-collision (.pow 2M 132) (.pow 10M 20)) > > 0M > > > I have tried using with-precision and several other approaches but cannot > figure out how to get the correct value out. I was under the impression > that BigDecimals support arbitrary precision arithmetic but perhaps I'm > misunderstanding something? > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en