jimu-decompiled/sources/com/google/common/math/DoubleMath.java
2025-05-13 19:24:51 +02:00

94 lines
3.0 KiB
Java

package com.google.common.math;
import java.math.RoundingMode;
/* loaded from: classes.dex */
public final class DoubleMath {
/* renamed from: com.google.common.math.DoubleMath$1, reason: invalid class name */
static /* synthetic */ class AnonymousClass1 {
static final /* synthetic */ int[] a = new int[RoundingMode.values().length];
static {
try {
a[RoundingMode.UNNECESSARY.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
a[RoundingMode.FLOOR.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
a[RoundingMode.CEILING.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
a[RoundingMode.DOWN.ordinal()] = 4;
} catch (NoSuchFieldError unused4) {
}
try {
a[RoundingMode.UP.ordinal()] = 5;
} catch (NoSuchFieldError unused5) {
}
try {
a[RoundingMode.HALF_EVEN.ordinal()] = 6;
} catch (NoSuchFieldError unused6) {
}
try {
a[RoundingMode.HALF_UP.ordinal()] = 7;
} catch (NoSuchFieldError unused7) {
}
try {
a[RoundingMode.HALF_DOWN.ordinal()] = 8;
} catch (NoSuchFieldError unused8) {
}
}
}
static {
Math.log(2.0d);
}
static double a(double d, RoundingMode roundingMode) {
if (!DoubleUtils.c(d)) {
throw new ArithmeticException("input is infinite or NaN");
}
switch (AnonymousClass1.a[roundingMode.ordinal()]) {
case 1:
MathPreconditions.c(a(d));
return d;
case 2:
return (d >= 0.0d || a(d)) ? d : ((long) d) - 1;
case 3:
return (d <= 0.0d || a(d)) ? d : ((long) d) + 1;
case 4:
return d;
case 5:
if (a(d)) {
return d;
}
return ((long) d) + (d > 0.0d ? 1 : -1);
case 6:
return Math.rint(d);
case 7:
double rint = Math.rint(d);
return Math.abs(d - rint) == 0.5d ? d + Math.copySign(0.5d, d) : rint;
case 8:
double rint2 = Math.rint(d);
return Math.abs(d - rint2) == 0.5d ? d : rint2;
default:
throw new AssertionError();
}
}
public static long b(double d, RoundingMode roundingMode) {
double a = a(d, roundingMode);
MathPreconditions.a((a < 9.223372036854776E18d) & ((-9.223372036854776E18d) - a < 1.0d));
return (long) a;
}
public static boolean a(double d) {
return DoubleUtils.c(d) && (d == 0.0d || 52 - Long.numberOfTrailingZeros(DoubleUtils.b(d)) <= Math.getExponent(d));
}
}