Guava – IntMath Class

  • Post author:
  • Post category:Guava
  • Post comments:1 Comment
IntMath

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.NoMethod & Description
1static 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.
2static int checkedAdd(int a, int b)Returns the sum of a and b, provided it does not overflow.
3static int checkedMultiply(int a, int b)Returns the product of a and b, provided it does not overflow.
4static int checkedPow(int b, int k)Returns the b to the kth power, provided it does not overflow.
5static int checkedSubtract(int a, int b)Returns the difference of a and b, provided it does not overflow.
6static int divide(int p, int q, RoundingMode mode)Returns the result of dividing p by q, rounding using the specified RoundingMode.
7static 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.
8static int gcd(int a, int b)Returns the greatest common divisor of a, b.
9static boolean isPowerOfTwo(int x)Returns true if x represents a power of two.
10static int log10(int x, RoundingMode mode)Returns the base-10 logarithm of x, rounded according to the specified rounding mode.
11static int log2(int x, RoundingMode mode)Returns the base-2 logarithm of x, rounded according to the specified rounding mode.
12static int mean(int x, int y)Returns the arithmetic mean of x and y, rounded towards negative infinity.
13static int mod(int x, int m)Returns x mod m, a non-negative value less than m.
14static int pow(int b, int k)Returns b to the kth power.
15static 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

Next Topic:-Click Here

This Post Has One Comment

Leave a Reply