Guava - IntMath Class


Advertisements

IntMath provides utility methods on int.

Class Declaration

Following is the declaration for com.google.common.math.IntMath class −

@GwtCompatible(emulated = true)
public final class IntMath
   extends Object

Methods

Sr.No Method & Description
1

static int binomial(int n, int k)

Returns n choose k, also known as the binomial coefficient of n and k, or Integer.MAX_VALUE if the result does not fit in an int.

2

static int checkedAdd(int a, int b)

Returns the sum of a and b, provided it does not overflow.

3

static int checkedMultiply(int a, int b)

Returns the product of a and b, provided it does not overflow.

4

static int checkedPow(int b, int k)

Returns the b to the kth power, provided it does not overflow.

5

static int checkedSubtract(int a, int b)

Returns the difference of a and b, provided it does not overflow.

6

static int divide(int p, int q, RoundingMode mode)

Returns the result of dividing p by q, rounding using the specified RoundingMode.

7

static int factorial(int n)

Returns n!, that is, the product of the first n positive integers, 1 if n == 0, or Integer.MAX_VALUE if the result does not fit in a int.

8

static int gcd(int a, int b)

Returns the greatest common divisor of a, b.

9

static boolean isPowerOfTwo(int x)

Returns true if x represents a power of two.

10

static int log10(int x, RoundingMode mode)

Returns the base-10 logarithm of x, rounded according to the specified rounding mode.

11

static int log2(int x, RoundingMode mode)

Returns the base-2 logarithm of x, rounded according to the specified rounding mode.

12

static int mean(int x, int y)

Returns the arithmetic mean of x and y, rounded towards negative infinity.

13

static int mod(int x, int m)

Returns x mod m, a non-negative value less than m.

14

static int pow(int b, int k)

Returns b to the kth power.

15

static int sqrt(int x, RoundingMode mode)

Returns the square root of x, rounded with the specified rounding mode.

Methods Inherited

This class inherits methods from the following class −

  • java.lang.Object

Example of IntMath Class

Create the following java program using any editor of your choice in say C:/> Guava.

GuavaTester.java

import java.math.RoundingMode;
import com.google.common.math.IntMath;

public class GuavaTester {

   public static void main(String args[]) {
      GuavaTester tester = new GuavaTester();
      tester.testIntMath();
   }

   private void testIntMath() {
      try {
         System.out.println(IntMath.checkedAdd(Integer.MAX_VALUE, Integer.MAX_VALUE));
         
      } catch(ArithmeticException e) {
         System.out.println("Error: " + e.getMessage());
      }

      System.out.println(IntMath.divide(100, 5, RoundingMode.UNNECESSARY));
      try {
         //exception will be thrown as 100 is not completely divisible by 3
         // thus rounding is required, and RoundingMode is set as UNNESSARY
         System.out.println(IntMath.divide(100, 3, RoundingMode.UNNECESSARY));
         
      } catch(ArithmeticException e) {
         System.out.println("Error: " + e.getMessage());
      }

      System.out.println("Log2(2): " + IntMath.log2(2, RoundingMode.HALF_EVEN));

      System.out.println("Log10(10): " + IntMath.log10(10, RoundingMode.HALF_EVEN));

      System.out.println("sqrt(100): " + IntMath.sqrt(IntMath.pow(10,2), RoundingMode.HALF_EVEN));

      System.out.println("gcd(100,50): " + IntMath.gcd(100,50));

      System.out.println("modulus(100,50): " + IntMath.mod(100,50));

      System.out.println("factorial(5): " + IntMath.factorial(5));
   }
}

Verify the Result

Compile the class using javac compiler as follows −

C:\Guava>javac GuavaTester.java

Now run the GuavaTester to see the result.

C:\Guava>java GuavaTester

See the result.

Error: overflow
20
Error: mode was UNNECESSARY, but rounding was necessary
Log2(2): 1
Log10(10): 1
sqrt(100): 10
gcd(100,50): 50
modulus(100,50): 0
factorial(5): 120
guava_math_utilities.htm
Advertisements