From a15b3e68136dd94ea20e4085afc45aa73d46362e Mon Sep 17 00:00:00 2001 From: Alex Herbert Date: Sun, 24 Dec 2023 16:57:58 +0000 Subject: [PATCH] Simplify conversion of numbers to unsigned --- .../apache/commons/numbers/core/ArithmeticUtilsTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/commons-numbers-core/src/test/java/org/apache/commons/numbers/core/ArithmeticUtilsTest.java b/commons-numbers-core/src/test/java/org/apache/commons/numbers/core/ArithmeticUtilsTest.java index 4063f440d..0b4aa797e 100644 --- a/commons-numbers-core/src/test/java/org/apache/commons/numbers/core/ArithmeticUtilsTest.java +++ b/commons-numbers-core/src/test/java/org/apache/commons/numbers/core/ArithmeticUtilsTest.java @@ -28,6 +28,8 @@ * */ class ArithmeticUtilsTest { + /** 2^63. */ + private static final BigInteger TWO_POW_63 = BigInteger.ONE.shiftLeft(63); @Test void testGcd() { @@ -538,7 +540,7 @@ private static long[] getLongSpecialCases() { } private static long toUnsignedLong(int number) { - return number < 0 ? 0x100000000L + (long)number : (long)number; + return Integer.toUnsignedLong(number); } private static int remainderUnsignedExpected(int dividend, int divisor) { @@ -550,7 +552,9 @@ private static int divideUnsignedExpected(int dividend, int divisor) { } private static BigInteger toUnsignedBigInteger(long number) { - return number < 0L ? BigInteger.ONE.shiftLeft(64).add(BigInteger.valueOf(number)) : BigInteger.valueOf(number); + return number < 0 ? + TWO_POW_63.or(BigInteger.valueOf(number & Long.MAX_VALUE)) : + BigInteger.valueOf(number); } private static long remainderUnsignedExpected(long dividend, long divisor) {