The method sqrt(BigInteger x, RoundingMode mode) of Guava’s BigIntegerMath class returns the square root of x, rounded with the specified rounding mode.
Syntax:
public static BigInteger sqrt(BigInteger x, RoundingMode mode)
Parameters: This method takes the following parameters:
- x : The BigInteger number whose square-root is to be found.
- mode : The rounding mode for calculating the square-root.
Return Value: This method returns the square root of x, rounded with the specified rounding mode.
Exceptions: This method throws following exceptions:
- IllegalArgumentException: if x < 0.
- ArithmeticException: if mode is RoundingMode.UNNECESSARY and sqrt(x) is not an integer.
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 illustrates the BigIntegerMath.sqrt() method:
Example 1:
// Java code to show implementation of // sqrt(BigInteger x, RoundingMode mode) method // of Guava's BigIntegerMath class import java.math.*; import com.google.common.math.BigIntegerMath; class GFG { // Driver code public static void main(String args[]) { BigInteger x1 = BigInteger.valueOf( 226 ); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode HALF_EVEN rounds towards // the nearest neighbor unless both neighbors // are equidistant, in which case, round towards // the even neighbor. BigInteger ans1 = BigIntegerMath .sqrt(x1, RoundingMode.HALF_EVEN); System.out.println( "Square root of " + x1 + "with HALF_EVEN rounding mode is: " + ans1); BigInteger x2 = BigInteger.valueOf( 154 ); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode FLOOR rounds towards // negative infinity. BigInteger ans2 = BigIntegerMath .sqrt(x2, RoundingMode.FLOOR); System.out.println( "Square root of " + x2 + "with FLOOR rounding mode is: " + ans2); } } |
Square root of 226with HALF_EVEN rounding mode is: 15 Square root of 154with FLOOR rounding mode is: 12
Example 2:
// Java code to show implementation of // sqrt(BigInteger x, RoundingMode mode) method // of Guava's BigIntegerMath class import java.math.*; import com.google.common.math.BigIntegerMath; class GFG { // Driver code public static void main(String args[]) { try { BigInteger x1 = BigInteger.valueOf(- 65 ); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode HALF_EVEN rounds towards // the nearest neighbor unless both neighbors // are equidistant, in which case, round towards // the even neighbor. BigInteger ans1 = BigIntegerMath .sqrt(x1, RoundingMode.HALF_EVEN); // This should throw "IllegalArgumentException" // as x1 < 0 } catch (Exception e) { System.out.println( "Exception: " + e); } } } |
Exception: java.lang.IllegalArgumentException: x (-65) must be >= 0