## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Taking Logarithms

## Problem

You need to take the logarithm of a number.

## Solution

For logarithms to base `e`, use `java.lang.Math` ’s `log( )` function:

```// Logarithm.java
double someValue;
// compute someValue...
double log_e = Math.log(someValue);```

For logarithms to other bases, use the identity that:

where `x` is the number whose logarithm you want, `n` is any desired base, and `e` is the natural logarithm base. I have a simple `LogBase` class containing code that implements this functionality:

```// LogBase.java
public static double log_base(double base, double value) {
return Math.log(value) / Math.log(base);
}```

## Discussion

My `log_base` function allows you to compute logs to any positive base. If you have to perform a lot of logs to the same base, it is more efficient to rewrite the code to cache the `log(base)` once. Here is an example of using `log_base`:

```// LogBaseUse.java
public static void main(String argv[]) {
double d = LogBase.log_base(10, 10000);
System.out.println("log10(10000) = " + d);
}
log10(10000) = 4.0```

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required