< prev index next >

test/jdk/java/math/BigInteger/ModPow.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -20,22 +20,24 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 /* @test
- * @bug 4181191
+ * @bug 4181191 8215759
  * @summary test BigInteger modPow method
  */
 import java.math.BigInteger;
 import java.util.Random;
 
 public class ModPow {
     public static void main(String[] args) {
         Random rnd = new Random(1234);
 
         for (int i=0; i<2000; i++) {
-            BigInteger m = new BigInteger(800, rnd);
+            // Clamp random modulus to a positive value or modPow() will
+            // throw an ArithmeticException.
+            BigInteger m = new BigInteger(800, rnd).max(BigInteger.ONE);
             BigInteger base = new BigInteger(16, rnd);
             if (rnd.nextInt() % 1 == 0)
                 base = base.negate();
             BigInteger exp = new BigInteger(8, rnd);
 
< prev index next >