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 205
bipush 64
newarray 8
dup
iconst_0
1: .line 206
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 207
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 208
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 205
putstatic com.google.common.math.LongMath.maxLog10ForLeadingZeros:[B
5: .line 213
bipush 19
newarray 11
dup
iconst_0
6: .line 214
lconst_1
lastore
dup
iconst_1
7: .line 215
ldc 10
lastore
dup
iconst_2
8: .line 216
ldc 100
lastore
dup
iconst_3
9: .line 217
ldc 1000
lastore
dup
iconst_4
10: .line 218
ldc 10000
lastore
dup
iconst_5
11: .line 219
ldc 100000
lastore
dup
bipush 6
12: .line 220
ldc 1000000
lastore
dup
bipush 7
13: .line 221
ldc 10000000
lastore
dup
bipush 8
14: .line 222
ldc 100000000
lastore
dup
bipush 9
15: .line 223
ldc 1000000000
lastore
dup
bipush 10
16: .line 224
ldc 10000000000
lastore
dup
bipush 11
17: .line 225
ldc 100000000000
lastore
dup
bipush 12
18: .line 226
ldc 1000000000000
lastore
dup
bipush 13
19: .line 227
ldc 10000000000000
lastore
dup
bipush 14
20: .line 228
ldc 100000000000000
lastore
dup
bipush 15
21: .line 229
ldc 1000000000000000
lastore
dup
bipush 16
22: .line 230
ldc 10000000000000000
lastore
dup
bipush 17
23: .line 231
ldc 100000000000000000
lastore
dup
bipush 18
24: .line 232
ldc 1000000000000000000
lastore
25: .line 213
putstatic com.google.common.math.LongMath.powersOf10:[J
26: .line 238
bipush 19
newarray 11
dup
iconst_0
27: .line 239
ldc 3
lastore
dup
iconst_1
28: .line 240
ldc 31
lastore
dup
iconst_2
29: .line 241
ldc 316
lastore
dup
iconst_3
30: .line 242
ldc 3162
lastore
dup
iconst_4
31: .line 243
ldc 31622
lastore
dup
iconst_5
32: .line 244
ldc 316227
lastore
dup
bipush 6
33: .line 245
ldc 3162277
lastore
dup
bipush 7
34: .line 246
ldc 31622776
lastore
dup
bipush 8
35: .line 247
ldc 316227766
lastore
dup
bipush 9
36: .line 248
ldc 3162277660
lastore
dup
bipush 10
37: .line 249
ldc 31622776601
lastore
dup
bipush 11
38: .line 250
ldc 316227766016
lastore
dup
bipush 12
39: .line 251
ldc 3162277660168
lastore
dup
bipush 13
40: .line 252
ldc 31622776601683
lastore
dup
bipush 14
41: .line 253
ldc 316227766016837
lastore
dup
bipush 15
42: .line 254
ldc 3162277660168379
lastore
dup
bipush 16
43: .line 255
ldc 31622776601683793
lastore
dup
bipush 17
44: .line 256
ldc 316227766016837933
lastore
dup
bipush 18
45: .line 257
ldc 3162277660168379331
lastore
46: .line 238
putstatic com.google.common.math.LongMath.halfPowersOf10:[J
47: .line 778
bipush 21
newarray 11
dup
iconst_0
48: .line 779
lconst_1
lastore
dup
iconst_1
49: .line 780
lconst_1
lastore
dup
iconst_2
50: .line 781
ldc 2
lastore
dup
iconst_3
51: .line 782
ldc 6
lastore
dup
iconst_4
52: .line 783
ldc 24
lastore
dup
iconst_5
53: .line 784
ldc 120
lastore
dup
bipush 6
54: .line 785
ldc 720
lastore
dup
bipush 7
55: .line 786
ldc 5040
lastore
dup
bipush 8
56: .line 787
ldc 40320
lastore
dup
bipush 9
57: .line 788
ldc 362880
lastore
dup
bipush 10
58: .line 789
ldc 3628800
lastore
dup
bipush 11
59: .line 790
ldc 39916800
lastore
dup
bipush 12
60: .line 791
ldc 479001600
lastore
dup
bipush 13
61: .line 792
ldc 6227020800
lastore
dup
bipush 14
62: .line 793
ldc 87178291200
lastore
dup
bipush 15
63: .line 794
ldc 1307674368000
lastore
dup
bipush 16
64: .line 795
ldc 20922789888000
lastore
dup
bipush 17
65: .line 796
ldc 355687428096000
lastore
dup
bipush 18
66: .line 797
ldc 6402373705728000
lastore
dup
bipush 19
67: .line 798
ldc 121645100408832000
lastore
dup
bipush 20
68: .line 799
ldc 2432902008176640000
lastore
69: .line 778
putstatic com.google.common.math.LongMath.factorials:[J
70: .line 884
bipush 34
newarray 10
dup
iconst_0
71: .line 885
ldc 2147483647
iastore
dup
iconst_1
72: .line 886
ldc 2147483647
iastore
dup
iconst_2
73: .line 887
ldc 2147483647
iastore
dup
iconst_3
74: .line 888
ldc 3810779
iastore
dup
iconst_4
75: .line 889
ldc 121977
iastore
dup
iconst_5
76: .line 890
sipush 16175
iastore
dup
bipush 6
77: .line 891
sipush 4337
iastore
dup
bipush 7
78: .line 892
sipush 1733
iastore
dup
bipush 8
79: .line 893
sipush 887
iastore
dup
bipush 9
80: .line 894
sipush 534
iastore
dup
bipush 10
81: .line 895
sipush 361
iastore
dup
bipush 11
82: .line 896
sipush 265
iastore
dup
bipush 12
83: .line 897
sipush 206
iastore
dup
bipush 13
84: .line 898
sipush 169
iastore
dup
bipush 14
85: .line 899
sipush 143
iastore
dup
bipush 15
86: .line 900
bipush 125
iastore
dup
bipush 16
87: .line 901
bipush 111
iastore
dup
bipush 17
88: .line 902
bipush 101
iastore
dup
bipush 18
89: .line 903
bipush 94
iastore
dup
bipush 19
90: .line 904
bipush 88
iastore
dup
bipush 20
91: .line 905
bipush 83
iastore
dup
bipush 21
92: .line 906
bipush 79
iastore
dup
bipush 22
93: .line 907
bipush 76
iastore
dup
bipush 23
94: .line 908
bipush 74
iastore
dup
bipush 24
95: .line 909
bipush 72
iastore
dup
bipush 25
96: .line 910
bipush 70
iastore
dup
bipush 26
97: .line 911
bipush 69
iastore
dup
bipush 27
98: .line 912
bipush 68
iastore
dup
bipush 28
99: .line 913
bipush 67
iastore
dup
bipush 29
100: .line 914
bipush 67
iastore
dup
bipush 30
101: .line 915
bipush 66
iastore
dup
bipush 31
102: .line 916
bipush 66
iastore
dup
bipush 32
103: .line 917
bipush 66
iastore
dup
bipush 33
104: .line 918
bipush 66
iastore
105: .line 884
putstatic com.google.common.math.LongMath.biggestBinomials:[I
106: .line 926
bipush 31
newarray 10
dup
iconst_0
107: .line 927
ldc 2147483647
iastore
dup
iconst_1
108: .line 928
ldc 2147483647
iastore
dup
iconst_2
109: .line 929
ldc 2147483647
iastore
dup
iconst_3
110: .line 930
ldc 2642246
iastore
dup
iconst_4
111: .line 931
ldc 86251
iastore
dup
iconst_5
112: .line 932
sipush 11724
iastore
dup
bipush 6
113: .line 933
sipush 3218
iastore
dup
bipush 7
114: .line 934
sipush 1313
iastore
dup
bipush 8
115: .line 935
sipush 684
iastore
dup
bipush 9
116: .line 936
sipush 419
iastore
dup
bipush 10
117: .line 937
sipush 287
iastore
dup
bipush 11
118: .line 938
sipush 214
iastore
dup
bipush 12
119: .line 939
sipush 169
iastore
dup
bipush 13
120: .line 940
sipush 139
iastore
dup
bipush 14
121: .line 941
bipush 119
iastore
dup
bipush 15
122: .line 942
bipush 105
iastore
dup
bipush 16
123: .line 943
bipush 95
iastore
dup
bipush 17
124: .line 944
bipush 87
iastore
dup
bipush 18
125: .line 945
bipush 81
iastore
dup
bipush 19
126: .line 946
bipush 76
iastore
dup
bipush 20
127: .line 947
bipush 73
iastore
dup
bipush 21
128: .line 948
bipush 70
iastore
dup
bipush 22
129: .line 949
bipush 68
iastore
dup
bipush 23
130: .line 950
bipush 66
iastore
dup
bipush 24
131: .line 951
bipush 64
iastore
dup
bipush 25
132: .line 952
bipush 63
iastore
dup
bipush 26
133: .line 953
bipush 62
iastore
dup
bipush 27
134: .line 954
bipush 62
iastore
dup
bipush 28
135: .line 955
bipush 61
iastore
dup
bipush 29
136: .line 956
bipush 61
iastore
dup
bipush 30
137: .line 957
bipush 61
iastore
138: .line 926
putstatic com.google.common.math.LongMath.biggestSimpleBinomials:[I
139: .line 1041
bipush 7
anewarray long[]
dup
iconst_0
140: .line 1042
iconst_2
newarray 11
dup
iconst_0
ldc 291830
lastore
dup
iconst_1
ldc 126401071349994536
lastore
aastore
dup
iconst_1
141: .line 1043
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 1044
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 1045
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 1046
bipush 6
newarray 11
dup
iconst_0
145: .line 1047
ldc 7999252175582850
lastore
dup
iconst_1
146: .line 1048
ldc 2
lastore
dup
iconst_2
147: .line 1049
ldc 4130806001517
lastore
dup
iconst_3
148: .line 1050
ldc 149795463772692060
lastore
dup
iconst_4
149: .line 1051
ldc 186635894390467037
lastore
dup
iconst_5
150: .line 1052
ldc 3967304179347715805
lastore
aastore
dup
iconst_5
151: .line 1054
bipush 7
newarray 11
dup
iconst_0
152: .line 1055
ldc 585226005592931976
lastore
dup
iconst_1
153: .line 1056
ldc 2
lastore
dup
iconst_2
154: .line 1057
ldc 123635709730000
lastore
dup
iconst_3
155: .line 1058
ldc 9233062284813009
lastore
dup
iconst_4
156: .line 1059
ldc 43835965440333360
lastore
dup
iconst_5
157: .line 1060
ldc 761179012939631437
lastore
dup
bipush 6
158: .line 1061
ldc 1263739024124850375
lastore
aastore
dup
bipush 6
159: .line 1063
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 1041
putstatic com.google.common.math.LongMath.millerRabinBaseSets:[[J
161: .line 1064
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 67
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 68
lload 0 /* x */
ldc 4611686018427387904
lcmp
ifle 3
2: .line 69
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 71
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 83
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 87
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 97
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 108
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 121
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 122
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 124
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 128
StackMap locals:
StackMap stack:
bipush 63
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
ireturn
4: .line 132
StackMap locals:
StackMap stack:
bipush 64
lload 0 /* x */
lconst_1
lsub
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
ireturn
5: .line 138
StackMap locals:
StackMap stack:
lload 0 /* x */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
istore 3 /* leadingZeros */
start local 3 // int leadingZeros
6: .line 139
ldc -5402926248376769404
iload 3 /* leadingZeros */
lushr
lstore 4 /* cmp */
start local 4 // long cmp
7: .line 141
bipush 63
iload 3 /* leadingZeros */
isub
istore 6 /* logFloor */
start local 6 // int logFloor
8: .line 142
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 145
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 163
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkPositive:(Ljava/lang/String;J)J
pop2
1: .line 164
lload 0 /* x */
invokestatic com.google.common.math.LongMath.log10Floor:(J)I
istore 3 /* logFloor */
start local 3 // int logFloor
2: .line 165
getstatic com.google.common.math.LongMath.powersOf10:[J
iload 3 /* logFloor */
laload
lstore 4 /* floorPow */
start local 4 // long floorPow
3: .line 166
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 168
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 172
StackMap locals:
StackMap stack:
iload 3 /* logFloor */
ireturn
8: .line 175
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 180
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 182
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 195
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 200
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 269
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 270
ldc -2
lload 0 /* b */
lcmp
ifgt 19
lload 0 /* b */
ldc 2
lcmp
ifgt 19
2: .line 271
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 13
-1: 7
0: 3
1: 6
2: 10
default: 18
}
3: .line 273
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 275
StackMap locals:
StackMap stack:
lconst_1
lreturn
7: .line 277
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 279
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 281
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmpge 17
14: .line 282
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 284
StackMap locals:
StackMap stack:
lconst_0
lreturn
18: .line 287
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
19: .line 290
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
20: .line 291
StackMap locals: long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 21
1: 22
default: 23
}
21: .line 293
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
22: .line 295
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
lmul
lreturn
23: .line 297
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 298
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
27: .line 290
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 313
ldc "x"
lload 0 /* x */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
1: .line 314
lload 0 /* x */
invokestatic com.google.common.math.LongMath.fitsInInt:(J)Z
ifeq 3
2: .line 315
lload 0 /* x */
l2i
aload 2 /* mode */
invokestatic com.google.common.math.IntMath.sqrt:(ILjava/math/RoundingMode;)I
i2l
lreturn
3: .line 332
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 334
lload 3 /* guess */
lload 3 /* guess */
lmul
lstore 5 /* guessSquared */
start local 5 // long guessSquared
5: .line 337
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 339
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 340
lload 3 /* guess */
lreturn
10: .line 343
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 5 /* guessSquared */
lcmp
ifge 12
11: .line 344
lload 3 /* guess */
lconst_1
lsub
lreturn
12: .line 346
StackMap locals:
StackMap stack:
lload 3 /* guess */
lreturn
13: .line 349
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 5 /* guessSquared */
lcmp
ifle 15
14: .line 350
lload 3 /* guess */
lconst_1
ladd
lreturn
15: .line 352
StackMap locals:
StackMap stack:
lload 3 /* guess */
lreturn
16: .line 356
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 357
lload 7 /* sqrtFloor */
lload 7 /* sqrtFloor */
lmul
lload 7 /* sqrtFloor */
ladd
lstore 9 /* halfSquare */
start local 9 // long halfSquare
20: .line 369
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 371
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 385
aload 4 /* mode */
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: .line 386
lload 0 /* p */
lload 2 /* q */
ldiv
lstore 5 /* div */
start local 5 // long div
2: .line 387
lload 0 /* p */
lload 2 /* q */
lload 5 /* div */
lmul
lsub
lstore 7 /* rem */
start local 7 // long rem
3: .line 389
lload 7 /* rem */
lconst_0
lcmp
ifne 5
4: .line 390
lload 5 /* div */
lreturn
5: .line 400
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 402
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 404
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 407
StackMap locals:
StackMap stack:
iconst_0
istore 10 /* increment */
start local 10 // boolean increment
11: .line 408
goto 38
end local 10 // boolean increment
12: .line 410
StackMap locals:
StackMap stack:
iconst_1
istore 10 /* increment */
start local 10 // boolean increment
13: .line 411
goto 38
end local 10 // boolean increment
14: .line 413
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 414
goto 38
end local 10 // boolean increment
18: .line 416
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 417
goto 38
end local 10 // boolean increment
22: .line 421
StackMap locals:
StackMap stack:
lload 7 /* rem */
invokestatic java.lang.Math.abs:(J)J
lstore 11 /* absRem */
start local 11 // long absRem
23: .line 422
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 425
lload 13 /* cmpRemToHalfDivisor */
lconst_0
lcmp
ifne 33
25: .line 426
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 427
goto 38
end local 10 // boolean increment
33: .line 428
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 430
goto 38
end local 13 // long cmpRemToHalfDivisor
end local 11 // long absRem
end local 10 // boolean increment
37: .line 432
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 434
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 458
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 481
lload 2 /* m */
lconst_0
lcmp
ifgt 2
1: .line 482
new java.lang.ArithmeticException
dup
ldc "Modulus must be positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 484
StackMap locals:
StackMap stack:
lload 0 /* x */
lload 2 /* m */
lrem
lstore 4 /* result */
start local 4 // long result
3: .line 485
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 500
ldc "a"
lload 0 /* a */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
1: .line 501
ldc "b"
lload 2 /* b */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
2: .line 502
lload 0 /* a */
lconst_0
lcmp
ifne 4
3: .line 505
lload 2 /* b */
lreturn
4: .line 506
StackMap locals:
StackMap stack:
lload 2 /* b */
lconst_0
lcmp
ifne 6
5: .line 507
lload 0 /* a */
lreturn
6: .line 513
StackMap locals:
StackMap stack:
lload 0 /* a */
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
istore 4 /* aTwos */
start local 4 // int aTwos
7: .line 514
lload 0 /* a */
iload 4 /* aTwos */
lshr
lstore 0 /* a */
8: .line 515
lload 2 /* b */
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
istore 5 /* bTwos */
start local 5 // int bTwos
9: .line 516
lload 2 /* b */
iload 5 /* bTwos */
lshr
lstore 2 /* b */
10: .line 517
goto 16
11: .line 525
StackMap locals: int int
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lsub
lstore 6 /* delta */
start local 6 // long delta
12: .line 527
lload 6 /* delta */
lload 6 /* delta */
bipush 63
lshr
land
lstore 8 /* minDeltaOrZero */
start local 8 // long minDeltaOrZero
13: .line 530
lload 6 /* delta */
lload 8 /* minDeltaOrZero */
lsub
lload 8 /* minDeltaOrZero */
lsub
lstore 0 /* a */
14: .line 533
lload 2 /* b */
lload 8 /* minDeltaOrZero */
ladd
lstore 2 /* b */
15: .line 534
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 517
StackMap locals:
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lcmp
ifne 11
17: .line 536
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 546
lload 0 /* a */
lload 2 /* b */
ladd
lstore 4 /* result */
start local 4 // long result
1: .line 547
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 548
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 558
lload 0 /* a */
lload 2 /* b */
lsub
lstore 4 /* result */
start local 4 // long result
1: .line 559
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 560
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 571
lload 0 /* a */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
1: .line 572
lload 0 /* a */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
2: .line 571
iadd
3: .line 573
lload 2 /* b */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
4: .line 571
iadd
5: .line 574
lload 2 /* b */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
6: .line 571
iadd
7: .line 570
istore 4 /* leadingZeros */
start local 4 // int leadingZeros
8: .line 585
iload 4 /* leadingZeros */
bipush 65
if_icmple 10
9: .line 586
lload 0 /* a */
lload 2 /* b */
lmul
lreturn
10: .line 588
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 589
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 590
lload 0 /* a */
lload 2 /* b */
lmul
lstore 5 /* result */
start local 5 // long result
19: .line 591
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 592
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 603
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 604
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 605
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 18
-1: 11
0: 7
1: 10
2: 14
default: 24
}
7: .line 607
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 609
StackMap locals:
StackMap stack:
lconst_1
lreturn
11: .line 611
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 613
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 614
lconst_1
iload 2 /* k */
lshl
lreturn
18: .line 616
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 617
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 619
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
25: .line 622
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
26: .line 624
StackMap locals: long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 27
1: 28
default: 29
}
27: .line 626
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
28: .line 628
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.checkedMultiply:(JJ)J
lreturn
29: .line 630
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifeq 31
30: .line 631
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.checkedMultiply:(JJ)J
lstore 3 /* accum */
31: .line 633
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
ishr
istore 2 /* k */
32: .line 634
iload 2 /* k */
ifle 26
33: .line 636
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 635
invokestatic com.google.common.math.MathPreconditions.checkNoOverflow:(ZLjava/lang/String;JJ)V
37: .line 637
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
38: .line 623
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 651
lload 0 /* a */
lload 2 /* b */
ladd
lstore 4 /* naiveSum */
start local 4 // long naiveSum
1: .line 652
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 655
lload 4 /* naiveSum */
lreturn
7: .line 658
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 669
lload 0 /* a */
lload 2 /* b */
lsub
lstore 4 /* naiveDifference */
start local 4 // long naiveDifference
1: .line 670
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 673
lload 4 /* naiveDifference */
lreturn
7: .line 676
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 689
lload 0 /* a */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
1: .line 690
lload 0 /* a */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
2: .line 689
iadd
3: .line 691
lload 2 /* b */
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
4: .line 689
iadd
5: .line 692
lload 2 /* b */
ldc -1
lxor
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
6: .line 689
iadd
7: .line 688
istore 4 /* leadingZeros */
start local 4 // int leadingZeros
8: .line 693
iload 4 /* leadingZeros */
bipush 65
if_icmple 10
9: .line 694
lload 0 /* a */
lload 2 /* b */
lmul
lreturn
10: .line 697
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 698
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 700
lload 5 /* limit */
lreturn
19: .line 702
StackMap locals:
StackMap stack:
lload 0 /* a */
lload 2 /* b */
lmul
lstore 7 /* result */
start local 7 // long result
20: .line 703
lload 0 /* a */
lconst_0
lcmp
ifeq 21
lload 7 /* result */
lload 0 /* a */
ldiv
lload 2 /* b */
lcmp
ifne 22
21: .line 704
StackMap locals: long
StackMap stack:
lload 7 /* result */
lreturn
22: .line 706
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 717
ldc "exponent"
iload 2 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 718
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 719
lload 0 /* b */
l2i
tableswitch { // -2 - 2
-2: 17
-1: 11
0: 7
1: 10
2: 14
default: 22
}
7: .line 721
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 723
StackMap locals:
StackMap stack:
lconst_1
lreturn
11: .line 725
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 727
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 63
if_icmplt 16
15: .line 728
ldc 9223372036854775807
lreturn
16: .line 730
StackMap locals:
StackMap stack:
lconst_1
iload 2 /* k */
lshl
lreturn
17: .line 732
StackMap locals:
StackMap stack:
iload 2 /* k */
bipush 64
if_icmplt 19
18: .line 733
ldc 9223372036854775807
iload 2 /* k */
iconst_1
iand
i2l
ladd
lreturn
19: .line 735
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 737
StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
23: .line 740
StackMap locals:
StackMap stack:
lconst_1
lstore 3 /* accum */
start local 3 // long accum
24: .line 742
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 744
StackMap locals: long long
StackMap stack:
iload 2 /* k */
tableswitch { // 0 - 1
0: 26
1: 27
default: 28
}
26: .line 746
StackMap locals:
StackMap stack:
lload 3 /* accum */
lreturn
27: .line 748
StackMap locals:
StackMap stack:
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.saturatedMultiply:(JJ)J
lreturn
28: .line 750
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
iand
ifeq 30
29: .line 751
lload 3 /* accum */
lload 0 /* b */
invokestatic com.google.common.math.LongMath.saturatedMultiply:(JJ)J
lstore 3 /* accum */
30: .line 753
StackMap locals:
StackMap stack:
iload 2 /* k */
iconst_1
ishr
istore 2 /* k */
31: .line 754
iload 2 /* k */
ifle 25
32: .line 755
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 756
lload 5 /* limit */
lreturn
38: .line 758
StackMap locals:
StackMap stack:
lload 0 /* b */
lload 0 /* b */
lmul
lstore 0 /* b */
39: .line 743
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 774
ldc "n"
iload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 775
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 809
ldc "n"
iload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
1: .line 810
ldc "k"
iload 1 /* k */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;I)I
pop
2: .line 811
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 812
iload 1 /* k */
iload 0 /* n */
iconst_1
ishr
if_icmple 7
6: .line 813
iload 0 /* n */
iload 1 /* k */
isub
istore 1 /* k */
7: .line 815
StackMap locals:
StackMap stack:
iload 1 /* k */
tableswitch { // 0 - 1
0: 8
1: 9
default: 10
}
8: .line 817
StackMap locals:
StackMap stack:
lconst_1
lreturn
9: .line 819
StackMap locals:
StackMap stack:
iload 0 /* n */
i2l
lreturn
10: .line 821
StackMap locals:
StackMap stack:
iload 0 /* n */
getstatic com.google.common.math.LongMath.factorials:[J
arraylength
if_icmpge 12
11: .line 822
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 823
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 824
StackMap locals:
StackMap stack:
ldc 9223372036854775807
lreturn
14: .line 825
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 827
iload 0 /* n */
iinc 0 /* n */ -1
i2l
lstore 2 /* result */
start local 2 // long result
16: .line 828
iconst_2
istore 4 /* i */
start local 4 // int i
17: goto 21
18: .line 829
StackMap locals: long int
StackMap stack:
lload 2 /* result */
iload 0 /* n */
i2l
lmul
lstore 2 /* result */
19: .line 830
lload 2 /* result */
iload 4 /* i */
i2l
ldiv
lstore 2 /* result */
20: .line 828
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 832
lload 2 /* result */
lreturn
end local 2 // long result
23: .line 834
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 836
lconst_1
lstore 3 /* result */
start local 3 // long result
25: .line 837
iload 0 /* n */
iinc 0 /* n */ -1
i2l
lstore 5 /* numerator */
start local 5 // long numerator
26: .line 838
lconst_1
lstore 7 /* denominator */
start local 7 // long denominator
27: .line 840
iload 2 /* nBits */
istore 9 /* numeratorBits */
start local 9 // int numeratorBits
28: .line 848
iconst_2
istore 10 /* i */
start local 10 // int i
29: goto 40
30: .line 849
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 851
lload 5 /* numerator */
iload 0 /* n */
i2l
lmul
lstore 5 /* numerator */
32: .line 852
lload 7 /* denominator */
iload 10 /* i */
i2l
lmul
lstore 7 /* denominator */
33: .line 853
iload 9 /* numeratorBits */
iload 2 /* nBits */
iadd
istore 9 /* numeratorBits */
34: .line 854
goto 39
35: .line 857
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 858
iload 0 /* n */
i2l
lstore 5 /* numerator */
37: .line 859
iload 10 /* i */
i2l
lstore 7 /* denominator */
38: .line 860
iload 2 /* nBits */
istore 9 /* numeratorBits */
39: .line 848
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 863
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 870
lload 0 /* x */
lconst_1
lcmp
ifne 2
1: .line 871
lload 2 /* numerator */
lload 4 /* denominator */
ldiv
lreturn
2: .line 873
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 874
lload 0 /* x */
lload 6 /* commonDivisor */
ldiv
lstore 0 /* x */
4: .line 875
lload 4 /* denominator */
lload 6 /* commonDivisor */
ldiv
lstore 4 /* denominator */
5: .line 878
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 963
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 976
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 1003
lload 0 /* n */
ldc 2
lcmp
ifge 3
1: .line 1004
ldc "n"
lload 0 /* n */
invokestatic com.google.common.math.MathPreconditions.checkNonNegative:(Ljava/lang/String;J)J
pop2
2: .line 1005
iconst_0
ireturn
3: .line 1007
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 2
lcmp
ifeq 4
lload 0 /* n */
ldc 3
lcmp
ifeq 4
lload 0 /* n */
ldc 5
lcmp
ifeq 4
lload 0 /* n */
ldc 7
lcmp
ifeq 4
lload 0 /* n */
ldc 11
lcmp
ifeq 4
lload 0 /* n */
ldc 13
lcmp
ifne 5
4: .line 1008
StackMap locals:
StackMap stack:
iconst_1
ireturn
5: .line 1011
StackMap locals:
StackMap stack:
ldc -545925251
iconst_1
lload 0 /* n */
ldc 30
lrem
l2i
ishl
iand
ifeq 7
6: .line 1012
iconst_0
ireturn
7: .line 1014
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 7
lrem
lconst_0
lcmp
ifeq 8
lload 0 /* n */
ldc 11
lrem
lconst_0
lcmp
ifeq 8
lload 0 /* n */
ldc 13
lrem
lconst_0
lcmp
ifne 9
8: .line 1015
StackMap locals:
StackMap stack:
iconst_0
ireturn
9: .line 1017
StackMap locals:
StackMap stack:
lload 0 /* n */
ldc 289
lcmp
ifge 11
10: .line 1018
iconst_1
ireturn
11: .line 1021
StackMap locals:
StackMap stack:
getstatic com.google.common.math.LongMath.millerRabinBaseSets:[[J
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 22
StackMap locals: long top int int long[][]
StackMap stack:
12: aload 5
iload 3
aaload
astore 2 /* baseSet */
start local 2 // long[] baseSet
13: .line 1022
lload 0 /* n */
aload 2 /* baseSet */
iconst_0
laload
lcmp
ifgt 21
14: .line 1023
iconst_1
istore 6 /* i */
start local 6 // int i
15: goto 19
16: .line 1024
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 18
17: .line 1025
iconst_0
ireturn
18: .line 1023
StackMap locals:
StackMap stack:
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
19: iload 6 /* i */
aload 2 /* baseSet */
arraylength
if_icmplt 16
end local 6 // int i
20: .line 1028
iconst_1
ireturn
end local 2 // long[] baseSet
21: .line 1021
StackMap locals: long top int int long[][]
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
22: iload 3
iload 4
if_icmplt 12
23: .line 1031
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 0 // long n
LocalVariableTable:
Start End Slot Name Signature
0 24 0 n J
13 21 2 baseSet [J
15 20 6 i I
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()
com.google.common.annotations.Beta()
MethodParameters:
Name Flags
n
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 1206
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 51
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)