Class MathUtils
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
-
multiplyHigh
static long multiplyHigh(long x, long y)
-