94 lines
3.0 KiB
Java
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));
|
|
}
|
|
}
|