Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -1131,7 +1131,7 @@ public static long getUnscaledValue(@Decimal final long value, final long abnorm
return abnormalReturn; // NaN or Infinity
} else {
long coeff = (value & LARGE_COEFF_MASK64) | LARGE_COEFF_HIGH_BIT64;
if (UnsignedLong.isGreaterOrEqual(coeff, 10000000000000000L))
if (coeff >= 10000000000000000L)
coeff = 0;
return sign ? -coeff : coeff;
}
Expand Down
50 changes: 25 additions & 25 deletions java/dfp/src/main/java/com/epam/deltix/dfp/JavaImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public static long canonizeFinite(final long value) {

// Check for non-canonical values.
final long x = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
coefficient = UnsignedLong.isGreater(x, MAX_COEFFICIENT) ? 0 : x;
coefficient = x > MAX_COEFFICIENT ? 0 : x;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -190,7 +190,7 @@ public static BigDecimal toBigDecimal(final long value) {
if (isSpecial(value)) {
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -250,7 +250,7 @@ public static long toParts(final long value, final Decimal64Parts parts) {
parts.exponent = 0;

parts.coefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
parts.coefficient = value & ~MASK_COEFFICIENT;
if (isInfinity(value))
parts.coefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -259,7 +259,7 @@ public static long toParts(final long value, final Decimal64Parts parts) {

// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
parts.coefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
parts.coefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -353,7 +353,7 @@ public static Appendable appendToRefImpl(final long value, final Appendable appe
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -362,7 +362,7 @@ public static Appendable appendToRefImpl(final long value, final Appendable appe
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -479,7 +479,7 @@ public static String fastToString(final long value) {
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -488,7 +488,7 @@ public static String fastToString(final long value) {
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -627,7 +627,7 @@ public static String fastToScientificString(final long value) {
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -636,7 +636,7 @@ public static String fastToScientificString(final long value) {
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -719,7 +719,7 @@ public static StringBuilder fastAppendToStringBuilder(final long value, final St
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -728,7 +728,7 @@ public static StringBuilder fastAppendToStringBuilder(final long value, final St
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -868,7 +868,7 @@ public static StringBuilder fastScientificAppendToStringBuilder(final long value
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -877,7 +877,7 @@ public static StringBuilder fastScientificAppendToStringBuilder(final long value
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -1016,7 +1016,7 @@ public static Appendable fastAppendToAppendable(final long value, final Appendab
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -1025,7 +1025,7 @@ public static Appendable fastAppendToAppendable(final long value, final Appendab
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -1166,7 +1166,7 @@ public static Appendable fastScientificAppendToAppendable(final long value, fina
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand All @@ -1175,7 +1175,7 @@ public static Appendable fastScientificAppendToAppendable(final long value, fina
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -2234,15 +2234,15 @@ public static long round(final long value, final int n, final RoundingMode round
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
// } else
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -2355,7 +2355,7 @@ public static boolean isRounded(final long value, final int n) {
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
Expand Down Expand Up @@ -2431,15 +2431,15 @@ public static long roundToReciprocal(final long value, final int r, final Roundi
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
// } else
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down Expand Up @@ -3235,15 +3235,15 @@ public static boolean isRoundedToReciprocal(final long value, final int r) {
// partsExponent = 0;
//
// partsCoefficient = value & 0xFE03_FFFF_FFFF_FFFFL;
// if (UnsignedLong.isGreater(value & 0x0003_FFFF_FFFF_FFFFL, MAX_COEFFICIENT))
// if ((value & 0x0003_FFFF_FFFF_FFFFL) > MAX_COEFFICIENT)
// partsCoefficient = value & ~MASK_COEFFICIENT;
// if (isInfinity(value))
// partsCoefficient = value & MASK_SIGN_INFINITY_NAN; // TODO: Why this was done??
// } else
{
// Check for non-canonical values.
final long coefficient = (value & LARGE_COEFFICIENT_MASK) | LARGE_COEFFICIENT_HIGH_BIT;
partsCoefficient = UnsignedLong.isGreater(coefficient, MAX_COEFFICIENT) ? 0 : coefficient;
partsCoefficient = coefficient > MAX_COEFFICIENT ? 0 : coefficient;

// Extract exponent.
final long tmp = value >> EXPONENT_SHIFT_LARGE;
Expand Down
12 changes: 6 additions & 6 deletions java/dfp/src/main/java/com/epam/deltix/dfp/JavaImplAdd.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static long unpack_BID64(final Decimal64Parts p, final long x) {
if ((x & INFINITY_MASK64) == INFINITY_MASK64) {
p.exponent = 0;
p.coefficient = x & 0xfe03ffffffffffffL;
if ((UnsignedLong.isGreaterOrEqual(x & 0x0003ffffffffffffL, 1000000000000000L)))
if ((x & 0x0003ffffffffffffL) >= 1000000000000000L)
p.coefficient = x & 0xfe00000000000000L;
if ((x & NAN_MASK64) == INFINITY_MASK64)
p.coefficient = x & SINFINITY_MASK64;
Expand All @@ -80,7 +80,7 @@ static long unpack_BID64(final Decimal64Parts p, final long x) {
// coefficient
long coeff = (x & LARGE_COEFF_MASK64) | LARGE_COEFF_HIGH_BIT64;
// check for non-canonical values
if ((UnsignedLong.isGreaterOrEqual(coeff, 10000000000000000L)))
if (coeff >= 10000000000000000L)
coeff = 0;
p.coefficient = coeff;
// get exponent
Expand Down Expand Up @@ -170,14 +170,14 @@ public static long bid64_add(final long x, final long y) {
if ((x & INFINITY_MASK64) == INFINITY_MASK64) {
exponent_x = 0;
coefficient_x = x & 0xfe03ffffffffffffL;
if ((UnsignedLong.isGreaterOrEqual(x & 0x0003ffffffffffffL, 1000000000000000L)))
if ((x & 0x0003ffffffffffffL) >= 1000000000000000L)
coefficient_x = x & 0xfe00000000000000L;
if ((x & NAN_MASK64) == INFINITY_MASK64)
coefficient_x = x & SINFINITY_MASK64;
valid_x = 0; // NaN or Infinity
} else {
// check for non-canonical values
if ((UnsignedLong.isGreaterOrEqual(coeff, 10000000000000000L)))
if (coeff >= 10000000000000000L)
coeff = 0;
coefficient_x = coeff;
// get exponent
Expand Down Expand Up @@ -208,14 +208,14 @@ public static long bid64_add(final long x, final long y) {
if ((y & INFINITY_MASK64) == INFINITY_MASK64) {
exponent_y = 0;
coefficient_y = y & 0xfe03ffffffffffffL;
if ((UnsignedLong.isGreaterOrEqual(y & 0x0003ffffffffffffL, 1000000000000000L)))
if ((y & 0x0003ffffffffffffL) >= 1000000000000000L)
coefficient_y = y & 0xfe00000000000000L;
if ((y & NAN_MASK64) == INFINITY_MASK64)
coefficient_y = y & SINFINITY_MASK64;
valid_y = 0; // NaN or Infinity
} else {
// check for non-canonical values
if ((UnsignedLong.isGreaterOrEqual(coeff, 10000000000000000L)))
if (coeff >= 10000000000000000L)
coeff = 0;
coefficient_y = coeff;
// get exponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ private JavaImplCast() {
if ((x & MASK_STEERING_BITS) == MASK_STEERING_BITS) {
x_exp = (x & MASK_BINARY_EXPONENT2) >>> 51; // biased
C1 = (x & MASK_BINARY_SIG2) | MASK_BINARY_OR2;
if (UnsignedLong.isGreater(C1, 9999999999999999L)) { // non-canonical
if (C1 > 9999999999999999L) { // non-canonical
x_exp = 0;
C1 = 0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ public static double bid64_to_binary64(final long /*BID_UINT64*/ x, final int rn
return return_binary64_inf(s);
// if ((x & (1L << 57)) != 0)
// __set_status_flags(pfpsf, BID_INVALID_EXCEPTION);
return return_binary64_nan(s, (UnsignedLong.isGreater(x & 0x3FFFFFFFFFFFFL, 999999999999999L) ? 0 : (x << 14)), 0L);
return return_binary64_nan(s, (x & 0x0003ffffffffffffL) >= 1000000000000000L ? 0 : (x << 14), 0L);
}
e = (int) (((x >>> 51) & ((1L << 10) - 1)) - 398);
c_w1 = (1L << 53) + (x & ((1L << 51) - 1));
Expand Down
Loading