public final class com.google.common.math.LongMath
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.common.math.LongMath
super_class: java.lang.Object
{
static final long MAX_SIGNED_POWER_OF_TWO;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 4611686018427387904
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
static final long MAX_POWER_OF_SQRT2_UNSIGNED;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: -5402926248376769404
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
static final byte[] maxLog10ForLeadingZeros;
descriptor: [B
flags: (0x0018) ACC_STATIC, ACC_FINAL
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
static final long[] powersOf10;
descriptor: [J
flags: (0x0018) ACC_STATIC, ACC_FINAL
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
com.google.common.annotations.VisibleForTesting()
static final long[] halfPowersOf10;
descriptor: [J
flags: (0x0018) ACC_STATIC, ACC_FINAL
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
com.google.common.annotations.VisibleForTesting()
static final long FLOOR_SQRT_MAX_LONG;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3037000499
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
static final long[] factorials;
descriptor: [J
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final int[] biggestBinomials;
descriptor: [I
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final int[] biggestSimpleBinomials;
descriptor: [I
flags: (0x0018) ACC_STATIC, ACC_FINAL
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
private static final int SIEVE_30;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -545925251
private static final long[][] millerRabinBaseSets;
descriptor: [[J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile int[] $SWITCH_TABLE$java$math$RoundingMode;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=0, args_size=0
0: .line 206
bipush 64
newarray 8
dup
iconst_0
1: .line 207
bipush 19
bastore
dup
iconst_1
bipush 18
bastore
dup
iconst_2
bipush 18
bastore
dup
iconst_3
bipush 18
bastore
dup
iconst_4
bipush 18
bastore
dup
iconst_5
bipush 17
bastore
dup
bipush 6
bipush 17
bastore
dup
bipush 7
bipush 17
bastore
dup
bipush 8
bipush 16
bastore
dup
bipush 9
bipush 16
bastore
dup
bipush 10
bipush 16
bastore
dup
bipush 11
bipush 15
bastore
dup
bipush 12
bipush 15
bastore
dup
bipush 13
bipush 15
bastore
dup
bipush 14
bipush 15
bastore
dup
bipush 15
bipush 14
bastore
dup
bipush 16
bipush 14
bastore
dup
bipush 17
bipush 14
bastore
dup
bipush 18
bipush 13
bastore
dup
bipush 19
bipush 13
bastore
dup
bipush 20
bipush 13
bastore
dup
bipush 21
bipush 12
bastore
dup
bipush 22
bipush 12
bastore
dup
bipush 23
bipush 12
bastore
dup
bipush 24
2: .line 208
bipush 12
bastore
dup
bipush 25
bipush 11
bastore
dup
bipush 26
bipush 11
bastore
dup
bipush 27
bipush 11
bastore
dup
bipush 28
bipush 10
bastore
dup
bipush 29
bipush 10
bastore
dup
bipush 30
bipush 10
bastore
dup
bipush 31
bipush 9
bastore
dup
bipush 32
bipush 9
bastore
dup
bipush 33
bipush 9
bastore
dup
bipush 34
bipush 9
bastore
dup
bipush 35
bipush 8
bastore
dup
bipush 36
bipush 8
bastore
dup
bipush 37
bipush 8
bastore
dup
bipush 38
bipush 7
bastore
dup
bipush 39
bipush 7
bastore
dup
bipush 40
bipush 7
bastore
dup
bipush 41
bipush 6
bastore
dup
bipush 42
bipush 6
bastore
dup
bipush 43
bipush 6
bastore
dup
bipush 44
bipush 6
bastore
dup
bipush 45
iconst_5
bastore
dup
bipush 46
iconst_5
bastore
dup
bipush 47
iconst_5
bastore
dup
bipush 48
iconst_4
bastore
dup
bipush 49
iconst_4
bastore
dup
bipush 50
iconst_4
bastore
dup
bipush 51
iconst_3
bastore
dup
bipush 52
iconst_3
bastore
dup
bipush 53
iconst_3
bastore
dup
bipush 54
3: .line 209
iconst_3
bastore
dup
bipush 55
iconst_2
bastore
dup
bipush 56
iconst_2
bastore
dup
bipush 57
iconst_2
bastore
dup
bipush 58
iconst_1
bastore
dup
bipush 59
iconst_1
bastore
dup
bipush 60
iconst_1
bastore
4: .line 206
putstatic com.google.common.math.LongMath.maxLog10ForLeadingZeros:[B
5: .line 214
bipush 19
newarray 11
dup
iconst_0
6: .line 215
lconst_1
lastore
dup
iconst_1
7: .line 216
ldc 10
lastore
dup
iconst_2
8: .line 217
ldc 100
lastore
dup
iconst_3
9: .line 218
ldc 1000
lastore
dup
iconst_4
10: .line 219
ldc 10000
lastore
dup
iconst_5
11: .line 220
ldc 100000
lastore
dup
bipush 6
12: .line 221
ldc 1000000
lastore
dup
bipush 7
13: .line 222
ldc 10000000
lastore
dup
bipush 8
14: .line 223
ldc 100000000
lastore
dup
bipush 9
15: .line 224
ldc 1000000000
lastore
dup
bipush 10
16: .line 225
ldc 10000000000
lastore
dup
bipush 11
17: .line 226
ldc 100000000000
lastore
dup
bipush 12
18: .line 227
ldc 1000000000000
lastore
dup
bipush 13
19: .line 228
ldc 10000000000000
lastore
dup
bipush 14
20: .line 229
ldc 100000000000000
lastore
dup
bipush 15
21: .line 230
ldc 1000000000000000
lastore
dup
bipush 16
22: .line 231
ldc 10000000000000000
lastore
dup
bipush 17
23: .line 232
ldc 100000000000000000
lastore
dup
bipush 18
24: .line 233
ldc 1000000000000000000
lastore
25: .line 214
putstatic com.google.common.math.LongMath.powersOf10:[J
26: .line 239
bipush 19
newarray 11
dup
iconst_0
27: .line 240
ldc 3
lastore
dup
iconst_1
28: .line 241
ldc 31
lastore
dup
iconst_2
29: .line 242
ldc 316
lastore
dup
iconst_3
30: .line 243
ldc 3162
lastore
dup
iconst_4
31: .line 244
ldc 31622
lastore
dup
iconst_5
32: .line 245
ldc 316227
lastore
dup
bipush 6
33: .line 246
ldc 3162277
lastore
dup
bipush 7
34: .line 247
ldc 31622776
lastore
dup
bipush 8
35: .line 248
ldc 316227766
lastore
dup
bipush 9
36: .line 249
ldc 3162277660
lastore
dup
bipush 10
37: .line 250
ldc 31622776601
lastore
dup
bipush 11
38: .line 251
ldc 316227766016
lastore
dup
bipush 12
39: .line 252
ldc 3162277660168
lastore
dup
bipush 13
40: .line 253
ldc 31622776601683
lastore
dup
bipush 14
41: .line 254
ldc 316227766016837
lastore
dup
bipush 15
42: .line 255
ldc 3162277660168379
lastore
dup
bipush 16
43: .line 256
ldc 31622776601683793
lastore
dup
bipush 17
44: .line 257
ldc 316227766016837933
lastore
dup
bipush 18
45: .line 258
ldc 3162277660168379331
lastore
46: .line 239
putstatic com.google.common.math.LongMath.halfPowersOf10:[J
47: .line 779
bipush 21
newarray 11
dup
iconst_0
48: .line 780
lconst_1
lastore
dup
iconst_1
49: .line 781
lconst_1
lastore
dup
iconst_2
50: .line 782
ldc 2
lastore
dup
iconst_3
51: .line 783
ldc 6
lastore
dup
iconst_4
52: .line 784
ldc 24
lastore
dup
iconst_5
53: .line 785
ldc 120
lastore
dup
bipush 6
54: .line 786
ldc 720
lastore
dup
bipush 7
55: .line 787
ldc 5040
lastore
dup
bipush 8
56: .line 788
ldc 40320
lastore
dup
bipush 9
57: .line 789
ldc 362880
lastore
dup
bipush 10
58: .line 790
ldc 3628800
lastore
dup
bipush 11
59: .line 791
ldc 39916800
lastore
dup
bipush 12
60: .line 792
ldc 479001600
lastore
dup
bipush 13
61: .line 793
ldc 6227020800
lastore
dup
bipush 14
62: .line 794
ldc 87178291200
lastore
dup
bipush 15
63: .line 795
ldc 1307674368000
lastore
dup
bipush 16
64: .line 796
ldc 20922789888000
lastore
dup
bipush 17
65: .line 797
ldc 355687428096000
lastore
dup
bipush 18
66: .line 798
ldc 6402373705728000
lastore
dup
bipush 19
67: .line 799
ldc 121645100408832000
lastore
dup
bipush 20
68: .line 800
ldc 2432902008176640000
lastore
69: .line 779
putstatic com.google.common.math.LongMath.factorials:[J
70: .line 885
bipush 34
newarray 10
dup
iconst_0
71: .line 886
ldc 2147483647
iastore
dup
iconst_1
72: .line 887
ldc 2147483647
iastore
dup
iconst_2
73: .line 888
ldc 2147483647
iastore
dup
iconst_3
74: .line 889
ldc 3810779
iastore
dup
iconst_4
75: .line 890
ldc 121977
iastore
dup
iconst_5
76: .line 891
sipush 16175
iastore
dup
bipush 6
77: .line 892
sipush 4337
iastore
dup
bipush 7
78: .line 893
sipush 1733
iastore
dup
bipush 8
79: .line 894
sipush 887
iastore
dup
bipush 9
80: .line 895
sipush 534
iastore
dup
bipush 10
81: .line 896
sipush 361
iastore
dup
bipush 11
82: .line 897
sipush 265
iastore
dup
bipush 12
83: .line 898
sipush 206
iastore
dup
bipush 13
84: .line 899
sipush 169
iastore
dup
bipush 14
85: .line 900
sipush 143
iastore
dup
bipush 15
86: .line 901
bipush 125
iastore
dup
bipush 16
87: .line 902
bipush 111
iastore
dup
bipush 17
88: .line 903
bipush 101
iastore
dup
bipush 18
89: .line 904
bipush 94
iastore
dup
bipush 19
90: .line 905
bipush 88
iastore
dup
bipush 20
91: .line 906
bipush 83
iastore
dup
bipush 21
92: .line 907
bipush 79
iastore
dup
bipush 22
93: .line 908
bipush 76
iastore
dup
bipush 23
94: .line 909
bipush 74
iastore
dup
bipush 24
95: .line 910
bipush 72
iastore
dup
bipush 25
96: .line 911
bipush 70
iastore
dup
bipush 26
97: .line 912
bipush 69
iastore
dup
bipush 27
98: .line 913
bipush 68
iastore
dup
bipush 28
99: .line 914
bipush 67
iastore
dup
bipush 29
100: .line 915
bipush 67
iastore
dup
bipush 30
101: .line 916
bipush 66
iastore
dup
bipush 31
102: .line 917
bipush 66
iastore
dup
bipush 32
103: .line 918
bipush 66
iastore
dup
bipush 33
104: .line 919
bipush 66
iastore
105: .line 885
putstatic com.google.common.math.LongMath.biggestBinomials:[I
106: .line 927
bipush 31
newarray 10
dup
iconst_0
107: .line 928
ldc 2147483647
iastore
dup
iconst_1
108: .line 929
ldc 2147483647
iastore
dup
iconst_2
109: .line 930
ldc 2147483647
iastore
dup
iconst_3
110: .line 931
ldc 2642246
iastore
dup
iconst_4
111: .line 932
ldc 86251
iastore
dup
iconst_5
112: .line 933
sipush 11724
iastore
dup
bipush 6
113: .line 934
sipush 3218
iastore
dup
bipush 7
114: .line 935
sipush 1313
iastore
dup
bipush 8
115: .line 936
sipush 684
iastore
dup
bipush 9
116: .line 937
sipush 419
iastore
dup
bipush 10
117: .line 938
sipush 287
iastore
dup
bipush 11
118: .line 939
sipush 214
iastore
dup
bipush 12
119: .line 940
sipush 169
iastore
dup
bipush 13
120: .line 941
sipush 139
iastore
dup
bipush 14
121: .line 942
bipush 119
iastore
dup
bipush 15
122: .line 943
bipush 105
iastore
dup
bipush 16
123: .line 944
bipush 95
iastore
dup
bipush 17
124: .line 945
bipush 87
iastore
dup
bipush 18
125: .line 946
bipush 81
iastore
dup
bipush 19
126: .line 947
bipush 76
iastore
dup
bipush 20
127: .line 948
bipush 73
iastore
dup
bipush 21
128: .line 949
bipush 70
iastore
dup
bipush 22
129: .line 950
bipush 68
iastore
dup
bipush 23
130: .line 951
bipush 66
iastore
dup
bipush 24
131: .line 952
bipush 64
iastore
dup
bipush 25
132: .line 953
bipush 63
iastore
dup
bipush 26
133: .line 954
bipush 62
iastore
dup
bipush 27
134: .line 955
bipush 62
iastore
dup
bipush 28
135: .line 956
bipush 61
iastore
dup
bipush 29
136: .line 957
bipush 61
iastore
dup
bipush 30
137: .line 958
bipush 61
iastore
138: .line 927
putstatic com.google.common.math.LongMath.biggestSimpleBinomials:[I
139: .line 1063
bipush 7
anewarray long[]
dup
iconst_0
140: .line 1064
iconst_2
newarray 11
dup
iconst_0
ldc 291830
lastore
dup
iconst_1
ldc 126401071349994536
lastore
aastore
dup
iconst_1
141: .line 1065
iconst_3
newarray 11
dup
iconst_0
ldc 885594168
lastore
dup
iconst_1
ldc 725270293939359937
lastore
dup
iconst_2
ldc 3569819667048198375
lastore
aastore
dup
iconst_2
142: .line 1066
iconst_4
newarray 11
dup
iconst_0
ldc 273919523040
lastore
dup
iconst_1
ldc 15
lastore
dup
iconst_2
ldc 7363882082
lastore
dup
iconst_3
ldc 992620450144556
lastore
aastore
dup
iconst_3
143: .line 1067
iconst_5
newarray 11
dup
iconst_0
ldc 47636622961200
lastore
dup
iconst_1
ldc 2
lastore
dup
iconst_2
ldc 2570940
lastore
dup
iconst_3
ldc 211991001
lastore
dup
iconst_4
ldc 3749873356
lastore
aastore
dup
iconst_4
144: .line 1068
bipush 6
newarray 11
dup
iconst_0
145: .line 1069
ldc 7999252175582850
lastore
dup
iconst_1
146: .line 1070
ldc 2
lastore
dup
iconst_2
147: .line 1071
ldc 4130806001517
lastore
dup
iconst_3
148: .line 1072
ldc 149795463772692060
lastore
dup
iconst_4
149: .line 1073
ldc 186635894390467037
lastore
dup
iconst_5
150: .line 1074
ldc 3967304179347715805
lastore
aastore
dup
iconst_5
151: .line 1076
bipush 7
newarray 11
dup
iconst_0
152: .line 1077
ldc 585226005592931976
lastore
dup
iconst_1
153: .line 1078
ldc 2
lastore
dup
iconst_2
154: .line 1079
ldc 123635709730000
lastore
dup
iconst_3
155: .line 1080
ldc 9233062284813009
lastore
dup
iconst_4
156: .line 1081
ldc 43835965440333360
lastore
dup
iconst_5
157: .line 1082
ldc 761179012939631437
lastore
dup
bipush 6
158: .line 1083
ldc 1263739024124850375
lastore
aastore
dup
bipush 6
159: .line 1085
bipush 8
newarray 11
dup
iconst_0
ldc 9223372036854775807
lastore
dup
iconst_1
ldc 2
lastore
dup
iconst_2
ldc 325
lastore
dup
iconst_3
ldc 9375
lastore
dup
iconst_4
ldc 28178
lastore
dup
iconst_5
ldc 450775
lastore
dup
bipush 6
ldc 9780504
lastore
dup
bipush 7
ldc 1795265022
lastore
aastore
160: .line 1063
putstatic com.google.common.math.LongMath.millerRabinBaseSets:[[J
161: .line 1086
return
LocalVariableTable:
Start End Slot Name Signature
public static long ceilingPowerOfTwo(long);
descriptor: (J)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=2, args_size=1
start local 0 // long x
0: .line 68
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 69
lload 0 /* x */
ldc 4611686018427387904
lcmp
ifle 3
2: .line 70
new java.lang.ArithmeticException
dup
new java.lang.StringBuilder
dup
ldc "ceilingPowerOfTwo("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 0 /* x */
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ") is not representable as a long"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: .line 72
StackMap locals:
StackMap stack:
lconst_1
lload 0 /* x */
lconst_1
lsub
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
ineg
lshl
lreturn
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 4 0 x J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
x
public static long floorPowerOfTwo(long);
descriptor: (J)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 // long x
0: .line 84
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 88
lconst_1
bipush 63
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
lshl
lreturn
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
x
public static boolean isPowerOfTwo(long);
descriptor: (J)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=2, args_size=1
start local 0 // long x
0: .line 98
lload 0 /* x */
lconst_0
lcmp
ifle 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: lload 0 /* x */
lload 0 /* x */
lconst_1
lsub
land
lconst_0
lcmp
ifne 3
iconst_1
goto 4
StackMap locals:
StackMap stack: int
3: iconst_0
StackMap locals: long
StackMap stack: int int
4: iand
ireturn
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 5 0 x J
MethodParameters:
Name Flags
x
static int lessThanBranchFree(long, long);
descriptor: (JJ)I
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 // long x
start local 2 // long y
0: .line 109
lload 0 /* x */
lload 2 /* y */
lsub
ldc -1
lxor
ldc -1
lxor
bipush 63
lushr
l2i
ireturn
end local 2 // long y
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 1 0 x J
0 1 2 y J
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.google.common.annotations.VisibleForTesting()
MethodParameters:
Name Flags
x
y
public static int log2(long, java.math.RoundingMode);
descriptor: (JLjava/math/RoundingMode;)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=7, args_size=2
start local 0 // long x
start local 2 // java.math.RoundingMode mode
0: .line 122
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 123
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 2 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 4
2: 3
3: 4
4: 3
5: 5
6: 5
7: 5
8: 2
default: 9
}
2: .line 125
StackMap locals:
StackMap stack:
lload 0 /* x */
invokestatic com.google.common.math.LongMath.isPowerOfTwo:(J)Z
invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
3: .line 129
StackMap locals:
StackMap stack:
bipush 63
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
ireturn
4: .line 133
StackMap locals:
StackMap stack:
bipush 64
lload 0 /* x */
lconst_1
lsub
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
ireturn
5: .line 139
StackMap locals:
StackMap stack:
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
istore 3 /* leadingZeros */
start local 3 // int leadingZeros
6: .line 140
ldc -5402926248376769404
iload 3 /* leadingZeros */
lushr
lstore 4 /* cmp */
start local 4 // long cmp
7: .line 142
bipush 63
iload 3 /* leadingZeros */
isub
istore 6 /* logFloor */
start local 6 // int logFloor
8: .line 143
iload 6 /* logFloor */
lload 4 /* cmp */
lload 0 /* x */
invokestatic com.google.common.math.LongMath.lessThanBranchFree:(JJ)I
iadd
ireturn
end local 6 // int logFloor
end local 4 // long cmp
end local 3 // int leadingZeros
9: .line 146
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
ldc "impossible"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 2 // java.math.RoundingMode mode
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 10 0 x J
0 10 2 mode Ljava/math/RoundingMode;
6 9 3 leadingZeros I
7 9 4 cmp J
8 9 6 logFloor I
MethodParameters:
Name Flags
x
mode
public static int log10(long, java.math.RoundingMode);
descriptor: (JLjava/math/RoundingMode;)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=6, args_size=2
start local 0 // long x
start local 2 // java.math.RoundingMode mode
0: .line 164
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 165
lload 0 /* x */
invokestatic com.google.common.math.LongMath.log10Floor:(J)I
istore 3 /* logFloor */
start local 3 // int logFloor
2: .line 166
getstatic com.google.common.math.LongMath.powersOf10:[J
iload 3 /* logFloor */
laload
lstore 4 /* floorPow */
start local 4 // long floorPow
3: .line 167
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 2 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 8
2: 7
3: 8
4: 7
5: 9
6: 9
7: 9
8: 4
default: 10
}
4: .line 169
StackMap locals: int long
StackMap stack:
lload 0 /* x */
lload 4 /* floorPow */
lcmp
ifne 5
iconst_1
goto 6
StackMap locals:
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
7: .line 173
StackMap locals:
StackMap stack:
iload 3 /* logFloor */
ireturn
8: .line 176
StackMap locals:
StackMap stack:
iload 3 /* logFloor */
lload 4 /* floorPow */
lload 0 /* x */
invokestatic com.google.common.math.LongMath.lessThanBranchFree:(JJ)I
iadd
ireturn
9: .line 181
StackMap locals:
StackMap stack:
iload 3 /* logFloor */
getstatic com.google.common.math.LongMath.halfPowersOf10:[J
iload 3 /* logFloor */
laload
lload 0 /* x */
invokestatic com.google.common.math.LongMath.lessThanBranchFree:(JJ)I
iadd
ireturn
10: .line 183
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 4 // long floorPow
end local 3 // int logFloor
end local 2 // java.math.RoundingMode mode
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 11 0 x J
0 11 2 mode Ljava/math/RoundingMode;
2 11 3 logFloor I
3 11 4 floorPow J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
mode
static int log10Floor(long);
descriptor: (J)I
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 // long x
0: .line 196
getstatic com.google.common.math.LongMath.maxLog10ForLeadingZeros:[B
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
baload
istore 2 /* y */
start local 2 // int y
1: .line 201
iload 2 /* y */
lload 0 /* x */
getstatic com.google.common.math.LongMath.powersOf10:[J
iload 2 /* y */
laload
invokestatic com.google.common.math.LongMath.lessThanBranchFree:(JJ)I
isub
ireturn
end local 2 // int y
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x J
1 2 2 y I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
public static long pow(long, int);
descriptor: (JI)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 // long b
start local 2 // int k
0: .line 270
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 271
ldc -2
lload 0 /* b */
lcmp
ifgt 19
lload 0 /* b */
ldc 2
lcmp
ifgt 19
2: .line 272
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 13
-1: 7
0: 3
1: 6
2: 10
default: 18
}
3: .line 274
StackMap locals:
StackMap stack:
iload 2 /* k */
ifne 4
iconst_1
goto 5
StackMap locals:
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: i2l
lreturn
6: .line 276
StackMap locals:
StackMap stack:
lconst_1
lreturn
7: .line 278
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_m1
StackMap locals:
StackMap stack: int
9: i2l
lreturn
10: .line 280
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmpge 11
lconst_1
iload 2 /* k */
lshl
goto 12
StackMap locals:
StackMap stack:
11: lconst_0
StackMap locals:
StackMap stack: long
12: lreturn
13: .line 282
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmpge 17
14: .line 283
iload 2 /* k */
iconst_1
iand
ifne 15
lconst_1
iload 2 /* k */
lshl
goto 16
StackMap locals:
StackMap stack:
15: lconst_1
iload 2 /* k */
lshl
lneg
StackMap locals:
StackMap stack: long
16: lreturn
17: .line 285
StackMap locals:
StackMap stack:
lconst_0
lreturn
18: .line 288
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
19: .line 291
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
20: .line 292
StackMap locals: long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 21
1: 22
default: 23
}
21: .line 294
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
22: .line 296
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
lmul
lreturn
23: .line 298
StackMap locals:
StackMap stack:
lload 3 /* accum */
iload 2 /* k */
iconst_1
iand
ifne 24
lconst_1
goto 25
StackMap locals:
StackMap stack: long
24: lload 0 /* b */
StackMap locals: long int long
StackMap stack: long long
25: lmul
lstore 3 /* accum */
26: .line 299
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
27: .line 291
iload 2 /* k */
iconst_1
ishr
istore 2 /* k */
goto 20
end local 3 // long accum
end local 2 // int k
end local 0 // long b
LocalVariableTable:
Start End Slot Name Signature
0 28 0 b J
0 28 2 k I
20 28 3 accum J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
b
k
public static long sqrt(long, java.math.RoundingMode);
descriptor: (JLjava/math/RoundingMode;)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=11, args_size=2
start local 0 // long x
start local 2 // java.math.RoundingMode mode
0: .line 314
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
1: .line 315
lload 0 /* x */
invokestatic com.google.common.math.LongMath.fitsInInt:(J)Z
ifeq 3
2: .line 316
lload 0 /* x */
l2i
aload 2 /* mode */
invokestatic com.google.common.math.IntMath.sqrt:(ILjava/math/RoundingMode;)I
i2l
lreturn
3: .line 333
StackMap locals:
StackMap stack:
lload 0 /* x */
l2d
invokestatic java.lang.Math.sqrt:(D)D
d2l
lstore 3 /* guess */
start local 3 // long guess
4: .line 335
lload 3 /* guess */
lload 3 /* guess */
lmul
lstore 5 /* guessSquared */
start local 5 // long guessSquared
5: .line 338
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 2 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 13
2: 10
3: 13
4: 10
5: 16
6: 16
7: 16
8: 6
default: 21
}
6: .line 340
StackMap locals: long long
StackMap stack:
lload 5 /* guessSquared */
lload 0 /* x */
lcmp
ifne 7
iconst_1
goto 8
StackMap locals:
StackMap stack:
7: iconst_0
StackMap locals:
StackMap stack: int
8: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
9: .line 341
lload 3 /* guess */
lreturn
10: .line 344
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 5 /* guessSquared */
lcmp
ifge 12
11: .line 345
lload 3 /* guess */
lconst_1
lsub
lreturn
12: .line 347
StackMap locals:
StackMap stack:
lload 3 /* guess */
lreturn
13: .line 350
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 5 /* guessSquared */
lcmp
ifle 15
14: .line 351
lload 3 /* guess */
lconst_1
ladd
lreturn
15: .line 353
StackMap locals:
StackMap stack:
lload 3 /* guess */
lreturn
16: .line 357
StackMap locals:
StackMap stack:
lload 3 /* guess */
lload 0 /* x */
lload 5 /* guessSquared */
lcmp
ifge 17
iconst_1
goto 18
StackMap locals:
StackMap stack: long
17: iconst_0
StackMap locals: long java.math.RoundingMode long long
StackMap stack: long int
18: i2l
lsub
lstore 7 /* sqrtFloor */
start local 7 // long sqrtFloor
19: .line 358
lload 7 /* sqrtFloor */
lload 7 /* sqrtFloor */
lmul
lload 7 /* sqrtFloor */
ladd
lstore 9 /* halfSquare */
start local 9 // long halfSquare
20: .line 370
lload 7 /* sqrtFloor */
lload 9 /* halfSquare */
lload 0 /* x */
invokestatic com.google.common.math.LongMath.lessThanBranchFree:(JJ)I
i2l
ladd
lreturn
end local 9 // long halfSquare
end local 7 // long sqrtFloor
21: .line 372
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 5 // long guessSquared
end local 3 // long guess
end local 2 // java.math.RoundingMode mode
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 22 0 x J
0 22 2 mode Ljava/math/RoundingMode;
4 22 3 guess J
5 22 5 guessSquared J
19 21 7 sqrtFloor J
20 21 9 halfSquare J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
mode
public static long divide(long, long, java.math.RoundingMode);
descriptor: (JJLjava/math/RoundingMode;)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=15, args_size=3
start local 0 // long p
start local 2 // long q
start local 4 // java.math.RoundingMode mode
0: .line 386
aload 4 /* mode */
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: .line 387
lload 0 /* p */
lload 2 /* q */
ldiv
lstore 5 /* div */
start local 5 // long div
2: .line 388
lload 0 /* p */
lload 2 /* q */
lload 5 /* div */
lmul
lsub
lstore 7 /* rem */
start local 7 // long rem
3: .line 390
lload 7 /* rem */
lconst_0
lcmp
ifne 5
4: .line 391
lload 5 /* div */
lreturn
5: .line 401
StackMap locals: long long
StackMap stack:
iconst_1
lload 0 /* p */
lload 2 /* q */
lxor
bipush 63
lshr
l2i
ior
istore 9 /* signum */
start local 9 // int signum
6: .line 403
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 4 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 12
2: 10
3: 14
4: 18
5: 22
6: 22
7: 22
8: 7
default: 37
}
7: .line 405
StackMap locals: int
StackMap stack:
lload 7 /* rem */
lconst_0
lcmp
ifne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
10: .line 408
StackMap locals:
StackMap stack:
iconst_0
istore 10 /* increment */
start local 10 // boolean increment
11: .line 409
goto 38
end local 10 // boolean increment
12: .line 411
StackMap locals:
StackMap stack:
iconst_1
istore 10 /* increment */
start local 10 // boolean increment
13: .line 412
goto 38
end local 10 // boolean increment
14: .line 414
StackMap locals:
StackMap stack:
iload 9 /* signum */
ifle 15
iconst_1
goto 16
StackMap locals:
StackMap stack:
15: iconst_0
StackMap locals:
StackMap stack: int
16: istore 10 /* increment */
start local 10 // boolean increment
17: .line 415
goto 38
end local 10 // boolean increment
18: .line 417
StackMap locals:
StackMap stack:
iload 9 /* signum */
ifge 19
iconst_1
goto 20
StackMap locals:
StackMap stack:
19: iconst_0
StackMap locals:
StackMap stack: int
20: istore 10 /* increment */
start local 10 // boolean increment
21: .line 418
goto 38
end local 10 // boolean increment
22: .line 422
StackMap locals:
StackMap stack:
lload 7 /* rem */
invokestatic java.lang.Math.abs:(J)J
lstore 11 /* absRem */
start local 11 // long absRem
23: .line 423
lload 11 /* absRem */
lload 2 /* q */
invokestatic java.lang.Math.abs:(J)J
lload 11 /* absRem */
lsub
lsub
lstore 13 /* cmpRemToHalfDivisor */
start local 13 // long cmpRemToHalfDivisor
24: .line 426
lload 13 /* cmpRemToHalfDivisor */
lconst_0
lcmp
ifne 33
25: .line 427
aload 4 /* mode */
getstatic java.math.RoundingMode.HALF_UP:Ljava/math/RoundingMode;
if_acmpne 26
iconst_1
goto 27
StackMap locals: long long java.math.RoundingMode long long int top long long
StackMap stack:
26: iconst_0
StackMap locals:
StackMap stack: int
27: aload 4 /* mode */
getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
if_acmpne 28
iconst_1
goto 29
StackMap locals:
StackMap stack: int
28: iconst_0
StackMap locals: long long java.math.RoundingMode long long int top long long
StackMap stack: int int
29: lload 5 /* div */
lconst_1
land
lconst_0
lcmp
ifeq 30
iconst_1
goto 31
StackMap locals: long long java.math.RoundingMode long long int top long long
StackMap stack: int int
30: iconst_0
StackMap locals: long long java.math.RoundingMode long long int top long long
StackMap stack: int int int
31: iand
ior
istore 10 /* increment */
start local 10 // boolean increment
32: .line 428
goto 38
end local 10 // boolean increment
33: .line 429
StackMap locals:
StackMap stack:
lload 13 /* cmpRemToHalfDivisor */
lconst_0
lcmp
ifle 34
iconst_1
goto 35
StackMap locals:
StackMap stack:
34: iconst_0
StackMap locals:
StackMap stack: int
35: istore 10 /* increment */
start local 10 // boolean increment
36: .line 431
goto 38
end local 13 // long cmpRemToHalfDivisor
end local 11 // long absRem
end local 10 // boolean increment
37: .line 433
StackMap locals: long long java.math.RoundingMode long long int
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
start local 10 // boolean increment
38: .line 435
StackMap locals: int
StackMap stack:
iload 10 /* increment */
ifeq 39
lload 5 /* div */
iload 9 /* signum */
i2l
ladd
goto 40
StackMap locals:
StackMap stack:
39: lload 5 /* div */
StackMap locals:
StackMap stack: long
40: lreturn
end local 10 // boolean increment
end local 9 // int signum
end local 7 // long rem
end local 5 // long div
end local 4 // java.math.RoundingMode mode
end local 2 // long q
end local 0 // long p
LocalVariableTable:
Start End Slot Name Signature
0 41 0 p J
0 41 2 q J
0 41 4 mode Ljava/math/RoundingMode;
2 41 5 div J
3 41 7 rem J
6 41 9 signum I
11 12 10 increment Z
13 14 10 increment Z
17 18 10 increment Z
21 22 10 increment Z
32 33 10 increment Z
36 37 10 increment Z
38 41 10 increment Z
23 37 11 absRem J
24 37 13 cmpRemToHalfDivisor J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
p
q
mode
public static int mod(long, int);
descriptor: (JI)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 // long x
start local 2 // int m
0: .line 459
lload 0 /* x */
iload 2 /* m */
i2l
invokestatic com.google.common.math.LongMath.mod:(JJ)J
l2i
ireturn
end local 2 // int m
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 1 0 x J
0 1 2 m I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
m
public static long mod(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=2
start local 0 // long x
start local 2 // long m
0: .line 482
lload 2 /* m */
lconst_0
lcmp
ifgt 2
1: .line 483
new java.lang.ArithmeticException
dup
ldc "Modulus must be positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 485
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 2 /* m */
lrem
lstore 4 /* result */
start local 4 // long result
3: .line 486
lload 4 /* result */
lconst_0
lcmp
iflt 4
lload 4 /* result */
goto 5
StackMap locals: long
StackMap stack:
4: lload 4 /* result */
lload 2 /* m */
ladd
StackMap locals:
StackMap stack: long
5: lreturn
end local 4 // long result
end local 2 // long m
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 6 0 x J
0 6 2 m J
3 6 4 result J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
m
public static long gcd(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=10, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 501
ldc "a"
lload 0 /* a */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
1: .line 502
ldc "b"
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
2: .line 503
lload 0 /* a */
lconst_0
lcmp
ifne 4
3: .line 506
lload 2 /* b */
lreturn
4: .line 507
StackMap locals:
StackMap stack:
lload 2 /* b */
lconst_0
lcmp
ifne 6
5: .line 508
lload 0 /* a */
lreturn
6: .line 514
StackMap locals:
StackMap stack:
lload 0 /* a */
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
istore 4 /* aTwos */
start local 4 // int aTwos
7: .line 515
lload 0 /* a */
iload 4 /* aTwos */
lshr
lstore 0 /* a */
8: .line 516
lload 2 /* b */
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
istore 5 /* bTwos */
start local 5 // int bTwos
9: .line 517
lload 2 /* b */
iload 5 /* bTwos */
lshr
lstore 2 /* b */
10: .line 518
goto 16
11: .line 526
StackMap locals: int int
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lsub
lstore 6 /* delta */
start local 6 // long delta
12: .line 528
lload 6 /* delta */
lload 6 /* delta */
bipush 63
lshr
land
lstore 8 /* minDeltaOrZero */
start local 8 // long minDeltaOrZero
13: .line 531
lload 6 /* delta */
lload 8 /* minDeltaOrZero */
lsub
lload 8 /* minDeltaOrZero */
lsub
lstore 0 /* a */
14: .line 534
lload 2 /* b */
lload 8 /* minDeltaOrZero */
ladd
lstore 2 /* b */
15: .line 535
lload 0 /* a */
lload 0 /* a */
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
lshr
lstore 0 /* a */
end local 8 // long minDeltaOrZero
end local 6 // long delta
16: .line 518
StackMap locals:
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lcmp
ifne 11
17: .line 537
lload 0 /* a */
iload 4 /* aTwos */
iload 5 /* bTwos */
invokestatic java.lang.Math.min:(II)I
lshl
lreturn
end local 5 // int bTwos
end local 4 // int aTwos
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 18 0 a J
0 18 2 b J
7 18 4 aTwos I
9 18 5 bTwos I
12 16 6 delta J
13 16 8 minDeltaOrZero J
MethodParameters:
Name Flags
a
b
public static long checkedAdd(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 547
lload 0 /* a */
lload 2 /* b */
ladd
lstore 4 /* result */
start local 4 // long result
1: .line 548
lload 0 /* a */
lload 2 /* b */
lxor
lconst_0
lcmp
ifge 2
iconst_1
goto 3
StackMap locals: long
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* a */
lload 4 /* result */
lxor
lconst_0
lcmp
iflt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long long long
StackMap stack: int int
5: ior
ldc "checkedAdd"
lload 0 /* a */
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
6: .line 549
lload 4 /* result */
lreturn
end local 4 // long result
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 7 0 a J
0 7 2 b J
1 7 4 result J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
a
b
public static long checkedSubtract(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 559
lload 0 /* a */
lload 2 /* b */
lsub
lstore 4 /* result */
start local 4 // long result
1: .line 560
lload 0 /* a */
lload 2 /* b */
lxor
lconst_0
lcmp
iflt 2
iconst_1
goto 3
StackMap locals: long
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* a */
lload 4 /* result */
lxor
lconst_0
lcmp
iflt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long long long
StackMap stack: int int
5: ior
ldc "checkedSubtract"
lload 0 /* a */
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
6: .line 561
lload 4 /* result */
lreturn
end local 4 // long result
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 7 0 a J
0 7 2 b J
1 7 4 result J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
a
b
public static long checkedMultiply(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=7, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 572
lload 0 /* a */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
1: .line 573
lload 0 /* a */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
2: .line 572
iadd
3: .line 574
lload 2 /* b */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
4: .line 572
iadd
5: .line 575
lload 2 /* b */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
6: .line 572
iadd
7: .line 571
istore 4 /* leadingZeros */
start local 4 // int leadingZeros
8: .line 586
iload 4 /* leadingZeros */
bipush 65
if_icmple 10
9: .line 587
lload 0 /* a */
lload 2 /* b */
lmul
lreturn
10: .line 589
StackMap locals: int
StackMap stack:
iload 4 /* leadingZeros */
bipush 64
if_icmplt 11
iconst_1
goto 12
StackMap locals:
StackMap stack:
11: iconst_0
StackMap locals:
StackMap stack: int
12: ldc "checkedMultiply"
lload 0 /* a */
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
13: .line 590
lload 0 /* a */
lconst_0
lcmp
iflt 14
iconst_1
goto 15
StackMap locals:
StackMap stack:
14: iconst_0
StackMap locals:
StackMap stack: int
15: lload 2 /* b */
ldc -9223372036854775808
lcmp
ifeq 16
iconst_1
goto 17
StackMap locals:
StackMap stack: int
16: iconst_0
StackMap locals: long long int
StackMap stack: int int
17: ior
ldc "checkedMultiply"
lload 0 /* a */
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
18: .line 591
lload 0 /* a */
lload 2 /* b */
lmul
lstore 5 /* result */
start local 5 // long result
19: .line 592
lload 0 /* a */
lconst_0
lcmp
ifeq 20
lload 5 /* result */
lload 0 /* a */
ldiv
lload 2 /* b */
lcmp
ifeq 20
iconst_0
goto 21
StackMap locals: long
StackMap stack:
20: iconst_1
StackMap locals:
StackMap stack: int
21: ldc "checkedMultiply"
lload 0 /* a */
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
22: .line 593
lload 5 /* result */
lreturn
end local 5 // long result
end local 4 // int leadingZeros
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 23 0 a J
0 23 2 b J
8 23 4 leadingZeros I
19 23 5 result J
MethodParameters:
Name Flags
a
b
public static long checkedPow(long, int);
descriptor: (JI)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=5, args_size=2
start local 0 // long b
start local 2 // int k
0: .line 604
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 605
lload 0 /* b */
ldc -2
lcmp
iflt 2
iconst_1
goto 3
StackMap locals:
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* b */
ldc 2
lcmp
ifgt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long int
StackMap stack: int int
5: iand
ifeq 25
6: .line 606
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 18
-1: 11
0: 7
1: 10
2: 14
default: 24
}
7: .line 608
StackMap locals:
StackMap stack:
iload 2 /* k */
ifne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: i2l
lreturn
10: .line 610
StackMap locals:
StackMap stack:
lconst_1
lreturn
11: .line 612
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifne 12
iconst_1
goto 13
StackMap locals:
StackMap stack:
12: iconst_m1
StackMap locals:
StackMap stack: int
13: i2l
lreturn
14: .line 614
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 63
if_icmpge 15
iconst_1
goto 16
StackMap locals:
StackMap stack:
15: iconst_0
StackMap locals:
StackMap stack: int
16: ldc "checkedPow"
lload 0 /* b */
iload 2 /* k */
i2l
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
17: .line 615
lconst_1
iload 2 /* k */
lshl
lreturn
18: .line 617
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmpge 19
iconst_1
goto 20
StackMap locals:
StackMap stack:
19: iconst_0
StackMap locals:
StackMap stack: int
20: ldc "checkedPow"
lload 0 /* b */
iload 2 /* k */
i2l
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
21: .line 618
iload 2 /* k */
iconst_1
iand
ifne 22
lconst_1
iload 2 /* k */
lshl
goto 23
StackMap locals:
StackMap stack:
22: ldc -1
iload 2 /* k */
lshl
StackMap locals:
StackMap stack: long
23: lreturn
24: .line 620
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
25: .line 623
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
26: .line 625
StackMap locals: long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 27
1: 28
default: 29
}
27: .line 627
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
28: .line 629
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.checkedMultiply:(JJ)J
lreturn
29: .line 631
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifeq 31
30: .line 632
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.checkedMultiply:(JJ)J
lstore 3 /* accum */
31: .line 634
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
ishr
istore 2 /* k */
32: .line 635
iload 2 /* k */
ifle 26
33: .line 637
ldc -3037000499
lload 0 /* b */
lcmp
ifgt 34
lload 0 /* b */
ldc 3037000499
lcmp
ifgt 34
iconst_1
goto 35
StackMap locals:
StackMap stack:
34: iconst_0
StackMap locals:
StackMap stack: int
35: ldc "checkedPow"
lload 0 /* b */
iload 2 /* k */
i2l
36: .line 636
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
37: .line 638
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
38: .line 624
goto 26
end local 3 // long accum
end local 2 // int k
end local 0 // long b
LocalVariableTable:
Start End Slot Name Signature
0 39 0 b J
0 39 2 k I
26 39 3 accum J
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
b
k
public static long saturatedAdd(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 652
lload 0 /* a */
lload 2 /* b */
ladd
lstore 4 /* naiveSum */
start local 4 // long naiveSum
1: .line 653
lload 0 /* a */
lload 2 /* b */
lxor
lconst_0
lcmp
ifge 2
iconst_1
goto 3
StackMap locals: long
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* a */
lload 4 /* naiveSum */
lxor
lconst_0
lcmp
iflt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long long long
StackMap stack: int int
5: ior
ifeq 7
6: .line 656
lload 4 /* naiveSum */
lreturn
7: .line 659
StackMap locals:
StackMap stack:
ldc 9223372036854775807
lload 4 /* naiveSum */
bipush 63
lushr
lconst_1
lxor
ladd
lreturn
end local 4 // long naiveSum
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 8 0 a J
0 8 2 b J
1 8 4 naiveSum J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
a
b
public static long saturatedSubtract(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 670
lload 0 /* a */
lload 2 /* b */
lsub
lstore 4 /* naiveDifference */
start local 4 // long naiveDifference
1: .line 671
lload 0 /* a */
lload 2 /* b */
lxor
lconst_0
lcmp
iflt 2
iconst_1
goto 3
StackMap locals: long
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* a */
lload 4 /* naiveDifference */
lxor
lconst_0
lcmp
iflt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long long long
StackMap stack: int int
5: ior
ifeq 7
6: .line 674
lload 4 /* naiveDifference */
lreturn
7: .line 677
StackMap locals:
StackMap stack:
ldc 9223372036854775807
lload 4 /* naiveDifference */
bipush 63
lushr
lconst_1
lxor
ladd
lreturn
end local 4 // long naiveDifference
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 8 0 a J
0 8 2 b J
1 8 4 naiveDifference J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
a
b
public static long saturatedMultiply(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=9, args_size=2
start local 0 // long a
start local 2 // long b
0: .line 690
lload 0 /* a */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
1: .line 691
lload 0 /* a */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
2: .line 690
iadd
3: .line 692
lload 2 /* b */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
4: .line 690
iadd
5: .line 693
lload 2 /* b */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
6: .line 690
iadd
7: .line 689
istore 4 /* leadingZeros */
start local 4 // int leadingZeros
8: .line 694
iload 4 /* leadingZeros */
bipush 65
if_icmple 10
9: .line 695
lload 0 /* a */
lload 2 /* b */
lmul
lreturn
10: .line 698
StackMap locals: int
StackMap stack:
ldc 9223372036854775807
lload 0 /* a */
lload 2 /* b */
lxor
bipush 63
lushr
ladd
lstore 5 /* limit */
start local 5 // long limit
11: .line 699
iload 4 /* leadingZeros */
bipush 64
if_icmpge 12
iconst_1
goto 13
StackMap locals: long
StackMap stack:
12: iconst_0
StackMap locals:
StackMap stack: int
13: lload 0 /* a */
lconst_0
lcmp
ifge 14
iconst_1
goto 15
StackMap locals:
StackMap stack: int
14: iconst_0
StackMap locals: long long int long
StackMap stack: int int
15: lload 2 /* b */
ldc -9223372036854775808
lcmp
ifne 16
iconst_1
goto 17
StackMap locals: long long int long
StackMap stack: int int
16: iconst_0
StackMap locals: long long int long
StackMap stack: int int int
17: iand
ior
ifeq 19
18: .line 701
lload 5 /* limit */
lreturn
19: .line 703
StackMap locals:
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lmul
lstore 7 /* result */
start local 7 // long result
20: .line 704
lload 0 /* a */
lconst_0
lcmp
ifeq 21
lload 7 /* result */
lload 0 /* a */
ldiv
lload 2 /* b */
lcmp
ifne 22
21: .line 705
StackMap locals: long
StackMap stack:
lload 7 /* result */
lreturn
22: .line 707
StackMap locals:
StackMap stack:
lload 5 /* limit */
lreturn
end local 7 // long result
end local 5 // long limit
end local 4 // int leadingZeros
end local 2 // long b
end local 0 // long a
LocalVariableTable:
Start End Slot Name Signature
0 23 0 a J
0 23 2 b J
8 23 4 leadingZeros I
11 23 5 limit J
20 23 7 result J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
a
b
public static long saturatedPow(long, int);
descriptor: (JI)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=7, args_size=2
start local 0 // long b
start local 2 // int k
0: .line 718
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 719
lload 0 /* b */
ldc -2
lcmp
iflt 2
iconst_1
goto 3
StackMap locals:
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: lload 0 /* b */
ldc 2
lcmp
ifgt 4
iconst_1
goto 5
StackMap locals:
StackMap stack: int
4: iconst_0
StackMap locals: long int
StackMap stack: int int
5: iand
ifeq 23
6: .line 720
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 17
-1: 11
0: 7
1: 10
2: 14
default: 22
}
7: .line 722
StackMap locals:
StackMap stack:
iload 2 /* k */
ifne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: i2l
lreturn
10: .line 724
StackMap locals:
StackMap stack:
lconst_1
lreturn
11: .line 726
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifne 12
iconst_1
goto 13
StackMap locals:
StackMap stack:
12: iconst_m1
StackMap locals:
StackMap stack: int
13: i2l
lreturn
14: .line 728
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 63
if_icmplt 16
15: .line 729
ldc 9223372036854775807
lreturn
16: .line 731
StackMap locals:
StackMap stack:
lconst_1
iload 2 /* k */
lshl
lreturn
17: .line 733
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmplt 19
18: .line 734
ldc 9223372036854775807
iload 2 /* k */
iconst_1
iand
i2l
ladd
lreturn
19: .line 736
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifne 20
lconst_1
iload 2 /* k */
lshl
goto 21
StackMap locals:
StackMap stack:
20: ldc -1
iload 2 /* k */
lshl
StackMap locals:
StackMap stack: long
21: lreturn
22: .line 738
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
23: .line 741
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
24: .line 743
ldc 9223372036854775807
lload 0 /* b */
bipush 63
lushr
iload 2 /* k */
iconst_1
iand
i2l
land
ladd
lstore 5 /* limit */
start local 5 // long limit
25: .line 745
StackMap locals: long long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 26
1: 27
default: 28
}
26: .line 747
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
27: .line 749
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.saturatedMultiply:(JJ)J
lreturn
28: .line 751
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifeq 30
29: .line 752
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.saturatedMultiply:(JJ)J
lstore 3 /* accum */
30: .line 754
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
ishr
istore 2 /* k */
31: .line 755
iload 2 /* k */
ifle 25
32: .line 756
ldc -3037000499
lload 0 /* b */
lcmp
ifle 33
iconst_1
goto 34
StackMap locals:
StackMap stack:
33: iconst_0
StackMap locals:
StackMap stack: int
34: lload 0 /* b */
ldc 3037000499
lcmp
ifle 35
iconst_1
goto 36
StackMap locals:
StackMap stack: int
35: iconst_0
StackMap locals: long int long long
StackMap stack: int int
36: ior
ifeq 38
37: .line 757
lload 5 /* limit */
lreturn
38: .line 759
StackMap locals:
StackMap stack:
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
39: .line 744
goto 25
end local 5 // long limit
end local 3 // long accum
end local 2 // int k
end local 0 // long b
LocalVariableTable:
Start End Slot Name Signature
0 40 0 b J
0 40 2 k I
24 40 3 accum J
25 40 5 limit J
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
b
k
public static long factorial(int);
descriptor: (I)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 // int n
0: .line 775
ldc "n"
iload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 776
iload 0 /* n */
getstatic com.google.common.math.LongMath.factorials:[J
arraylength
if_icmpge 2
getstatic com.google.common.math.LongMath.factorials:[J
iload 0 /* n */
laload
goto 3
StackMap locals:
StackMap stack:
2: ldc 9223372036854775807
StackMap locals:
StackMap stack: long
3: lreturn
end local 0 // int n
LocalVariableTable:
Start End Slot Name Signature
0 4 0 n I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
n
public static long binomial(int, int);
descriptor: (II)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=11, args_size=2
start local 0 // int n
start local 1 // int k
0: .line 810
ldc "n"
iload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 811
ldc "k"
iload 1 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
2: .line 812
iload 1 /* k */
iload 0 /* n */
if_icmpgt 3
iconst_1
goto 4
StackMap locals:
StackMap stack:
3: iconst_0
StackMap locals:
StackMap stack: int
4: ldc "k (%s) > n (%s)"
iload 1 /* k */
iload 0 /* n */
invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;II)V
5: .line 813
iload 1 /* k */
iload 0 /* n */
iconst_1
ishr
if_icmple 7
6: .line 814
iload 0 /* n */
iload 1 /* k */
isub
istore 1 /* k */
7: .line 816
StackMap locals:
StackMap stack:
iload 1 /* k */
tableswitch { // 0 - 1
0: 8
1: 9
default: 10
}
8: .line 818
StackMap locals:
StackMap stack:
lconst_1
lreturn
9: .line 820
StackMap locals:
StackMap stack:
iload 0 /* n */
i2l
lreturn
10: .line 822
StackMap locals:
StackMap stack:
iload 0 /* n */
getstatic com.google.common.math.LongMath.factorials:[J
arraylength
if_icmpge 12
11: .line 823
getstatic com.google.common.math.LongMath.factorials:[J
iload 0 /* n */
laload
getstatic com.google.common.math.LongMath.factorials:[J
iload 1 /* k */
laload
getstatic com.google.common.math.LongMath.factorials:[J
iload 0 /* n */
iload 1 /* k */
isub
laload
lmul
ldiv
lreturn
12: .line 824
StackMap locals:
StackMap stack:
iload 1 /* k */
getstatic com.google.common.math.LongMath.biggestBinomials:[I
arraylength
if_icmpge 13
iload 0 /* n */
getstatic com.google.common.math.LongMath.biggestBinomials:[I
iload 1 /* k */
iaload
if_icmple 14
13: .line 825
StackMap locals:
StackMap stack:
ldc 9223372036854775807
lreturn
14: .line 826
StackMap locals:
StackMap stack:
iload 1 /* k */
getstatic com.google.common.math.LongMath.biggestSimpleBinomials:[I
arraylength
if_icmpge 23
iload 0 /* n */
getstatic com.google.common.math.LongMath.biggestSimpleBinomials:[I
iload 1 /* k */
iaload
if_icmpgt 23
15: .line 828
iload 0 /* n */
iinc 0 /* n */ -1
i2l
lstore 2 /* result */
start local 2 // long result
16: .line 829
iconst_2
istore 4 /* i */
start local 4 // int i
17: goto 21
18: .line 830
StackMap locals: long int
StackMap stack:
lload 2 /* result */
iload 0 /* n */
i2l
lmul
lstore 2 /* result */
19: .line 831
lload 2 /* result */
iload 4 /* i */
i2l
ldiv
lstore 2 /* result */
20: .line 829
iinc 0 /* n */ -1
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
21: iload 4 /* i */
iload 1 /* k */
if_icmple 18
end local 4 // int i
22: .line 833
lload 2 /* result */
lreturn
end local 2 // long result
23: .line 835
StackMap locals:
StackMap stack:
iload 0 /* n */
i2l
getstatic java.math.RoundingMode.CEILING:Ljava/math/RoundingMode;
invokestatic com.google.common.math.LongMath.log2:(JLjava/math/RoundingMode;)I
istore 2 /* nBits */
start local 2 // int nBits
24: .line 837
lconst_1
lstore 3 /* result */
start local 3 // long result
25: .line 838
iload 0 /* n */
iinc 0 /* n */ -1
i2l
lstore 5 /* numerator */
start local 5 // long numerator
26: .line 839
lconst_1
lstore 7 /* denominator */
start local 7 // long denominator
27: .line 841
iload 2 /* nBits */
istore 9 /* numeratorBits */
start local 9 // int numeratorBits
28: .line 849
iconst_2
istore 10 /* i */
start local 10 // int i
29: goto 40
30: .line 850
StackMap locals: int int int long long long int int
StackMap stack:
iload 9 /* numeratorBits */
iload 2 /* nBits */
iadd
bipush 63
if_icmpge 35
31: .line 852
lload 5 /* numerator */
iload 0 /* n */
i2l
lmul
lstore 5 /* numerator */
32: .line 853
lload 7 /* denominator */
iload 10 /* i */
i2l
lmul
lstore 7 /* denominator */
33: .line 854
iload 9 /* numeratorBits */
iload 2 /* nBits */
iadd
istore 9 /* numeratorBits */
34: .line 855
goto 39
35: .line 858
StackMap locals:
StackMap stack:
lload 3 /* result */
lload 5 /* numerator */
lload 7 /* denominator */
invokestatic com.google.common.math.LongMath.multiplyFraction:(JJJ)J
lstore 3 /* result */
36: .line 859
iload 0 /* n */
i2l
lstore 5 /* numerator */
37: .line 860
iload 10 /* i */
i2l
lstore 7 /* denominator */
38: .line 861
iload 2 /* nBits */
istore 9 /* numeratorBits */
39: .line 849
StackMap locals:
StackMap stack:
iinc 10 /* i */ 1
iinc 0 /* n */ -1
StackMap locals:
StackMap stack:
40: iload 10 /* i */
iload 1 /* k */
if_icmple 30
end local 10 // int i
41: .line 864
lload 3 /* result */
lload 5 /* numerator */
lload 7 /* denominator */
invokestatic com.google.common.math.LongMath.multiplyFraction:(JJJ)J
lreturn
end local 9 // int numeratorBits
end local 7 // long denominator
end local 5 // long numerator
end local 3 // long result
end local 2 // int nBits
end local 1 // int k
end local 0 // int n
LocalVariableTable:
Start End Slot Name Signature
0 42 0 n I
0 42 1 k I
16 23 2 result J
17 22 4 i I
24 42 2 nBits I
25 42 3 result J
26 42 5 numerator J
27 42 7 denominator J
28 42 9 numeratorBits I
29 41 10 i I
MethodParameters:
Name Flags
n
k
static long multiplyFraction(long, long, long);
descriptor: (JJJ)J
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=8, args_size=3
start local 0 // long x
start local 2 // long numerator
start local 4 // long denominator
0: .line 871
lload 0 /* x */
lconst_1
lcmp
ifne 2
1: .line 872
lload 2 /* numerator */
lload 4 /* denominator */
ldiv
lreturn
2: .line 874
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 4 /* denominator */
invokestatic com.google.common.math.LongMath.gcd:(JJ)J
lstore 6 /* commonDivisor */
start local 6 // long commonDivisor
3: .line 875
lload 0 /* x */
lload 6 /* commonDivisor */
ldiv
lstore 0 /* x */
4: .line 876
lload 4 /* denominator */
lload 6 /* commonDivisor */
ldiv
lstore 4 /* denominator */
5: .line 879
lload 0 /* x */
lload 2 /* numerator */
lload 4 /* denominator */
ldiv
lmul
lreturn
end local 6 // long commonDivisor
end local 4 // long denominator
end local 2 // long numerator
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 6 0 x J
0 6 2 numerator J
0 6 4 denominator J
3 6 6 commonDivisor J
MethodParameters:
Name Flags
x
numerator
denominator
static boolean fitsInInt(long);
descriptor: (J)Z
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 // long x
0: .line 964
lload 0 /* x */
l2i
i2l
lload 0 /* x */
lcmp
ifne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x J
MethodParameters:
Name Flags
x
public static long mean(long, long);
descriptor: (JJ)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=4, args_size=2
start local 0 // long x
start local 2 // long y
0: .line 977
lload 0 /* x */
lload 2 /* y */
land
lload 0 /* x */
lload 2 /* y */
lxor
iconst_1
lshr
ladd
lreturn
end local 2 // long y
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 1 0 x J
0 1 2 y J
MethodParameters:
Name Flags
x
y
public static boolean isPrime(long);
descriptor: (J)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=7, args_size=1
start local 0 // long n
0: .line 1004
lload 0 /* n */
ldc 2
lcmp
ifge 3
1: .line 1005
ldc "n"
lload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
2: .line 1006
iconst_0
ireturn
3: .line 1008
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 66
lcmp
ifge 8
4: .line 1011
ldc 722865708377213483
5: .line 1010
lstore 2 /* mask */
start local 2 // long mask
6: .line 1030
lload 2 /* mask */
lload 0 /* n */
l2i
iconst_2
isub
lshr
lconst_1
land
lconst_0
lcmp
ifeq 7
iconst_1
ireturn
StackMap locals: long
StackMap stack:
7: iconst_0
ireturn
end local 2 // long mask
8: .line 1033
StackMap locals:
StackMap stack:
ldc -545925251
iconst_1
lload 0 /* n */
ldc 30
lrem
l2i
ishl
iand
ifeq 10
9: .line 1034
iconst_0
ireturn
10: .line 1036
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 7
lrem
lconst_0
lcmp
ifeq 11
lload 0 /* n */
ldc 11
lrem
lconst_0
lcmp
ifeq 11
lload 0 /* n */
ldc 13
lrem
lconst_0
lcmp
ifne 12
11: .line 1037
StackMap locals:
StackMap stack:
iconst_0
ireturn
12: .line 1039
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 289
lcmp
ifge 14
13: .line 1040
iconst_1
ireturn
14: .line 1043
StackMap locals:
StackMap stack:
getstatic com.google.common.math.LongMath.millerRabinBaseSets:[[J
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 25
StackMap locals: long top int int long[][]
StackMap stack:
15: aload 5
iload 3
aaload
astore 2 /* baseSet */
start local 2 // long[] baseSet
16: .line 1044
lload 0 /* n */
aload 2 /* baseSet */
iconst_0
laload
lcmp
ifgt 24
17: .line 1045
iconst_1
istore 6 /* i */
start local 6 // int i
18: goto 22
19: .line 1046
StackMap locals: long long[] int int long[][] int
StackMap stack:
aload 2 /* baseSet */
iload 6 /* i */
laload
lload 0 /* n */
invokestatic com.google.common.math.LongMath$MillerRabinTester.test:(JJ)Z
ifne 21
20: .line 1047
iconst_0
ireturn
21: .line 1045
StackMap locals:
StackMap stack:
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
22: iload 6 /* i */
aload 2 /* baseSet */
arraylength
if_icmplt 19
end local 6 // int i
23: .line 1050
iconst_1
ireturn
end local 2 // long[] baseSet
24: .line 1043
StackMap locals: long top int int long[][]
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
25: iload 3
iload 4
if_icmplt 15
26: .line 1053
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 0 // long n
LocalVariableTable:
Start End Slot Name Signature
0 27 0 n J
6 8 2 mask J
16 24 2 baseSet [J
18 23 6 i I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
n
public static double roundToDouble(long, java.math.RoundingMode);
descriptor: (JLjava/math/RoundingMode;)D
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=21, args_size=2
start local 0 // long x
start local 2 // java.math.RoundingMode mode
0: .line 1248
lload 0 /* x */
l2d
dstore 3 /* roundArbitrarily */
start local 3 // double roundArbitrarily
1: .line 1249
dload 3 /* roundArbitrarily */
d2l
lstore 5 /* roundArbitrarilyAsLong */
start local 5 // long roundArbitrarilyAsLong
2: .line 1252
lload 5 /* roundArbitrarilyAsLong */
ldc 9223372036854775807
lcmp
ifne 5
3: .line 1263
iconst_m1
istore 7 /* cmpXToRoundArbitrarily */
start local 7 // int cmpXToRoundArbitrarily
4: .line 1264
goto 6
end local 7 // int cmpXToRoundArbitrarily
5: .line 1265
StackMap locals: double long
StackMap stack:
lload 0 /* x */
lload 5 /* roundArbitrarilyAsLong */
invokestatic com.google.common.primitives.Longs.compare:(JJ)I
istore 7 /* cmpXToRoundArbitrarily */
start local 7 // int cmpXToRoundArbitrarily
6: .line 1268
StackMap locals: int
StackMap stack:
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 2 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 26
2: 18
3: 15
4: 11
5: 34
6: 34
7: 34
8: 7
default: 65
}
7: .line 1270
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
ifne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: invokestatic com.google.common.math.MathPreconditions.checkRoundingUnnecessary:(Z)V
10: .line 1271
dload 3 /* roundArbitrarily */
dreturn
11: .line 1273
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
iflt 13
12: .line 1274
dload 3 /* roundArbitrarily */
goto 14
13: .line 1275
StackMap locals:
StackMap stack:
dload 3 /* roundArbitrarily */
invokestatic com.google.common.math.DoubleUtils.nextDown:(D)D
14: .line 1273
StackMap locals:
StackMap stack: double
dreturn
15: .line 1277
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
ifgt 16
dload 3 /* roundArbitrarily */
goto 17
StackMap locals:
StackMap stack:
16: dload 3 /* roundArbitrarily */
invokestatic java.lang.Math.nextUp:(D)D
StackMap locals:
StackMap stack: double
17: dreturn
18: .line 1279
StackMap locals:
StackMap stack:
lload 0 /* x */
lconst_0
lcmp
iflt 23
19: .line 1280
iload 7 /* cmpXToRoundArbitrarily */
iflt 21
20: .line 1281
dload 3 /* roundArbitrarily */
goto 22
21: .line 1282
StackMap locals:
StackMap stack:
dload 3 /* roundArbitrarily */
invokestatic com.google.common.math.DoubleUtils.nextDown:(D)D
22: .line 1280
StackMap locals:
StackMap stack: double
dreturn
23: .line 1284
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
ifgt 24
dload 3 /* roundArbitrarily */
goto 25
StackMap locals:
StackMap stack:
24: dload 3 /* roundArbitrarily */
invokestatic java.lang.Math.nextUp:(D)D
StackMap locals:
StackMap stack: double
25: dreturn
26: .line 1287
StackMap locals:
StackMap stack:
lload 0 /* x */
lconst_0
lcmp
iflt 30
27: .line 1288
iload 7 /* cmpXToRoundArbitrarily */
ifgt 28
dload 3 /* roundArbitrarily */
goto 29
StackMap locals:
StackMap stack:
28: dload 3 /* roundArbitrarily */
invokestatic java.lang.Math.nextUp:(D)D
StackMap locals:
StackMap stack: double
29: dreturn
30: .line 1290
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
iflt 32
31: .line 1291
dload 3 /* roundArbitrarily */
goto 33
32: .line 1292
StackMap locals:
StackMap stack:
dload 3 /* roundArbitrarily */
invokestatic com.google.common.math.DoubleUtils.nextDown:(D)D
33: .line 1290
StackMap locals:
StackMap stack: double
dreturn
34: .line 1303
StackMap locals:
StackMap stack:
iload 7 /* cmpXToRoundArbitrarily */
iflt 40
35: .line 1304
dload 3 /* roundArbitrarily */
dstore 10 /* roundFloorAsDouble */
start local 10 // double roundFloorAsDouble
36: .line 1305
lload 5 /* roundArbitrarilyAsLong */
lstore 8 /* roundFloor */
start local 8 // long roundFloor
37: .line 1306
dload 3 /* roundArbitrarily */
invokestatic java.lang.Math.nextUp:(D)D
dstore 14 /* roundCeilingAsDouble */
start local 14 // double roundCeilingAsDouble
38: .line 1307
dload 14 /* roundCeilingAsDouble */
invokestatic java.lang.Math.ceil:(D)D
d2l
lstore 12 /* roundCeiling */
start local 12 // long roundCeiling
39: .line 1308
goto 44
end local 14 // double roundCeilingAsDouble
end local 12 // long roundCeiling
end local 10 // double roundFloorAsDouble
end local 8 // long roundFloor
40: .line 1309
StackMap locals:
StackMap stack:
dload 3 /* roundArbitrarily */
dstore 14 /* roundCeilingAsDouble */
start local 14 // double roundCeilingAsDouble
41: .line 1310
lload 5 /* roundArbitrarilyAsLong */
lstore 12 /* roundCeiling */
start local 12 // long roundCeiling
42: .line 1311
dload 3 /* roundArbitrarily */
invokestatic com.google.common.math.DoubleUtils.nextDown:(D)D
dstore 10 /* roundFloorAsDouble */
start local 10 // double roundFloorAsDouble
43: .line 1312
dload 10 /* roundFloorAsDouble */
invokestatic java.lang.Math.floor:(D)D
d2l
lstore 8 /* roundFloor */
start local 8 // long roundFloor
44: .line 1315
StackMap locals: long java.math.RoundingMode double long int long double long double
StackMap stack:
lload 0 /* x */
lload 8 /* roundFloor */
lsub
lstore 16 /* deltaToFloor */
start local 16 // long deltaToFloor
45: .line 1316
lload 12 /* roundCeiling */
lload 0 /* x */
lsub
lstore 18 /* deltaToCeiling */
start local 18 // long deltaToCeiling
46: .line 1318
lload 12 /* roundCeiling */
ldc 9223372036854775807
lcmp
ifne 48
47: .line 1321
lload 18 /* deltaToCeiling */
lconst_1
ladd
lstore 18 /* deltaToCeiling */
48: .line 1324
StackMap locals: long long
StackMap stack:
lload 16 /* deltaToFloor */
lload 18 /* deltaToCeiling */
invokestatic com.google.common.primitives.Longs.compare:(JJ)I
istore 20 /* diff */
start local 20 // int diff
49: .line 1325
iload 20 /* diff */
ifge 51
50: .line 1326
dload 10 /* roundFloorAsDouble */
dreturn
51: .line 1327
StackMap locals: int
StackMap stack:
iload 20 /* diff */
ifle 53
52: .line 1328
dload 14 /* roundCeilingAsDouble */
dreturn
53: .line 1331
StackMap locals:
StackMap stack:
invokestatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 2 /* mode */
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 5 - 7
5: 61
6: 58
7: 54
default: 64
}
54: .line 1333
StackMap locals:
StackMap stack:
dload 10 /* roundFloorAsDouble */
invokestatic com.google.common.math.DoubleUtils.getSignificand:(D)J
lconst_1
land
lconst_0
lcmp
ifne 56
55: .line 1334
dload 10 /* roundFloorAsDouble */
goto 57
56: .line 1335
StackMap locals:
StackMap stack:
dload 14 /* roundCeilingAsDouble */
57: .line 1333
StackMap locals:
StackMap stack: double
dreturn
58: .line 1337
StackMap locals:
StackMap stack:
lload 0 /* x */
lconst_0
lcmp
iflt 59
dload 10 /* roundFloorAsDouble */
goto 60
StackMap locals:
StackMap stack:
59: dload 14 /* roundCeilingAsDouble */
StackMap locals:
StackMap stack: double
60: dreturn
61: .line 1339
StackMap locals:
StackMap stack:
lload 0 /* x */
lconst_0
lcmp
iflt 62
dload 14 /* roundCeilingAsDouble */
goto 63
StackMap locals:
StackMap stack:
62: dload 10 /* roundFloorAsDouble */
StackMap locals:
StackMap stack: double
63: dreturn
64: .line 1341
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
ldc "impossible"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 20 // int diff
end local 18 // long deltaToCeiling
end local 16 // long deltaToFloor
end local 14 // double roundCeilingAsDouble
end local 12 // long roundCeiling
end local 10 // double roundFloorAsDouble
end local 8 // long roundFloor
65: .line 1345
StackMap locals: long java.math.RoundingMode double long int
StackMap stack:
new java.lang.AssertionError
dup
ldc "impossible"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 7 // int cmpXToRoundArbitrarily
end local 5 // long roundArbitrarilyAsLong
end local 3 // double roundArbitrarily
end local 2 // java.math.RoundingMode mode
end local 0 // long x
LocalVariableTable:
Start End Slot Name Signature
0 66 0 x J
0 66 2 mode Ljava/math/RoundingMode;
1 66 3 roundArbitrarily D
2 66 5 roundArbitrarilyAsLong J
4 5 7 cmpXToRoundArbitrarily I
6 66 7 cmpXToRoundArbitrarily I
37 40 8 roundFloor J
44 65 8 roundFloor J
36 40 10 roundFloorAsDouble D
43 65 10 roundFloorAsDouble D
39 40 12 roundCeiling J
42 65 12 roundCeiling J
38 40 14 roundCeilingAsDouble D
41 65 14 roundCeilingAsDouble D
45 65 16 deltaToFloor J
46 65 18 deltaToCeiling J
49 65 20 diff I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
MethodParameters:
Name Flags
x
mode
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // com.google.common.math.LongMath this
0: .line 1348
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // com.google.common.math.LongMath this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/math/LongMath;
static int[] $SWITCH_TABLE$java$math$RoundingMode();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: .line 52
getstatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic java.math.RoundingMode.values:()[Ljava/math/RoundingMode;
arraylength
newarray 10
astore 0
2: aload 0
getstatic java.math.RoundingMode.CEILING:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_3
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_2
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic java.math.RoundingMode.FLOOR:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_4
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic java.math.RoundingMode.HALF_DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 6
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 7
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic java.math.RoundingMode.HALF_UP:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_5
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 8
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic java.math.RoundingMode.UP:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_1
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
dup
putstatic com.google.common.math.LongMath.$SWITCH_TABLE$java$math$RoundingMode:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
23 24 25 Class java.lang.NoSuchFieldError
}
SourceFile: "LongMath.java"
NestMembers:
com.google.common.math.LongMath$MillerRabinTester com.google.common.math.LongMath$MillerRabinTester$1 com.google.common.math.LongMath$MillerRabinTester$2
InnerClasses:
private abstract MillerRabinTester = com.google.common.math.LongMath$MillerRabinTester of com.google.common.math.LongMath
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtCompatible(emulated = true)