public final class com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal extends java.lang.Object
{
static final int P;
private static final int W;
static final int Q_MIN;
static final int Q_MAX;
static final int E_MIN;
static final int E_MAX;
static final long C_TINY;
static final int K_MIN;
static final int K_MAX;
static final int H;
private static final long C_MIN;
private static final int BQ_MASK;
private static final long T_MASK;
private static final long MASK_63;
private static final int MASK_28;
private static final int NON_SPECIAL;
private static final int PLUS_ZERO;
private static final int MINUS_ZERO;
private static final int PLUS_INF;
private static final int MINUS_INF;
private static final int NAN;
public final int MAX_CHARS;
private final byte[] bytes;
private int index;
private void <init>()
{
byte[] v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int MAX_CHARS> = 24;
v = newarray (byte)[24];
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes> = v;
return;
}
public static java.lang.String toString(double)
{
java.lang.String v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
double v;
v := @parameter: double;
v = new com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void <init>()>();
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: java.lang.String toDecimalString(double)>(v);
return v;
}
private java.lang.String toDecimalString(double)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v;
java.lang.String v;
double v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: double;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toDecimal(double)>(v);
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
default: goto label;
};
label:
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: java.lang.String charsToString()>();
return v;
label:
return "0.0";
label:
return "-0.0";
label:
return "Infinity";
label:
return "-Infinity";
label:
return "NaN";
}
private int toDecimal(double)
{
long v, v, v, v, v, v, v;
byte v, v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v;
boolean v, v, v;
double v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: double;
v = staticinvoke <java.lang.Double: long doubleToRawLongBits(double)>(v);
v = v & 4503599627370495L;
v = v >>> 52;
v = v & 2047;
if v >= 2047 goto label;
v = (int) -1;
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index> = v;
v = v cmp 0L;
if v >= 0 goto label;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(45);
label:
if v == 0 goto label;
v = 1075 - v;
v = 4503599627370496L | v;
if 0 >= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v >= 53 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = v >> v;
v = v << v;
v = v cmp v;
if v != 0 goto label;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars(long,int)>(v, 0);
return v;
label:
v = neg v;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toDecimal(int,long,int)>(v, v, 0);
return v;
label:
v = v cmp 0L;
if v == 0 goto label;
v = v cmp 3L;
if v >= 0 goto label;
v = 10L * v;
v = (int) -1074;
v = (int) -1;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toDecimal(int,long,int)>(v, v, v);
goto label;
label:
v = (int) -1074;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toDecimal(int,long,int)>(v, v, 0);
label:
return v;
label:
v = v cmp 0L;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 2;
label:
return v;
label:
v = v cmp 0L;
if v == 0 goto label;
return 5;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = 3;
goto label;
label:
v = 4;
label:
return v;
}
private int toDecimal(int, long, int)
{
byte v, v, v, v, v, v, v, v, v;
long v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v := @parameter: long;
v := @parameter: int;
v = v & 1;
v = v << 2;
v = v + 2L;
v = v cmp 4503599627370496L;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = (int) -1074;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v | v;
if v == 0 goto label;
v = v - 2L;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: int flog10pow2(int)>(v);
goto label;
label:
v = v - 1L;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: int flog10threeQuartersPow2(int)>(v);
label:
v = neg v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: int flog2pow10(int)>(v);
v = v + v;
v = v + 2;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long g1(int)>(v);
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long g0(int)>(v);
v = v << v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: long rop(long,long,long)>(v, v, v);
v = v << v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: long rop(long,long,long)>(v, v, v);
v = v << v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: long rop(long,long,long)>(v, v, v);
v = v >> 2;
v = v cmp 100L;
if v < 0 goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long multiplyHigh(long,long)>(v, 1844674407370955168L);
v = 10L * v;
v = v + 10L;
v = v + v;
v = v << 2;
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v << 2;
v = v + v;
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == v goto label;
if v == 0 goto label;
v = v;
goto label;
label:
v = v;
label:
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars(long,int)>(v, v);
return v;
label:
v = v + 1L;
v = v + v;
v = v << 2;
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v << 2;
v = v + v;
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == v goto label;
if v == 0 goto label;
v = v;
goto label;
label:
v = v;
label:
v = v + v;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars(long,int)>(v, v);
return v;
label:
v = v + v;
v = v << 1;
v = v - v;
v = v cmp 0L;
if v < 0 goto label;
v = v cmp 0L;
if v != 0 goto label;
v = v & 1L;
v = v cmp 0L;
if v != 0 goto label;
label:
v = v;
goto label;
label:
v = v;
label:
v = v + v;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars(long,int)>(v, v);
return v;
}
private static long rop(long, long, long)
{
long v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long multiplyHigh(long,long)>(v, v);
v = v * v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long multiplyHigh(long,long)>(v, v);
v = v >>> 1;
v = v + v;
v = v >>> 63;
v = v + v;
v = v & 9223372036854775807L;
v = v + 9223372036854775807L;
v = v >>> 63;
v = v | v;
return v;
}
private int toChars(long, int)
{
long v, v, v, v, v, v, v, v, v, v, v;
byte v;
int v, v, v, v, v, v, v, v, v, v, v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: long;
v := @parameter: int;
v = staticinvoke <java.lang.Long: int numberOfLeadingZeros(long)>(v);
v = 64 - v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: int flog10pow2(int)>(v);
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long pow10(int)>(v);
v = v cmp v;
if v < 0 goto label;
v = v + 1;
label:
v = 17 - v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long pow10(int)>(v);
v = v * v;
v = v + v;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long multiplyHigh(long,long)>(v, 193428131138340668L);
v = v >>> 20;
v = 100000000L * v;
v = v - v;
v = v * 1441151881L;
v = v >>> 57;
v = 100000000 * v;
v = v - v;
if 0 >= v goto label;
if v > 7 goto label;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars1(int,int,int,int)>(v, v, v, v);
return v;
label:
v = (int) -3;
if v >= v goto label;
if v > 0 goto label;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars2(int,int,int,int)>(v, v, v, v);
return v;
label:
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int toChars3(int,int,int,int)>(v, v, v, v);
return v;
}
private int toChars1(int, int, int, int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v, v, v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int y(int)>(v);
v = 1;
label:
if v >= v goto label;
v = 10 * v;
v = v >>> 28;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = v & 268435455;
v = v + 1;
goto label;
label:
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(46);
label:
if v > 8 goto label;
v = 10 * v;
v = v >>> 28;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = v & 268435455;
v = v + 1;
goto label;
label:
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void lowDigits(int)>(v);
return 0;
}
private int toChars2(int, int, int, int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(0);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(46);
label:
if v >= 0 goto label;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(0);
v = v + 1;
goto label;
label:
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append8Digits(int)>(v);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void lowDigits(int)>(v);
return 0;
}
private int toChars3(int, int, int, int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(46);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append8Digits(int)>(v);
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void lowDigits(int)>(v);
v = v - 1;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void exponent(int)>(v);
return 0;
}
private void lowDigits(int)
{
int v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
if v == 0 goto label;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append8Digits(int)>(v);
label:
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void removeTrailingZeroes()>();
return;
}
private void append8Digits(int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v = specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int y(int)>(v);
v = 0;
label:
if v >= 8 goto label;
v = 10 * v;
v = v >>> 28;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = v & 268435455;
v = v + 1;
goto label;
label:
return;
}
private void removeTrailingZeroes()
{
byte[] v, v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
byte v, v;
int v, v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
label:
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes>;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v[v];
if v != 48 goto label;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v - 1;
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index> = v;
goto label;
label:
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes>;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v[v];
if v != 46 goto label;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v + 1;
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index> = v;
label:
return;
}
private int y(int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v;
long v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v = v + 1;
v = v << 28;
v = staticinvoke <com.fasterxml.jackson.core.io.schubfach.MathUtils: long multiplyHigh(long,long)>(v, 193428131138340668L);
v = v >>> 20;
v = v - 1;
return v;
}
private void exponent(int)
{
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v, v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(69);
if v >= 0 goto label;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void append(int)>(45);
v = neg v;
label:
if v >= 10 goto label;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
return;
label:
if v < 100 goto label;
v = v * 1311;
v = v >>> 17;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = 100 * v;
v = v - v;
label:
v = v * 103;
v = v >>> 10;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
v = 10 * v;
v = v - v;
specialinvoke v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: void appendDigit(int)>(v);
return;
}
private void append(int)
{
byte[] v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes>;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v + 1;
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index> = v;
v[v] = v;
return;
}
private void appendDigit(int)
{
byte[] v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v, v, v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v := @parameter: int;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes>;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v + 1;
v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index> = v;
v = 48 + v;
v[v] = v;
return;
}
private java.lang.String charsToString()
{
byte[] v;
com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal v;
int v, v;
java.lang.String v;
v := @this: com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal;
v = new java.lang.String;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: byte[] bytes>;
v = v.<com.fasterxml.jackson.core.io.schubfach.DoubleToDecimal: int index>;
v = v + 1;
specialinvoke v.<java.lang.String: void <init>(byte[],int,int,int)>(v, 0, 0, v);
return v;
}
}