public final class org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath extends java.lang.Object
{
static final int SQRT2_PRECOMPUTE_THRESHOLD;
static final java.math.BigInteger SQRT2_PRECOMPUTED_BITS;
private static final double LN_10;
private static final double LN_2;
public static java.math.BigInteger ceilingPowerOfTwo(java.math.BigInteger)
{
int v;
java.math.BigInteger v, v, v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v = <java.math.BigInteger: java.math.BigInteger ZERO>;
v = <java.math.RoundingMode: java.math.RoundingMode CEILING>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: int log2(java.math.BigInteger,java.math.RoundingMode)>(v, v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger setBit(int)>(v);
return v;
}
public static java.math.BigInteger floorPowerOfTwo(java.math.BigInteger)
{
int v;
java.math.BigInteger v, v, v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v = <java.math.BigInteger: java.math.BigInteger ZERO>;
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: int log2(java.math.BigInteger,java.math.RoundingMode)>(v, v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger setBit(int)>(v);
return v;
}
public static boolean isPowerOfTwo(java.math.BigInteger)
{
int v, v, v, v;
java.math.BigInteger v;
boolean v;
v := @parameter: java.math.BigInteger;
staticinvoke <org.apache.drill.shaded.guava.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = virtualinvoke v.<java.math.BigInteger: int signum()>();
if v <= 0 goto label;
v = virtualinvoke v.<java.math.BigInteger: int getLowestSetBit()>();
v = virtualinvoke v.<java.math.BigInteger: int bitLength()>();
v = v - 1;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static int log2(java.math.BigInteger, java.math.RoundingMode)
{
java.lang.AssertionError v;
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
java.math.BigInteger v, v, v, v;
boolean v, v;
java.math.RoundingMode v;
java.lang.Object v;
v := @parameter: java.math.BigInteger;
v := @parameter: java.math.RoundingMode;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: java.math.BigInteger checkPositive(java.lang.String,java.math.BigInteger)>("x", v);
v = virtualinvoke v.<java.math.BigInteger: int bitLength()>();
v = v - 1;
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath$1: int[] $SwitchMap$java$math$RoundingMode>;
v = virtualinvoke v.<java.math.RoundingMode: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: boolean isPowerOfTwo(java.math.BigInteger)>(v);
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: void checkRoundingUnnecessary(boolean)>(v);
label:
return v;
label:
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: boolean isPowerOfTwo(java.math.BigInteger)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = v + 1;
label:
return v;
label:
if v >= 256 goto label;
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger SQRT2_PRECOMPUTED_BITS>;
v = 256 - v;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftRight(int)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v > 0 goto label;
return v;
label:
v = v + 1;
return v;
label:
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = virtualinvoke v.<java.math.BigInteger: int bitLength()>();
v = v - 1;
v = 2 * v;
v = v + 1;
if v >= v goto label;
v = v;
goto label;
label:
v = v + 1;
label:
return v;
label:
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
}
public static int log10(java.math.BigInteger, java.math.RoundingMode)
{
int[] v;
java.math.BigInteger v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v;
java.math.RoundingMode v, v;
long v;
java.lang.AssertionError v;
int v, v, v, v, v, v, v, v, v, v;
double v, v, v, v;
v := @parameter: java.math.BigInteger;
v := @parameter: java.math.RoundingMode;
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: java.math.BigInteger checkPositive(java.lang.String,java.math.BigInteger)>("x", v);
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: boolean fitsInLong(java.math.BigInteger)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigInteger: long longValue()>();
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int log10(long,java.math.RoundingMode)>(v, v);
return v;
label:
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: int log2(java.math.BigInteger,java.math.RoundingMode)>(v, v);
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: double LN_2>;
v = v * v;
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: double LN_10>;
v = v / v;
v = <java.math.BigInteger: java.math.BigInteger TEN>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v <= 0 goto label;
label:
v = v - 1;
v = <java.math.BigInteger: java.math.BigInteger TEN>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger divide(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v > 0 goto label;
goto label;
label:
v = <java.math.BigInteger: java.math.BigInteger TEN>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
label:
if v > 0 goto label;
v = v + 1;
v = v;
v = v;
v = <java.math.BigInteger: java.math.BigInteger TEN>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
goto label;
label:
v = v;
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath$1: int[] $SwitchMap$java$math$RoundingMode>;
v = virtualinvoke v.<java.math.RoundingMode: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: void checkRoundingUnnecessary(boolean)>(v);
label:
return v;
label:
v = virtualinvoke v.<java.math.BigInteger: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = v + 1;
label:
return v;
label:
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = <java.math.BigInteger: java.math.BigInteger TEN>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v > 0 goto label;
v = v;
goto label;
label:
v = v + 1;
label:
return v;
label:
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
}
public static java.math.BigInteger sqrt(java.math.BigInteger, java.math.RoundingMode)
{
long v, v;
java.lang.AssertionError v;
int[] v;
int v, v, v, v, v, v;
java.math.BigInteger v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v := @parameter: java.math.RoundingMode;
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: java.math.BigInteger checkNonNegative(java.lang.String,java.math.BigInteger)>("x", v);
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: boolean fitsInLong(java.math.BigInteger)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigInteger: long longValue()>();
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long sqrt(long,java.math.RoundingMode)>(v, v);
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
return v;
label:
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger sqrtFloor(java.math.BigInteger)>(v);
v = <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath$1: int[] $SwitchMap$java$math$RoundingMode>;
v = virtualinvoke v.<java.math.RoundingMode: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = virtualinvoke v.<java.math.BigInteger: boolean equals(java.lang.Object)>(v);
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: void checkRoundingUnnecessary(boolean)>(v);
label:
return v;
label:
v = virtualinvoke v.<java.math.BigInteger: int intValue()>();
v = v * v;
v = virtualinvoke v.<java.math.BigInteger: int intValue()>();
if v != v goto label;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = virtualinvoke v.<java.math.BigInteger: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == 0 goto label;
v = v;
goto label;
label:
v = <java.math.BigInteger: java.math.BigInteger ONE>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
label:
return v;
label:
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger pow(int)>(2);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v < 0 goto label;
v = v;
goto label;
label:
v = <java.math.BigInteger: java.math.BigInteger ONE>;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
label:
return v;
label:
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
}
private static java.math.BigInteger sqrtFloor(java.math.BigInteger)
{
int v, v, v, v, v, v;
java.math.BigInteger v, v, v, v, v, v, v, v, v, v;
boolean v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: int log2(java.math.BigInteger,java.math.RoundingMode)>(v, v);
if v >= 1023 goto label;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger sqrtApproxWithDoubles(java.math.BigInteger)>(v);
goto label;
label:
v = v - 52;
v = (int) -2;
v = v & v;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftRight(int)>(v);
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger sqrtApproxWithDoubles(java.math.BigInteger)>(v);
v = v >> 1;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftLeft(int)>(v);
label:
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger divide(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftRight(int)>(1);
v = virtualinvoke v.<java.math.BigInteger: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return v;
label:
v = v;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger divide(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftRight(int)>(1);
v = virtualinvoke v.<java.math.BigInteger: int compareTo(java.math.BigInteger)>(v);
if v < 0 goto label;
return v;
}
private static java.math.BigInteger sqrtApproxWithDoubles(java.math.BigInteger)
{
java.math.BigInteger v, v;
double v, v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.DoubleUtils: double bigToDouble(java.math.BigInteger)>(v);
v = staticinvoke <java.lang.Math: double sqrt(double)>(v);
v = <java.math.RoundingMode: java.math.RoundingMode HALF_EVEN>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.DoubleMath: java.math.BigInteger roundToBigInteger(double,java.math.RoundingMode)>(v, v);
return v;
}
public static java.math.BigInteger divide(java.math.BigInteger, java.math.BigInteger, java.math.RoundingMode)
{
java.math.BigDecimal v, v, v;
java.math.BigInteger v, v, v;
java.math.RoundingMode v;
v := @parameter: java.math.BigInteger;
v := @parameter: java.math.BigInteger;
v := @parameter: java.math.RoundingMode;
v = new java.math.BigDecimal;
specialinvoke v.<java.math.BigDecimal: void <init>(java.math.BigInteger)>(v);
v = new java.math.BigDecimal;
specialinvoke v.<java.math.BigDecimal: void <init>(java.math.BigInteger)>(v);
v = virtualinvoke v.<java.math.BigDecimal: java.math.BigDecimal divide(java.math.BigDecimal,int,java.math.RoundingMode)>(v, 0, v);
v = virtualinvoke v.<java.math.BigDecimal: java.math.BigInteger toBigIntegerExact()>();
return v;
}
public static java.math.BigInteger factorial(int)
{
byte v, v, v;
java.math.BigInteger v, v, v, v, v;
java.math.RoundingMode v, v, v, v, v;
long v, v, v, v, v;
java.util.ArrayList v;
long[] v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @parameter: int;
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: int checkNonNegative(java.lang.String,int)>("n", v);
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long[] factorials>;
v = lengthof v;
if v >= v goto label;
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long[] factorials>;
v = v[v];
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
return v;
label:
v = <java.math.RoundingMode: java.math.RoundingMode CEILING>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.IntMath: int log2(int,java.math.RoundingMode)>(v, v);
v = v * v;
v = <java.math.RoundingMode: java.math.RoundingMode CEILING>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.IntMath: int divide(int,int,java.math.RoundingMode)>(v, 64, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long[] factorials>;
v = lengthof v;
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long[] factorials>;
v = v - 1;
v = v[v];
v = staticinvoke <java.lang.Long: int numberOfTrailingZeros(long)>(v);
v = v >> v;
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int log2(long,java.math.RoundingMode)>(v, v);
v = v + 1;
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int log2(long,java.math.RoundingMode)>(v, v);
v = v + 1;
v = v - 1;
v = 1 << v;
label:
v = v cmp v;
if v > 0 goto label;
v = v & v;
v = v cmp 0L;
if v == 0 goto label;
v = v << 1;
v = v + 1;
label:
v = staticinvoke <java.lang.Long: int numberOfTrailingZeros(long)>(v);
v = v >> v;
v = v + v;
v = v - v;
v = v + v;
if v < 64 goto label;
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
v = 1L;
label:
v = v * v;
v = <java.math.RoundingMode: java.math.RoundingMode FLOOR>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int log2(long,java.math.RoundingMode)>(v, v);
v = v + 1;
v = v + 1L;
goto label;
label:
v = v cmp 1L;
if v <= 0 goto label;
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
label:
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger listProduct(java.util.List)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger shiftLeft(int)>(v);
return v;
}
static java.math.BigInteger listProduct(java.util.List)
{
int v;
java.math.BigInteger v;
java.util.List v;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: int size()>();
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger listProduct(java.util.List,int,int)>(v, 0, v);
return v;
}
static java.math.BigInteger listProduct(java.util.List, int, int)
{
int v, v, v, v, v, v, v, v;
java.math.BigInteger v, v, v, v, v, v, v;
java.util.List v;
java.lang.Object v, v, v, v, v, v;
v := @parameter: java.util.List;
v := @parameter: int;
v := @parameter: int;
v = v - v;
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = <java.math.BigInteger: java.math.BigInteger ONE>;
return v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
return v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = v + 1;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
return v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = v + 1;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = v + 2;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
return v;
label:
v = v + v;
v = v >>> 1;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger listProduct(java.util.List,int,int)>(v, v, v);
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger listProduct(java.util.List,int,int)>(v, v, v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
return v;
}
public static java.math.BigInteger binomial(int, int)
{
long v;
int[] v, v;
int v, v, v, v, v, v, v, v, v, v, v;
java.math.BigInteger v, v, v, v, v, v, v, v, v;
boolean v;
java.math.RoundingMode v;
v := @parameter: int;
v := @parameter: int;
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: int checkNonNegative(java.lang.String,int)>("n", v);
staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.MathPreconditions: int checkNonNegative(java.lang.String,int)>("k", v);
if v > v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <org.apache.drill.shaded.guava.com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,int,int)>(v, "k (%s) > n (%s)", v, v);
v = v >> 1;
if v <= v goto label;
v = v - v;
label:
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int[] biggestBinomials>;
v = lengthof v;
if v >= v goto label;
v = <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int[] biggestBinomials>;
v = v[v];
if v > v goto label;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: long binomial(int,int)>(v, v);
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
return v;
label:
v = <java.math.BigInteger: java.math.BigInteger ONE>;
v = <java.math.RoundingMode: java.math.RoundingMode CEILING>;
v = staticinvoke <org.apache.drill.shaded.guava.com.google.common.math.LongMath: int log2(long,java.math.RoundingMode)>(v, v);
v = v;
v = 1;
label:
if v >= v goto label;
v = v - v;
v = v + 1;
v = v + v;
if v < 63 goto label;
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(1L);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger divide(java.math.BigInteger)>(v);
v = v;
goto label;
label:
v = v * v;
v = v * v;
v = v + v;
label:
v = v + 1;
goto label;
label:
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger multiply(java.math.BigInteger)>(v);
v = staticinvoke <java.math.BigInteger: java.math.BigInteger valueOf(long)>(v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger divide(java.math.BigInteger)>(v);
return v;
}
static boolean fitsInLong(java.math.BigInteger)
{
int v;
java.math.BigInteger v;
boolean v;
v := @parameter: java.math.BigInteger;
v = virtualinvoke v.<java.math.BigInteger: int bitLength()>();
if v > 63 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void <init>()
{
org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath v;
v := @this: org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
static void <clinit>()
{
java.math.BigInteger v;
double v, v;
v = new java.math.BigInteger;
specialinvoke v.<java.math.BigInteger: void <init>(java.lang.String,int)>("16a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a", 16);
<org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: java.math.BigInteger SQRT2_PRECOMPUTED_BITS> = v;
v = staticinvoke <java.lang.Math: double log(double)>(10.0);
<org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: double LN_10> = v;
v = staticinvoke <java.lang.Math: double log(double)>(2.0);
<org.apache.drill.shaded.guava.com.google.common.math.BigIntegerMath: double LN_2> = v;
return;
}
}