2

I'm trying to calculate the log 2 base of some double form numbers but it seems that there isn't a standard method from a libraly for that.

I tried out this code,error occurs though.

        double entropy=0;
        for(int i=0; i<26;i++){
            entropy+=-possibilityCounter[i]*log2(possibilityCounter[i]);
        }

NOTE: possibilityCounter table is full of double variables e.g 0.00133536

Any suggestion?

Michael Pnrs
  • 115
  • 11

3 Answers3

10

You can calculate the log base 2 from the natural log like this

public double log2(double v) {
    return Math.log(v) / Math.log(2);
}
b.GHILAS
  • 2,273
  • 1
  • 8
  • 16
3

Indeed in java.util.Math you have logs for base e and 10.

However you can use the following formula:

log2(x) = log(x)/log(2)
Mark Bramnik
  • 39,963
  • 4
  • 57
  • 97
1
double entropy = 0;
for(int i = 0; i < 26; i++){
    entropy += -possibilityCounter[i] * Math.log(possibilityCounter[i]) / Math.log(2);
}
ardenit
  • 3,610
  • 8
  • 16