@@ -375,24 +375,54 @@ private static int testUnsignedOverflow(String s, int radix, boolean exception)
375375
376376 private static int testDivideAndRemainder () {
377377 int errors = 0 ;
378- long MAX_UNSIGNED_INT = Integer .toUnsignedLong (0xffff_ffff );
378+ long TWO_31 = 1L << Integer .SIZE - 1 ;
379+ long TWO_32 = 1L << Integer .SIZE ;
380+ long TWO_33 = 1L << Integer .SIZE + 1 ;
381+ BigInteger NINETEEN = BigInteger .valueOf (19L );
382+ BigInteger TWO_63 = BigInteger .ONE .shiftLeft (Long .SIZE - 1 );
383+ BigInteger TWO_64 = BigInteger .ONE .shiftLeft (Long .SIZE );
379384
380385 BigInteger [] inRange = {
381- BigInteger .valueOf (0L ),
382- BigInteger .valueOf (1L ),
383- BigInteger .valueOf (10L ),
384- BigInteger .valueOf (2147483646L ), // Integer.MAX_VALUE - 1
385- BigInteger .valueOf (2147483647L ), // Integer.MAX_VALUE
386- BigInteger .valueOf (2147483648L ), // Integer.MAX_VALUE + 1
387-
388- BigInteger .valueOf (MAX_UNSIGNED_INT - 1L ),
389- BigInteger .valueOf (MAX_UNSIGNED_INT ),
390-
391- BigInteger .valueOf (Long .MAX_VALUE - 1L ),
392- BigInteger .valueOf (Long .MAX_VALUE ),
393- BigInteger .valueOf (Long .MAX_VALUE ).add (BigInteger .ONE ),
394-
395- TWO .pow (64 ).subtract (BigInteger .ONE )
386+ BigInteger .ZERO ,
387+ BigInteger .ONE ,
388+ BigInteger .TEN ,
389+ NINETEEN ,
390+
391+ BigInteger .valueOf (TWO_31 - 19L ),
392+ BigInteger .valueOf (TWO_31 - 10L ),
393+ BigInteger .valueOf (TWO_31 - 1L ),
394+ BigInteger .valueOf (TWO_31 ),
395+ BigInteger .valueOf (TWO_31 + 1L ),
396+ BigInteger .valueOf (TWO_31 + 10L ),
397+ BigInteger .valueOf (TWO_31 + 19L ),
398+
399+ BigInteger .valueOf (TWO_32 - 19L ),
400+ BigInteger .valueOf (TWO_32 - 10L ),
401+ BigInteger .valueOf (TWO_32 - 1L ),
402+ BigInteger .valueOf (TWO_32 ),
403+ BigInteger .valueOf (TWO_32 + 1L ),
404+ BigInteger .valueOf (TWO_32 + 10L ),
405+ BigInteger .valueOf (TWO_32 - 19L ),
406+
407+ BigInteger .valueOf (TWO_33 - 19L ),
408+ BigInteger .valueOf (TWO_33 - 10L ),
409+ BigInteger .valueOf (TWO_33 - 1L ),
410+ BigInteger .valueOf (TWO_33 ),
411+ BigInteger .valueOf (TWO_33 + 1L ),
412+ BigInteger .valueOf (TWO_33 + 10L ),
413+ BigInteger .valueOf (TWO_33 + 19L ),
414+
415+ TWO_63 .subtract (NINETEEN ),
416+ TWO_63 .subtract (BigInteger .TEN ),
417+ TWO_63 .subtract (BigInteger .ONE ),
418+ TWO_63 ,
419+ TWO_63 .add (BigInteger .ONE ),
420+ TWO_63 .add (BigInteger .TEN ),
421+ TWO_63 .add (NINETEEN ),
422+
423+ TWO_64 .subtract (NINETEEN ),
424+ TWO_64 .subtract (BigInteger .TEN ),
425+ TWO_64 .subtract (BigInteger .ONE ),
396426 };
397427
398428 for (BigInteger dividend : inRange ) {
0 commit comments