6560935: BigInteger.modPow() throws ArithmeticException for negative exponent
Reviewed-by: alanb
This commit is contained in:
parent
c3d3d4780a
commit
8c93a06ddd
@ -478,7 +478,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a randomly generated BigInteger, uniformly distributed over
|
* Constructs a randomly generated BigInteger, uniformly distributed over
|
||||||
* the range {@code 0} to (2<sup>{@code numBits}</sup> - 1), inclusive.
|
* the range 0 to (2<sup>{@code numBits}</sup> - 1), inclusive.
|
||||||
* The uniformity of the distribution assumes that a fair source of random
|
* The uniformity of the distribution assumes that a fair source of random
|
||||||
* bits is provided in {@code rnd}. Note that this constructor always
|
* bits is provided in {@code rnd}. Note that this constructor always
|
||||||
* constructs a non-negative BigInteger.
|
* constructs a non-negative BigInteger.
|
||||||
@ -1332,7 +1332,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
*
|
*
|
||||||
* @param val value by which this BigInteger is to be divided.
|
* @param val value by which this BigInteger is to be divided.
|
||||||
* @return {@code this / val}
|
* @return {@code this / val}
|
||||||
* @throws ArithmeticException {@code val==0}
|
* @throws ArithmeticException if {@code val} is zero.
|
||||||
*/
|
*/
|
||||||
public BigInteger divide(BigInteger val) {
|
public BigInteger divide(BigInteger val) {
|
||||||
MutableBigInteger q = new MutableBigInteger(),
|
MutableBigInteger q = new MutableBigInteger(),
|
||||||
@ -1352,7 +1352,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
* @return an array of two BigIntegers: the quotient {@code (this / val)}
|
* @return an array of two BigIntegers: the quotient {@code (this / val)}
|
||||||
* is the initial element, and the remainder {@code (this % val)}
|
* is the initial element, and the remainder {@code (this % val)}
|
||||||
* is the final element.
|
* is the final element.
|
||||||
* @throws ArithmeticException {@code val==0}
|
* @throws ArithmeticException if {@code val} is zero.
|
||||||
*/
|
*/
|
||||||
public BigInteger[] divideAndRemainder(BigInteger val) {
|
public BigInteger[] divideAndRemainder(BigInteger val) {
|
||||||
BigInteger[] result = new BigInteger[2];
|
BigInteger[] result = new BigInteger[2];
|
||||||
@ -1371,7 +1371,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
* @param val value by which this BigInteger is to be divided, and the
|
* @param val value by which this BigInteger is to be divided, and the
|
||||||
* remainder computed.
|
* remainder computed.
|
||||||
* @return {@code this % val}
|
* @return {@code this % val}
|
||||||
* @throws ArithmeticException {@code val==0}
|
* @throws ArithmeticException if {@code val} is zero.
|
||||||
*/
|
*/
|
||||||
public BigInteger remainder(BigInteger val) {
|
public BigInteger remainder(BigInteger val) {
|
||||||
MutableBigInteger q = new MutableBigInteger(),
|
MutableBigInteger q = new MutableBigInteger(),
|
||||||
@ -1547,7 +1547,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
*
|
*
|
||||||
* @param m the modulus.
|
* @param m the modulus.
|
||||||
* @return {@code this mod m}
|
* @return {@code this mod m}
|
||||||
* @throws ArithmeticException {@code m <= 0}
|
* @throws ArithmeticException {@code m} ≤ 0
|
||||||
* @see #remainder
|
* @see #remainder
|
||||||
*/
|
*/
|
||||||
public BigInteger mod(BigInteger m) {
|
public BigInteger mod(BigInteger m) {
|
||||||
@ -1566,7 +1566,9 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
* @param exponent the exponent.
|
* @param exponent the exponent.
|
||||||
* @param m the modulus.
|
* @param m the modulus.
|
||||||
* @return <tt>this<sup>exponent</sup> mod m</tt>
|
* @return <tt>this<sup>exponent</sup> mod m</tt>
|
||||||
* @throws ArithmeticException {@code m <= 0}
|
* @throws ArithmeticException {@code m} ≤ 0 or the exponent is
|
||||||
|
* negative and this BigInteger is not <i>relatively
|
||||||
|
* prime</i> to {@code m}.
|
||||||
* @see #modInverse
|
* @see #modInverse
|
||||||
*/
|
*/
|
||||||
public BigInteger modPow(BigInteger exponent, BigInteger m) {
|
public BigInteger modPow(BigInteger exponent, BigInteger m) {
|
||||||
@ -2015,7 +2017,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
*
|
*
|
||||||
* @param m the modulus.
|
* @param m the modulus.
|
||||||
* @return {@code this}<sup>-1</sup> {@code mod m}.
|
* @return {@code this}<sup>-1</sup> {@code mod m}.
|
||||||
* @throws ArithmeticException {@code m <= 0}, or this BigInteger
|
* @throws ArithmeticException {@code m} ≤ 0, or this BigInteger
|
||||||
* has no multiplicative inverse mod m (that is, this BigInteger
|
* has no multiplicative inverse mod m (that is, this BigInteger
|
||||||
* is not <i>relatively prime</i> to m).
|
* is not <i>relatively prime</i> to m).
|
||||||
*/
|
*/
|
||||||
@ -2449,7 +2451,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
|||||||
/**
|
/**
|
||||||
* Returns {@code true} if this BigInteger is probably prime,
|
* Returns {@code true} if this BigInteger is probably prime,
|
||||||
* {@code false} if it's definitely composite. If
|
* {@code false} if it's definitely composite. If
|
||||||
* {@code certainty} is {@code <= 0}, {@code true} is
|
* {@code certainty} is ≤ 0, {@code true} is
|
||||||
* returned.
|
* returned.
|
||||||
*
|
*
|
||||||
* @param certainty a measure of the uncertainty that the caller is
|
* @param certainty a measure of the uncertainty that the caller is
|
||||||
|
Loading…
x
Reference in New Issue
Block a user