类 MathUtils
java.lang.Object
org.hipparchus.util.MathUtils
杂项实用功能。
- 另请参阅:
-
嵌套类概要
嵌套类修饰符和类型类说明static final classMathUtils.FieldSumAndResidual<T extends FieldElement<T>>static final class -
字段概要
字段修饰符和类型字段说明static final double\(\pi^2\)static final double\(\pi/2\).static final double\(2\pi\) -
方法概要
修饰符和类型方法说明static voidcheckDimension(int dimension, int otherDimension) 检查给定的维度是否匹配。static voidcheckFinite(double x) 检查参数是否为实数。static voidcheckFinite(double[] val) 检查所有元素是否为实数。static void检查对象是否不为空。static voidcheckNotNull(Object o, Localizable pattern, Object... args) 检查对象是否不为空。static voidcheckRangeInclusive(double value, double lo, double hi) 检查给定值是否严格在范围[lo, hi]内。static voidcheckRangeInclusive(long value, long lo, long hi) 检查给定值是否严格在范围[lo, hi]内。static bytecopySign(byte magnitude, byte sign) 返回第一个参数,其符号与第二个参数相同。static intcopySign(int magnitude, int sign) 返回第一个参数,其符号与第二个参数相同。static longcopySign(long magnitude, long sign) 返回第一个参数,其符号与第二个参数相同。static shortcopySign(short magnitude, short sign) 返回第一个参数,其符号与第二个参数相同。static booleanequals(double x, double y) 如果值根据Double.equals(Object)的语义相等,则返回true。static inthash(double value) 返回表示给定双精度值的整数哈希码。static inthash(double[] value) 返回表示给定双精度数组的整数哈希码。static <T extends CalculusFieldElement<T>>
Tmax(T e1, T e2) 找到两个字段元素的最大值。static <T extends CalculusFieldElement<T>>
Tmin(T e1, T e2) 找到两个字段元素的最小值。static doublenormalizeAngle(double a, double center) 将角度标准化在围绕中心值的2π宽区间内。static <T extends CalculusFieldElement<T>>
TnormalizeAngle(T a, T center) 将角度标准化在围绕中心值的2π宽区间内。static doublereduce(double a, double period, double offset) 将|a - offset|减少到主要区间[0, |period|)。static MathUtils.SumAndResidualtwoSum(double a, double b) 使用Møller的2Sum算法对a和b求和。static <T extends FieldElement<T>>
MathUtils.FieldSumAndResidual<T> twoSum(T a, T b) 使用Møller的2Sum算法对a和b求和。
-
字段详细资料
-
TWO_PI
public static final double TWO_PI\(2\pi\)- 另请参阅:
-
PI_SQUARED
public static final double PI_SQUARED\(\pi^2\)- 另请参阅:
-
SEMI_PI
public static final double SEMI_PI\(\pi/2\).- 另请参阅:
-
-
方法详细资料
-
hash
public static int hash(double value) 返回表示给定双精度值的整数哈希码。- 参数:
-
value- 要进行哈希处理的值 - 返回:
- 哈希码
-
equals
public static boolean equals(double x, double y) 如果值根据Double.equals(Object)的语义相等,则返回true。- 参数:
-
x- 值 -
y- 值 - 返回:
-
Double.valueOf(x).equals(Double.valueOf(y))
-
hash
public static int hash(double[] value) 返回表示给定双精度数组的整数哈希码。- 参数:
-
value- 要进行哈希处理的值(可以为null) - 返回:
- 哈希码
-
normalizeAngle
public static double normalizeAngle(double a, double center) 将角度标准化在围绕中心值的2π宽区间内。此方法有三个主要用途:
- 将角度标准化在0和2π之间:
a = MathUtils.normalizeAngle(a, FastMath.PI); - 将角度标准化在-π和+π之间
a = MathUtils.normalizeAngle(a, 0.0); - 计算两个定义角位置之间的角度:
angle = MathUtils.normalizeAngle(end, start) - start;
请注意,由于数值精度和因为π无法精确表示,结果区间是闭合的,它不能是半闭合的,这在纯数学视角下可能更令人满意。
- 参数:
-
a- 要标准化的角度 -
center- 结果的所需2π区间的中心 - 返回:
- a-2kπ,其中k为整数,且center-π <= a-2kπ <= center+π
- 将角度标准化在0和2π之间:
-
normalizeAngle
将角度标准化在围绕中心值的2π宽区间内。此方法有三个主要用途:
- 将角度标准化在0和2π之间:
a = MathUtils.normalizeAngle(a, FastMath.PI); - 将角度标准化在-π和+π之间
a = MathUtils.normalizeAngle(a, zero); - 计算两个定义角位置之间的角度:
angle = MathUtils.normalizeAngle(end, start).subtract(start);
请注意,由于数值精度和因为π无法精确表示,结果区间是闭合的,它不能是半闭合的,这在纯数学视角下可能更令人满意。
- 类型参数:
-
T- 字段元素的类型 - 参数:
-
a- 要标准化的角度 -
center- 结果的所需2π区间的中心 - 返回:
- a-2kπ,其中k为整数,且center-π <= a-2kπ <= center+π
- 将角度标准化在0和2π之间:
-
max
找到两个字段元素的最大值。- 类型参数:
-
T- 字段元素的类型 - 参数:
-
e1- 第一个元素 -
e2- 第二个元素 - 返回:
- max(a1, e2)
-
min
找到两个字段元素的最小值。- 类型参数:
-
T- 字段元素的类型 - 参数:
-
e1- 第一个元素 -
e2- 第二个元素 - 返回:
- min(a1, e2)
-
reduce
public static double reduce(double a, double period, double offset) 将
|a - offset|减少到主要区间[0, |period|)。具体地,返回的值为
a - |period| * floor((a - offset) / |period|) - offset。如果任何参数为
NaN或无穷大,则结果为NaN。- 参数:
-
a- 要减少的值。 -
period- 周期。 -
offset- 将映射为0的值。 - 返回:
-
与
a对应于区间[0 |period|)内的值。
-
copySign
返回第一个参数,其符号与第二个参数相同。- 参数:
-
magnitude- 返回值的大小。 -
sign- 返回值的符号。 - 返回:
-
一个具有大小等于
magnitude且与sign参数相同符号的值。 - 抛出:
-
MathRuntimeException- 如果magnitude == Byte.MIN_VALUE且sign >= 0。
-
copySign
返回第一个参数,其符号与第二个参数相同。- 参数:
-
magnitude- 返回值的大小。 -
sign- 返回值的符号。 - 返回:
-
一个具有大小等于
magnitude且与sign参数相同符号的值。 - 抛出:
-
MathRuntimeException- 如果magnitude == Short.MIN_VALUE且sign >= 0。
-
copySign
返回第一个参数,其符号与第二个参数相同。- 参数:
-
magnitude- 返回值的大小。 -
sign- 返回值的符号。 - 返回:
-
具有大小等于
magnitude且符号与sign参数相同的值。 - 抛出:
-
MathRuntimeException- 如果magnitude == Integer.MIN_VALUE且sign >= 0。
-
copySign
返回具有第二个参数符号的第一个参数。- 参数:
-
magnitude- 返回值的大小。 -
sign- 返回值的符号。 - 返回:
-
具有大小等于
magnitude且符号与sign参数相同的值。 - 抛出:
-
MathRuntimeException- 如果magnitude == Long.MIN_VALUE且sign >= 0。
-
checkFinite
检查参数是否为实数。- 参数:
-
x- 参数。 - 抛出:
-
MathIllegalArgumentException- 如果x不是有限实数。
-
checkFinite
检查所有元素是否为实数。- 参数:
-
val- 参数。 - 抛出:
-
MathIllegalArgumentException- 如果数组中的任何值不是有限实数。
-
checkNotNull
public static void checkNotNull(Object o, Localizable pattern, Object... args) throws NullArgumentException 检查对象不为空。- 参数:
-
o- 要检查的对象。 -
pattern- 消息模式。 -
args- 用于替换pattern中占位符的参数。 - 抛出:
-
NullArgumentException- 如果o为null。
-
checkNotNull
检查对象不为空。- 参数:
-
o- 要检查的对象。 - 抛出:
-
NullArgumentException- 如果o为null。
-
checkRangeInclusive
public static void checkRangeInclusive(long value, long lo, long hi) 检查给定值严格在范围[lo, hi]内。- 参数:
-
value- 要检查的值。 -
lo- 下限(包括)。 -
hi- 上限(包括)。 - 抛出:
-
MathIllegalArgumentException- 如果value严格在[lo, hi]之外。
-
checkRangeInclusive
public static void checkRangeInclusive(double value, double lo, double hi) 检查给定值严格在范围[lo, hi]内。- 参数:
-
value- 要检查的值。 -
lo- 下限(包括)。 -
hi- 上限(包括)。 - 抛出:
-
MathIllegalArgumentException- 如果value严格在[lo, hi]之外。
-
checkDimension
public static void checkDimension(int dimension, int otherDimension) 检查给定维度是否匹配。- 参数:
-
dimension- 第一个维度。 -
otherDimension- 第二个维度。 - 抛出:
-
MathIllegalArgumentException- 如果长度!= otherLength。
-
twoSum
使用Møller的2Sum算法对a和b进行求和。参考资料:
- Møller, Ole. "Quasi double-precision in floating point addition." BIT 5, 37–50 (1965).
- Shewchuk, Richard J. "Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates." Discrete & Computational Geometry 18, 305–363 (1997).
- https://en.wikipedia.org/wiki/2Sum
- 参数:
-
a- 第一个加数 -
b- 第二个加数 - 返回:
- 和及和的剩余误差
-
twoSum
使用Møller的2Sum算法对a和b进行求和。参考资料:
- Møller, Ole. "Quasi double-precision in floating point addition." BIT 5, 37–50 (1965).
- Shewchuk, Richard J. "Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates." Discrete & Computational Geometry 18, 305–363 (1997).
- https://en.wikipedia.org/wiki/2Sum
- 类型参数:
-
T- 字段元素类型 - 参数:
-
a- 第一个加数 -
b- 第二个加数 - 返回:
- 和及和的剩余误差
-