类 MathUtils
java.lang.Object
org.hipparchus.util.MathUtils
杂项实用功能。
- 另请参阅:
-
嵌套类概要
修饰符和类型类说明static final class
MathUtils.FieldSumAndResidual<T extends FieldElement<T>>
static final class
-
字段概要
修饰符和类型字段说明static final double
\(\pi^2\)static final double
\(\pi/2\).static final double
\(2\pi\) -
方法概要
修饰符和类型方法说明static void
checkDimension
(int dimension, int otherDimension) 检查给定的维度是否匹配。static void
checkFinite
(double x) 检查参数是否为实数。static void
checkFinite
(double[] val) 检查所有元素是否为实数。static void
检查对象是否不为空。static void
checkNotNull
(Object o, Localizable pattern, Object... args) 检查对象是否不为空。static void
checkRangeInclusive
(double value, double lo, double hi) 检查给定值是否严格在范围[lo, hi]内。static void
checkRangeInclusive
(long value, long lo, long hi) 检查给定值是否严格在范围[lo, hi]内。static byte
copySign
(byte magnitude, byte sign) 返回第一个参数,其符号与第二个参数相同。static int
copySign
(int magnitude, int sign) 返回第一个参数,其符号与第二个参数相同。static long
copySign
(long magnitude, long sign) 返回第一个参数,其符号与第二个参数相同。static short
copySign
(short magnitude, short sign) 返回第一个参数,其符号与第二个参数相同。static boolean
equals
(double x, double y) 如果值根据Double.equals(Object)
的语义相等,则返回true
。static int
hash
(double value) 返回表示给定双精度值的整数哈希码。static int
hash
(double[] value) 返回表示给定双精度数组的整数哈希码。static <T extends CalculusFieldElement<T>>
Tmax
(T e1, T e2) 找到两个字段元素的最大值。static <T extends CalculusFieldElement<T>>
Tmin
(T e1, T e2) 找到两个字段元素的最小值。static double
normalizeAngle
(double a, double center) 将角度标准化在围绕中心值的2π宽区间内。static <T extends CalculusFieldElement<T>>
TnormalizeAngle
(T a, T center) 将角度标准化在围绕中心值的2π宽区间内。static double
reduce
(double a, double period, double offset) 将|a - offset|
减少到主要区间[0, |period|)
。static MathUtils.SumAndResidual
twoSum
(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
- 第二个加数 - 返回:
- 和及和的剩余误差
-