Guava - IntMath Class



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
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 - Checked Operations of ints

GuavaTester.java

package com.tutorialspoint;

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());
      }
   }
}

Output

Run the GuavaTester and verify the output −

Error: overflow: checkedAdd(2147483647, 2147483647)
20
Error: mode was UNNECESSARY, but rounding was necessary

Example - Computing operations on ints

GuavaTester.java

package com.tutorialspoint;

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() {
      
      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));

   }
}

Output

Run the GuavaTester and verify the output −

Log2(2): 1
Log10(10): 1
sqrt(100): 10

Example - More Operations on Ints

GuavaTester.java

package com.tutorialspoint;

import com.google.common.math.IntMath;

public class GuavaTester {

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

   private void testIntMath() {
      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));
   }
}

Output

Run the GuavaTester and verify the output −

gcd(100,50): 50
modulus(100,50): 0
factorial(5): 120
Advertisements