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.
- Author:
- Raffaello Giulietti
-
Field Summary
Fields -
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.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:
-
-
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).
-