Ha! Sorry for not reading the documentation more thoroughly - I hope this was at least a bit educational to someone besides me :) Fantastic library and docs, by the way.<br><br><div class="gmail_quote">On Wed, Feb 20, 2013 at 10:38 AM, Neil Toronto <span dir="ltr">&lt;<a href="mailto:neil.toronto@gmail.com" target="_blank">neil.toronto@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 02/20/2013 06:42 AM, Luke Vilnis wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
No problem. They should be faster even for fairly small numbers since<br>
they usually require the evaluation of a polynomial (an approximation of<br>
(log)gamma) versus repeated multiplication/division. From memory the<br>
code should be something like:<br>
<br>
(exp (fllog-gamma (+ 1.0 n)) - (fllog-gamma (+ 1.0 r)) - (fllog-gamma (+<br>
1.0 (- n r))))<br>
<br>
fllog-gamma should also be faster than bflog-gamma or log-gamma if you<br>
don&#39;t need arbitrary precision. You&#39;re also right that this won&#39;t always<br>
give completely exact results - the Racket manual says that the only<br>
exact values are for log gamma of 1 and 2, but this usually is not a<br>
problem.<br>
<br>
PS. It looks like Racket&#39;s math collection has a built-in log-factorial<br>
function too, to avoid all the +1&#39;s, so you could try that.<br>
</blockquote>
<br></div>
There&#39;s also `fllog-binomial&#39;, which computes the log number of combinations directly. IIRC, its maximum observed error is 2 ulps.<span class="HOEnZb"><font color="#888888"><br>
<br>
Neil ⊥</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
____________________<br>
 Racket Users list:<br>
 <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/<u></u>users</a><br>
</div></div></blockquote></div><br>