java.lang.Object
tools.jackson.core.io.schubfach.MathUtils
This class exposes package private utilities for other classes.
Thus, all methods are assumed to be invoked with correct arguments,
so these are not checked at all.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final longprivate static final longprivate static final longprivate static final long[]static final intstatic final intstatic final intprivate static final long[]private static final intprivate static final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intflog10pow2(int e) Returns the unique integer k such that 10k ≤ 2e< 10k+1.static intflog10threeQuartersPow2(int e) Returns the unique integer k such that 10k ≤ 3/4 · 2e< 10k+1.static intflog2pow10(int e) Returns the unique integer k such that 2k ≤ 10e< 2k+1.static longg0(int k) Returns g0 as described ing1(int).static longg1(int k) Let 10-k= β 2r, for the unique pair of integer r and real β meeting 2125 ≤ β < 2126.(package private) static longmultiplyHigh(long x, long y) static longpow10(int e) Returns 10e.
-
Field Details
-
K_MIN
public static final int K_MIN- See Also:
-
K_MAX
public static final int K_MAX- See Also:
-
H
public static final int H- See Also:
-
Q_10
private static final int Q_10- See Also:
-
C_10
private static final long C_10- See Also:
-
A_10
private static final long A_10- See Also:
-
Q_2
private static final int Q_2- See Also:
-
C_2
private static final long C_2- See Also:
-
pow10
private static final long[] pow10 -
g
private static final long[] g
-
-
Constructor Details
-
MathUtils
private MathUtils()
-
-
Method Details
-
pow10
public static long pow10(int e) Returns 10e.- Parameters:
e- The exponent which must meet 0 ≤e≤H.- Returns:
- 10
e.
-
flog10pow2
public static int flog10pow2(int e) Returns the unique integer k such that 10k ≤ 2e< 10k+1.The result is correct when |
e| ≤ 5_456_721. Otherwise the result is undefined.- Parameters:
e- The exponent of 2, which should meet |e| ≤ 5_456_721 for safe results.- Returns:
- ⌊log102
e⌋.
-
flog10threeQuartersPow2
public static int flog10threeQuartersPow2(int e) Returns the unique integer k such that 10k ≤ 3/4 · 2e< 10k+1.The result is correct when -2_956_395 ≤
e≤ 2_500_325. Otherwise the result is undefined.- Parameters:
e- The exponent of 2, which should meet -2_956_395 ≤e≤ 2_500_325 for safe results.- Returns:
- ⌊log10(3/4 ·
2
e)⌋.
-
flog2pow10
public static int flog2pow10(int e) Returns the unique integer k such that 2k ≤ 10e< 2k+1.The result is correct when |
e| ≤ 1_838_394. Otherwise the result is undefined.- Parameters:
e- The exponent of 10, which should meet |e| ≤ 1_838_394 for safe results.- Returns:
- ⌊log210
e⌋.
-
g1
public static long g1(int k) Let 10-k= β 2r, for the unique pair of integer r and real β meeting 2125 ≤ β < 2126. Further, let g = ⌊β⌋ + 1. Split g into the higher 63 bits g1 and the lower 63 bits g0. Thus, g1 = ⌊g 2-63⌋ and g0 = g - g1 263.This method returns g1 while
g0(int)returns g0.If needed, the exponent r can be computed as r =
flog2pow10(-k)- 125 (seeflog2pow10(int)). -
g0
public static long g0(int k) Returns g0 as described ing1(int). -
multiplyHigh
static long multiplyHigh(long x, long y)
-