I think a cap is a good thing if the error is relatively small ( < 1e-4 or
so).

Betraying my age, I usually rewrite this as this:

   for (int element : elements) {
     if (element > 0) {
       result += element * (Math.log(element));
     }
   }
   result -= elements.size() * Math.log(sum)

But presumably the compiler will notice this change and lift it out of the
inner loop

On Thu, Apr 29, 2010 at 9:33 AM, Sean Owen <sro...@gmail.com> wrote:

>    double logSum = Math.log(sum);
>    for (int element : elements) {
>      if (element > 0) {
>        result += element * (Math.log(element) - logSum);
>      }
>    }
>

Reply via email to