# Java Guava | log2(long x, RoundingMode mode) of LongMath Class with Examples

The method **log2(long x, RoundingMode mode)** of Guava’s LongMath Class accepts two parameters and calculates the base-2 logarithmic value of the first parameter rounded according to the rounding mode specified by the second parameter.

**Syntax:**

public static int log2(long x, RoundingMode mode)

**Parameters:** The method takes 2 parameters, where *x* is a long and *mode* is a specified rounding mode.

**Return Value:** This method returns Base-2 logarithm of x, rounded according to the specified rounding mode.

**Exceptions: **This method throws following parameters:

**IllegalArgumentException:**if x <= 0.**ArithmeticException:**if mode is RoundingMode.UNNECESSARY and x is not a power of two.

#### Enum RoundingMode

Enum Constant | Description |
---|---|

CEILING |
Rounding mode to round towards positive infinity. |

DOWN |
Rounding mode to round towards zero. |

FLOOR |
Rounding mode to round towards negative infinity. |

HALF_DOWN |
Rounding mode to round towards “nearest neighbor” unless both neighbors are equidistant, in which case round down. |

HALF_EVEN |
Rounding mode to round towards the “nearest neighbor” unless both neighbors are equidistant, in which case, round towards the even neighbor. |

HALF_UP |
Rounding mode to round towards “nearest neighbor” unless both neighbors are equidistant, in which case round up. |

UNNECESSARY |
Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary. |

UP |
Rounding mode to round away from zero. |

Below examples illustrate the implementation of log2() method of Guava LongMath:

**Example 1 :**

`// Java code to show implementation of ` `// log2(long x, RoundingMode mode) method ` `// of Guava's LongMath class ` ` ` `import` `java.math.RoundingMode; ` `import` `com.google.common.math.LongMath; ` ` ` `class` `GFG { ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main(String args[]) ` ` ` `{ ` ` ` `long` `n1 = ` `1111` `; ` ` ` ` ` `// Using log2(long x, RoundingMode mode) ` ` ` `// method of Guava's LongMath class ` ` ` `// The RoundingMode HALF_EVEN rounds towards ` ` ` `// the "nearest neighbor" unless both neighbors ` ` ` `// are equidistant, in which case, round towards ` ` ` `// the even neighbor. ` ` ` `System.out.println(LongMath.log2( ` ` ` `n1, ` ` ` `RoundingMode.HALF_EVEN)); ` ` ` ` ` `long` `n2 = ` `205` `; ` ` ` ` ` `// Using log2(long x, RoundingMode mode) ` ` ` `// method of Guava's LongMath class ` ` ` `// The RoundingMode HALF_DOWN rounds towards ` ` ` `// "nearest neighbor" unless both neighbors ` ` ` `// are equidistant, in which case round down. ` ` ` `System.out.println(LongMath.log2( ` ` ` `n2, ` ` ` `RoundingMode.HALF_DOWN)); ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

**Output:**

10 8

**Example 2:**

`// Java code to show implementation of ` `// log2(long x, RoundingMode mode) method ` `// of Guava's LongMath class ` ` ` `import` `java.math.RoundingMode; ` `import` `com.google.common.math.LongMath; ` ` ` `class` `GFG { ` ` ` ` ` `static` `long` `findlog2(` `long` `x, RoundingMode mode) ` ` ` `{ ` ` ` `try` `{ ` ` ` `// Using log2(long x, RoundingMode mode) ` ` ` `// method of Guava's LongMath class ` ` ` `// The RoundingMode HALF_EVEN rounds towards ` ` ` `// the "nearest neighbor" unless both neighbors ` ` ` `// are equidistant, in which case, round towards ` ` ` `// the even neighbor. ` ` ` `// This should throw "IllegalArgumentException" ` ` ` `// as x <= 0 ` ` ` `long` `ans = LongMath.log2(x, mode); ` ` ` ` ` `// Return the answer ` ` ` `return` `ans; ` ` ` `} ` ` ` `catch` `(Exception e) { ` ` ` `System.out.println(e); ` ` ` `return` `-` `1` `; ` ` ` `} ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main(String args[]) ` ` ` `{ ` ` ` `long` `x = -` `122` `; ` ` ` ` ` `try` `{ ` ` ` ` ` `// Function calling ` ` ` `findlog2(x, RoundingMode.HALF_EVEN); ` ` ` `} ` ` ` `catch` `(Exception e) { ` ` ` `System.out.println(e); ` ` ` `} ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

**Output:**

java.lang.IllegalArgumentException: x (-122) must be > 0

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

## Recommended Posts:

- Java Guava | sqrt(long x, RoundingMode mode) of LongMath Class with Examples
- Java Guava | LongMath log10(long x, RoundingMode mode) method with Examples
- Java Guava | sqrt(int x, RoundingMode mode) method of IntMath Class
- Java Guava | IntMath log10(int x, RoundingMode mode) method with Examples
- Java Guava | LongMath.divide(long, long, RoundingMode) method with Examples
- Java Guava | pow(long b, int k) of LongMath Class with Examples
- Java Guava | binomial(int n, int k) of LongMath Class with Examples
- Java Guava | log2(int x, RoundingMode mode) method of IntMath
- Java Guava | isPowerOfTwo(long x) of LongMath Class with Examples
- LongMath Class | Guava | Java
- Java Guava | mean(long x, long y) of LongMath Class with Examples
- Java Guava | gcd(long a, long b) of LongMath Class with Examples
- Java Guava | mod(long x, long m) of LongMath Class with Examples
- Java Guava | IntMath.divide(int, int, RoundingMode) method with Examples
- Java Guava | LongMath.checkedMultiply(int a, int b) method with Examples
- Java Guava | LongMath.checkedPow(long b, int k) method with Examples
- Java Guava | LongMath.checkedAdd(long a, long b) method with Examples
- Java Guava | factorial(int n) method of IntMath Class with Examples
- Java Guava | compare() method of Short Class with Examples
- Booleans Class | Guava | Java

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.