类 FastMath
Math
和 StrictMath
。
FastMath 是 Math 和 StrictMath 的即插即用替代品。这意味着对于 Math 中的任何方法(比如 Math.sin(x)
或 Math.cbrt(y)
),用户可以直接更改类并直接使用这些方法(在上面的示例中使用 FastMath.sin(x)
或 FastMath.cbrt(y)
)。
FastMath 的速度是通过大量依赖于当今许多 JVM 中的优化编译器转换为本机代码和使用大型表来实现的。较大的表在首次使用时会延迟初始化,因此设置时间不会惩罚不需要这些表的方法。
请注意,FastMath 在 Hipparchus 内部被广泛使用,因此通过调用一些算法,无论最终用户是否直接调用 FastMath 方法,都将发生需要初始化表的开销。可以通过在源分发的测试目录中运行 FastMathTestPerformance 测试来评估特定 JVM 和硬件的性能数据。
FastMath 的准确性应该主要独立于 JVM,因为它仅依赖于 IEEE-754 基本操作和嵌入表。几乎所有操作在整个域范围内准确到约 0.5 ulp。当然,这个说法只是一个粗略的全局观察行为,这不是对每个双精度数输入的保证(请参阅 William Kahan 的 表制作者困境)。
FastMath 还实现了 Math/StrictMath 中未找到的以下方法:
自 1.6 版本开始,Math/StrictMath 中才有的以下方法,即使在 1.5 版本的 Java 虚拟机中也由 FastMath 提供-
字段概要
-
方法概要
修饰符和类型方法说明static double
abs
(double x) 绝对值。static float
abs
(float x) 绝对值。static int
abs
(int x) 绝对值。static long
abs
(long x) 绝对值。static <T extends CalculusFieldElement<T>>
Tabs
(T x) 绝对值。static int
absExact
(int x) 绝对值。static long
absExact
(long x) 绝对值。static double
acos
(double x) 计算一个数的反余弦。static <T extends CalculusFieldElement<T>>
Tacos
(T x) 计算一个数的反余弦。static double
acosh
(double a) 计算一个数的反双曲余弦。static <T extends CalculusFieldElement<T>>
Tacosh
(T a) 计算一个数的反双曲余弦。static int
addExact
(int a, int b) 添加两个数字,检测溢出。static long
addExact
(long a, long b) 添加两个数字,检测溢出。static double
asin
(double x) 计算一个数的反正弦。static <T extends CalculusFieldElement<T>>
Tasin
(T x) 计算一个数的反正弦。static double
asinh
(double a) 计算一个数的反双曲正弦。static <T extends CalculusFieldElement<T>>
Tasinh
(T a) 计算一个数的反双曲正弦。static double
atan
(double x) 反正切函数static <T extends CalculusFieldElement<T>>
Tatan
(T x) 反正切函数static double
atan2
(double y, double x) 两参数反正切函数static <T extends CalculusFieldElement<T>>
Tatan2
(T y, T x) 两参数反正切函数static double
atanh
(double a) 计算一个数的反双曲正切。static <T extends CalculusFieldElement<T>>
Tatanh
(T a) 计算一个数的反双曲正切。static double
cbrt
(double x) 计算一个数的立方根。static <T extends CalculusFieldElement<T>>
Tcbrt
(T x) 计算一个数的立方根。static double
ceil
(double x) 获取大于 x 的最小整数。static <T extends CalculusFieldElement<T>>
Tceil
(T x) 获取大于 x 的最小整数。static int
ceilDiv
(int a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static long
ceilDiv
(long a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static long
ceilDiv
(long a, long b) 找到 q,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static int
ceilDivExact
(int a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static long
ceilDivExact
(long a, long b) 找到 q,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static int
ceilMod
(int a, int b) 找到 r,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static int
ceilMod
(long a, int b) 找到 r,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static long
ceilMod
(long a, long b) 找到 r,使得a = q b + r
,如果b > 0
,则b < r <= 0
,如果b < 0
,则0 <= r < b
。static double
clamp
(double value, double inf, double sup) 将值限制在一个区间内。static float
clamp
(float value, float inf, float sup) 将值限制在一个区间内。static int
clamp
(int value, int inf, int sup) 将值限制在一个区间内。static int
clamp
(long value, int inf, int sup) 将值限制在一个区间内。static long
clamp
(long value, long inf, long sup) 将值限制在一个区间内。static double
copySign
(double magnitude, double sign) 返回第一个参数,其符号与第二个参数相同。static float
copySign
(float magnitude, float sign) 返回第一个参数,其符号与第二个参数相同。static <T extends CalculusFieldElement<T>>
TcopySign
(T magnitude, double sign) 返回第一个参数,其符号与第二个参数相同。static <T extends CalculusFieldElement<T>>
TcopySign
(T magnitude, T sign) 返回第一个参数,其符号与第二个参数相同。static double
cos
(double x) 余弦函数。static <T extends CalculusFieldElement<T>>
Tcos
(T x) 余弦函数。static double
cosh
(double x) 计算一个数的双曲余弦。static <T extends CalculusFieldElement<T>>
Tcosh
(T x) 计算一个数的双曲余弦。static int
decrementExact
(int n) 减少一个数,检测溢出。static long
decrementExact
(long n) 减少一个数,检测溢出。static int
divideExact
(int x, int y) 除法运算两个整数,检查溢出。static long
divideExact
(long x, long y) 除法运算两个长整数,检查溢出。static double
exp
(double x) 指数函数。static <T extends CalculusFieldElement<T>>
Texp
(T x) 指数函数。static double
expm1
(double x) 计算 exp(x) - 1static <T extends CalculusFieldElement<T>>
Texpm1
(T x) 计算 exp(x) - 1static double
floor
(double x) 获取小于 x 的最大整数。static <T extends CalculusFieldElement<T>>
Tfloor
(T x) 获取小于 x 的最大整数。static int
floorDiv
(int a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则0 <= r < b
,如果b < 0
,则b < r <= 0
。static long
floorDiv
(long a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则0 <= r < b
,如果b < 0
,则b < r <= 0
。static long
floorDiv
(long a, long b) 找到 q,使得a = q b + r
,如果b > 0
,则0 <= r < b
,如果b < 0
,则b < r <= 0
。static int
floorDivExact
(int a, int b) 找到 q,使得a = q b + r
,如果b > 0
,则0 <= r < b
,如果b < 0
,则b < r <= 0
。static long
floorDivExact
(long a, long b) 找到 q,使得a = q b + r
,如果b > 0
,则0 <= r < b
,如果b < 0
,则b < r <= 0
。static int
floorMod
(int a, int b) 找到 r,使得a = q b + r
,如果static int
floorMod
(long a, int b) Finds r such thata = q b + r
with0 <= r < b
ifb > 0
andb < r <= 0
ifb < 0
.static long
floorMod
(long a, long b) 找到r,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。static double
fma
(double a, double b, double c) 计算融合乘加操作 a * b + c。static float
fma
(float a, float b, float c) 计算融合乘加操作 a * b + c。static int
getExponent
(double d) 返回双精度数的指数,去除偏差。static int
getExponent
(float f) 返回浮点数的指数,去除偏差。static double
hypot
(double x, double y) 返回三角形的斜边,其两边为x
和y
- sqrt(x2 +y2),避免中间溢出或下溢。static <T extends CalculusFieldElement<T>>
Thypot
(T x, T y) 返回三角形的斜边,其两边为x
和y
- sqrt(x2 +y2),避免中间溢出或下溢。static double
IEEEremainder
(double dividend, double divisor) 根据IEEE 754标准计算余数。static <T extends CalculusFieldElement<T>>
TIEEEremainder
(T dividend, double divisor) 根据IEEE 754标准计算余数。static <T extends CalculusFieldElement<T>>
TIEEEremainder
(T dividend, T divisor) 根据IEEE 754标准计算余数。static int
incrementExact
(int n) 增加一个数字,检测溢出。static long
incrementExact
(long n) 增加一个数字,检测溢出。static double
log
(double x) 自然对数。static double
log
(double base, double x) 计算给定底数的对数。static <T extends CalculusFieldElement<T>>
Tlog
(T x) 自然对数。static double
log10
(double x) 计算以10为底的对数。static <T extends CalculusFieldElement<T>>
Tlog10
(T x) 计算以10为底的对数。static double
log1p
(double x) 计算log(1 + x)。static <T extends CalculusFieldElement<T>>
Tlog1p
(T x) 计算log(1 + x)。static double
max
(double a, double b) 计算两个值的最大值static float
max
(float a, float b) 计算两个值的最大值static int
max
(int a, int b) 计算两个值的最大值static long
max
(long a, long b) 计算两个值的最大值static <T extends CalculusFieldElement<T>>
Tmax
(T a, double b) 计算两个值的最大值static <T extends CalculusFieldElement<T>>
Tmax
(T a, T b) 计算两个值的最大值static double
min
(double a, double b) 计算两个值的最小值static float
min
(float a, float b) 计算两个值的最小值static int
min
(int a, int b) 计算两个值的最小值static long
min
(long a, long b) 计算两个值的最小值static <T extends CalculusFieldElement<T>>
Tmin
(T a, double b) 计算两个值的最小值static <T extends CalculusFieldElement<T>>
Tmin
(T a, T b) 计算两个值的最小值static int
multiplyExact
(int a, int b) 乘法两个数字,检测溢出。static long
multiplyExact
(long a, int b) 乘法两个数字,检测溢出。static long
multiplyExact
(long a, long b) 乘法两个数字,检测溢出。static long
multiplyFull
(int a, int b) 乘法两个整数并给出无溢出的精确结果。static long
multiplyHigh
(long a, long b) 乘法两个长整数并给出结果的64个最高有效位。static int
negateExact
(int x) 取反参数。static long
negateExact
(long x) 取反参数。static double
nextAfter
(double d, double direction) 获取数字后的下一个机器可表示的数字,沿着另一个数字的方向移动。static float
nextAfter
(float f, double direction) 获取数字后的下一个机器可表示的数字,沿着另一个数字的方向移动。static double
nextDown
(double a) 计算朝负无穷大方向的下一个数字。static float
nextDown
(float a) 计算朝负无穷大方向的下一个数字。static double
nextUp
(double a) 计算朝正无穷大方向的下一个数字。static float
nextUp
(float a) 计算朝正无穷大方向的下一个数字。static <T extends CalculusFieldElement<T>>
doublenorm
(T x) 范数。static double
pow
(double x, double y) 幂函数。static double
pow
(double d, int e) 将双精度数提高到整数幂。static double
pow
(double d, long e) 将双精度数提高到长整数幂。static <T extends CalculusFieldElement<T>>
Tpow
(T x, double y) 幂函数。static <T extends CalculusFieldElement<T>>
Tpow
(T d, int e) 将双精度数提高到整数幂。static <T extends CalculusFieldElement<T>>
Tpow
(T x, T y) 幂函数。static double
random()
返回0.0和1.0之间的伪随机数。static double
rint
(double x) 获取最接近x的整数,如果x恰好处于两个整数之间,则取偶数。static <T extends CalculusFieldElement<T>>
Trint
(T x) 获取最接近x的整数,如果x恰好处于两个整数之间,则取偶数。static long
round
(double x) 获取最接近x的长整数。static int
round
(float x) 获取最接近x的整数。static <T extends CalculusFieldElement<T>>
longround
(T x) 获取最接近x的长整数。static double
scalb
(double d, int n) 将双精度数乘以2的幂。static float
scalb
(float f, int n) 将浮点数乘以2的幂。static <T extends CalculusFieldElement<T>>
Tscalb
(T d, int n) 将双精度数乘以2的幂。static <T extends CalculusFieldElement<T>>
Tsign
(T a) 计算数字的符号。static double
signum
(double a) 计算数字的符号。static float
signum
(float a) 计算数字的符号。static double
sin
(double x) 正弦函数。static <T extends CalculusFieldElement<T>>
Tsin
(T x) 正弦函数。static SinCos
sinCos
(double x) 组合正弦和余弦函数。static <T extends CalculusFieldElement<T>>
FieldSinCos<T> sinCos
(T x) 组合正弦和余弦函数。static double
sinh
(double x) 计算数字的双曲正弦。static <T extends CalculusFieldElement<T>>
Tsinh
(T x) 计算数字的双曲正弦。static SinhCosh
sinhCosh
(double x) 组合双曲正弦和双曲余弦函数。static <T extends CalculusFieldElement<T>>
FieldSinhCosh<T> sinhCosh
(T x) 组合双曲正弦和双曲余弦函数。static double
sqrt
(double a) 计算数字的平方根。static <T extends CalculusFieldElement<T>>
Tsqrt
(T a) 计算数字的平方根。static int
subtractExact
(int a, int b) 减去两个数字,检测溢出。static long
subtractExact
(long a, long b) 减去两个数字,检测溢出。static double
tan
(double x) 正切函数。static <T extends CalculusFieldElement<T>>
Ttan
(T x) 正切函数。static double
tanh
(double x) 计算数字的双曲正切。static <T extends CalculusFieldElement<T>>
Ttanh
(T x) 计算数字的双曲正切。static double
toDegrees
(double x) 将弧度转换为度,误差小于0.5 ULPstatic <T extends CalculusFieldElement<T>>
TtoDegrees
(T x) 将弧度转换为度,误差小于0.5 ULPstatic int
toIntExact
(long n) 将长整数转换为整数,检测溢出static double
toRadians
(double x) 将度转换为弧度,误差小于0.5 ULPstatic <T extends CalculusFieldElement<T>>
TtoRadians
(T x) 将度转换为弧度,误差小于0.5 ULPstatic double
ulp
(double x) 计算数字的最低有效位(最后一位单位)。static float
ulp
(float x) 计算数字的最低有效位(最后一位单位)。static <T extends CalculusFieldElement<T>>
Tulp
(T x) 计算数字的最低有效位(最后一位单位)。static long
unsignedMultiplyHigh
(long a, long b) 乘法两个长无符号整数并给出无符号结果的64个最高有效位。
-
字段详细资料
-
PI
public static final double PI阿基米德常数PI,圆周长与直径的比率。- 另请参阅:
-
E
public static final double E纳皮尔常数e,自然对数的底数。- 另请参阅:
-
-
方法详细资料
-
sqrt
public static double sqrt(double a) 计算数字的平方根。注意: 当前实现委托给
Math.sqrt(double)
- 参数:
-
a
- 进行评估的数字 - 返回:
- a的平方根
-
cosh
public static double cosh(double x) 计算数字的双曲余弦。- 参数:
-
x
- 进行评估的数字 - 返回:
- x的双曲余弦
-
sinh
public static double sinh(double x) 计算数字的双曲正弦。- 参数:
-
x
- 进行评估的数字 - 返回:
- x的双曲正弦
-
sinhCosh
组合双曲正弦和双曲余弦函数。- 参数:
-
x
- 参数。 - 返回:
- [sinh(x), cosh(x)]
-
sinhCosh
组合双曲正弦和双曲余弦函数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 参数。 - 返回:
- [sinh(x), cosh(x)]
-
tanh
public static double tanh(double x) 计算数字的双曲正切。- 参数:
-
x
- 进行评估的数字 - 返回:
- x的双曲正切
-
acosh
public static double acosh(double a) 计算数字的反双曲余弦。- 参数:
-
a
- 进行评估的数字 - 返回:
- a的反双曲余弦
-
asinh
public static double asinh(double a) 计算数字的反双曲正弦。- 参数:
-
a
- 进行评估的数字 - 返回:
- a的反双曲正弦
-
atanh
public static double atanh(double a) 计算数字的反双曲正切。- 参数:
-
a
- 进行评估的数字 - 返回:
- a的反双曲正切
-
signum
public static double signum(double a) 计算数字的符号。符号为负数时为-1,正数时为+1,否则为0- 参数:
-
a
- 进行评估的数字 - 返回:
- 根据a的符号为-1.0、-0.0、+0.0、+1.0或NaN
-
signum
public static float signum(float a) 计算数字的符号。符号为负数时为-1,正数时为+1,否则为0- 参数:
-
a
- 进行评估的数字 - 返回:
- 根据a的符号为-1.0、-0.0、+0.0、+1.0或NaN
-
nextUp
public static double nextUp(double a) 计算朝正无穷大方向的下一个数字。- 参数:
-
a
- 要计算邻居的数字 - 返回:
- a朝正无穷大方向的邻居
-
nextUp
public static float nextUp(float a) 计算朝正无穷大方向的下一个数字。- 参数:
-
a
- 要计算邻居的数字 - 返回:
- a朝正无穷大方向的邻居
-
nextDown
public static double nextDown(double a) 计算朝负无穷大方向的下一个数字。- 参数:
-
a
- 要计算邻居的数字 - 返回:
- a朝负无穷大方向的邻居
-
nextDown
public static float nextDown(float a) 计算朝负无穷大方向的下一个数字。- 参数:
-
a
- 要计算邻居的数字 - 返回:
- a朝负无穷大方向的邻居 </
-
clamp
public static int clamp(int value, int inf, int sup) Clamp a value within an interval.- 参数:
-
value
- value to clamp -
inf
- lower bound of the clamping interval -
sup
- upper bound of the clamping interval - 返回:
- value clamped within [inf; sup], or value if already within bounds.
- 从以下版本开始:
- 3.0
-
clamp
public static long clamp(long value, long inf, long sup) Clamp a value within an interval.- 参数:
-
value
- value to clamp -
inf
- lower bound of the clamping interval -
sup
- upper bound of the clamping interval - 返回:
- value clamped within [inf; sup], or value if already within bounds.
- 从以下版本开始:
- 3.0
-
clamp
public static int clamp(long value, int inf, int sup) Clamp a value within an interval.- 参数:
-
value
- value to clamp -
inf
- lower bound of the clamping interval -
sup
- upper bound of the clamping interval - 返回:
- value clamped within [inf; sup], or value if already within bounds.
- 从以下版本开始:
- 3.0
-
clamp
public static float clamp(float value, float inf, float sup) Clamp a value within an interval.This method assumes -0.0 is below +0.0
- 参数:
-
value
- value to clamp -
inf
- lower bound of the clamping interval -
sup
- upper bound of the clamping interval - 返回:
- value clamped within [inf; sup], or value if already within bounds.
- 从以下版本开始:
- 3.0
-
clamp
public static double clamp(double value, double inf, double sup) Clamp a value within an interval.This method assumes -0.0 is below +0.0
- 参数:
-
value
- value to clamp -
inf
- lower bound of the clamping interval -
sup
- upper bound of the clamping interval - 返回:
- value clamped within [inf; sup], or value if already within bounds.
- 从以下版本开始:
- 3.0
-
random
public static double random()Returns a pseudo-random number between 0.0 and 1.0.Note: this implementation currently delegates to
Math.random()
- 返回:
- a random number between 0.0 and 1.0
-
exp
public static double exp(double x) Exponential function. Computes exp(x), function result is nearly rounded. It will be correctly rounded to the theoretical value for 99.9% of input values, otherwise it will have a 1 ULP error. Method: Lookup intVal = exp(int(x)) Lookup fracVal = exp(int(x-int(x) / 1024.0) * 1024.0 ); Compute z as the exponential of the remaining bits by a polynomial minus one exp(x) = intVal * fracVal * (1 + z) Accuracy: Calculation is done with 63 bits of precision, so result should be correctly rounded for 99.9% of input values, with less than 1 ULP error otherwise.- 参数:
-
x
- a double - 返回:
- double ex
-
expm1
public static double expm1(double x) Compute exp(x) - 1- 参数:
-
x
- number to compute shifted exponential - 返回:
- exp(x) - 1
-
log
public static double log(double x) Natural logarithm.- 参数:
-
x
- a double - 返回:
- log(x)
-
log1p
public static double log1p(double x) Computes log(1 + x).- 参数:
-
x
- Number. - 返回:
-
log(1 + x)
.
-
log10
public static double log10(double x) Compute the base 10 logarithm.- 参数:
-
x
- a number - 返回:
- log10(x)
-
log
public static double log(double base, double x) Computes the logarithm in a given base. ReturnsNaN
if either argument is negative. Ifbase
is 0 andx
is positive, 0 is returned. Ifbase
is positive andx
is 0,Double.NEGATIVE_INFINITY
is returned. If both arguments are 0, the result isNaN
.- 参数:
-
base
- Base of the logarithm, must be greater than 0. -
x
- Argument, must be greater than 0. - 返回:
-
the value of the logarithm, i.e. the number
y
such thatbasey = x
.
-
pow
public static double pow(double x, double y) Power function. Compute x^y.- 参数:
-
x
- a double -
y
- a double - 返回:
- double
-
pow
public static double pow(double d, int e) Raise a double to an int power.- 参数:
-
d
- Number to raise. -
e
- Exponent. - 返回:
- de
-
pow
public static double pow(double d, long e) Raise a double to a long power.- 参数:
-
d
- Number to raise. -
e
- Exponent. - 返回:
- de
-
sin
public static double sin(double x) Sine function.- 参数:
-
x
- Argument. - 返回:
- sin(x)
-
cos
public static double cos(double x) Cosine function.- 参数:
-
x
- Argument. - 返回:
- cos(x)
-
sinCos
Combined Sine and Cosine function.- 参数:
-
x
- Argument. - 返回:
- [sin(x), cos(x)]
-
sinCos
Combined Sine and Cosine function.- 类型参数:
-
T
- the type of the field element - 参数:
-
x
- Argument. - 返回:
- [sin(x), cos(x)]
- 从以下版本开始:
- 1.4
-
tan
public static double tan(double x) Tangent function.- 参数:
-
x
- Argument. - 返回:
- tan(x)
-
atan
public static double atan(double x) Arctangent function- 参数:
-
x
- a number - 返回:
- atan(x)
-
atan2
public static double atan2(double y, double x) Two arguments arctangent function- 参数:
-
y
- ordinate -
x
- abscissa - 返回:
-
phase angle of point (x,y) between
-PI
andPI
-
asin
public static double asin(double x) Compute the arc sine of a number.- 参数:
-
x
- number on which evaluation is done - 返回:
- arc sine of x
-
acos
public static double acos(double x) Compute the arc cosine of a number.- 参数:
-
x
- number on which evaluation is done - 返回:
- arc cosine of x
-
cbrt
public static double cbrt(double x) Compute the cubic root of a number.- 参数:
-
x
- number on which evaluation is done - 返回:
- cubic root of x
-
toRadians
public static double toRadians(double x) Convert degrees to radians, with error of less than 0.5 ULP- 参数:
-
x
- angle in degrees - 返回:
- x converted into radians
-
toDegrees
public static double toDegrees(double x) Convert radians to degrees, with error of less than 0.5 ULP- 参数:
-
x
- angle in radians - 返回:
- x converted into degrees
-
abs
public static int abs(int x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
- abs(x)
-
abs
public static long abs(long x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
- abs(x)
-
absExact
public static int absExact(int x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
-
abs(x), or throws an exception for
Integer.MIN_VALUE
- 从以下版本开始:
- 2.0
-
absExact
public static long absExact(long x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
-
abs(x), or throws an exception for
Long.MIN_VALUE
- 从以下版本开始:
- 2.0
-
abs
public static float abs(float x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
- abs(x)
- 从以下版本开始:
- 2.0
-
abs
public static double abs(double x) Absolute value.- 参数:
-
x
- number from which absolute value is requested - 返回:
- abs(x)
-
negateExact
public static int negateExact(int x) Negates the argument.- 参数:
-
x
- number from which opposite value is requested - 返回:
-
-x, or throws an exception for
Integer.MIN_VALUE
- 从以下版本开始:
- 2.0
-
negateExact
public static long negateExact(long x) Negates the argument.- 参数:
-
x
- number from which opposite value is requested - 返回:
-
-x, or throws an exception for
Long.MIN_VALUE
- 从以下版本开始:
- 2.0
-
ulp
public static double ulp(double x) Compute least significant bit (Unit in Last Position) for a number.- 参数:
-
x
- number from which ulp is requested - 返回:
- ulp(x)
-
ulp
public static float ulp(float x) Compute least significant bit (Unit in Last Position) for a number.- 参数:
-
x
- number from which ulp is requested - 返回:
- ulp(x)
-
scalb
public static double scalb(double d, int n) Multiply a double number by a power of 2.- 参数:
-
d
- number to multiply -
n
- power of 2 - 返回:
- d × 2n
-
scalb
public static float scalb(float f, int n) Multiply a float number by a power of 2.- 参数:
-
f
- number to multiply -
n
- power of 2 - 返回:
- f × 2n
-
nextAfter
public static double nextAfter(double d, double direction) 获取一个数字之后的下一个可表示的机器数,沿着另一个数字的方向移动。排序如下(递增):
- -无穷大
- -最大值
- -最小值
- -0.0
- +0.0
- +最小值
- +最大值
- +无穷大
如果参数相等,则返回第二个参数。
如果
direction
大于d
,则返回严格大于d
的最小可表示的机器数;如果小于,则返回严格小于d
的最大可表示的数。如果
d
是无穷大且方向不会使其返回有限数,则返回不变。- 参数:
-
d
- 基础数字 -
direction
- (唯一重要的是direction
大于或小于d
) - 返回:
- 指定方向上的下一个可表示的机器数
-
nextAfter
public static float nextAfter(float f, double direction) 获取一个数字之后的下一个可表示的机器数,沿着另一个数字的方向移动。* 排序如下(递增):
- -无穷大
- -最大值
- -最小值
- -0.0
- +0.0
- +最小值
- +最大值
- +无穷大
如果参数相等,则返回第二个参数。
如果
direction
大于f
,则返回严格大于f
的最小可表示的机器数;如果小于,则返回严格小于f
的最大可表示的数。如果
f
是无穷大且方向不会使其返回有限数,则返回不变。- 参数:
-
f
- 基础数字 -
direction
- (唯一重要的是direction
大于或小于f
) - 返回:
- 指定方向上的下一个可表示的机器数
-
floor
public static double floor(double x) 获取小于x的最大整数。- 参数:
-
x
- 请求floor的数字 - 返回:
- 一个双精度数f,使得f是整数f <= x < f + 1.0
-
ceil
public static double ceil(double x) 获取大于x的最小整数。- 参数:
-
x
- 请求ceil的数字 - 返回:
- 一个双精度数c,使得c是整数c - 1.0 < x <= c
-
rint
public static double rint(double x) 获取最接近x的整数,如果x恰好处于两个整数之间,则取偶数。- 参数:
-
x
- 请求最接近的整数的数字 - 返回:
- 一个双精度数r,使得r是整数r - 0.5 <= x <= r + 0.5
-
round
public static long round(double x) 获取最接近x的long型数。- 参数:
-
x
- 请求最接近的long型数的数字 - 返回:
- 最接近x的long型数
-
round
public static int round(float x) 获取最接近x的int型数。- 参数:
-
x
- 请求最接近的int型数的数字 - 返回:
- 最接近x的int型数
-
min
public static int min(int a, int b) 计算两个值的最小值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回a,否则返回b
-
min
public static long min(long a, long b) 计算两个值的最小值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回a,否则返回b
-
min
public static float min(float a, float b) 计算两个值的最小值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回a,否则返回b
-
min
public static double min(double a, double b) 计算两个值的最小值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回a,否则返回b
-
max
public static int max(int a, int b) 计算两个值的最大值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回b,否则返回a
-
max
public static long max(long a, long b) 计算两个值的最大值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回b,否则返回a
-
max
public static float max(float a, float b) 计算两个值的最大值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回b,否则返回a
-
max
public static double max(double a, double b) 计算两个值的最大值- 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果a小于或等于b,则返回b,否则返回a
-
hypot
public static double hypot(double x, double y) 返回三角形的斜边,其两边为x
和y
- sqrt(x2 +y2)
避免中间溢出或下溢。- 如果任一参数为无穷大,则结果为正无穷大。
- 否则,如果任一参数为NaN,则结果为NaN。
- 参数:
-
x
- 一个值 -
y
- 一个值 - 返回:
- sqrt(x2 +y2)
-
IEEEremainder
public static double IEEEremainder(double dividend, double divisor) 根据IEEE 754标准计算余数。余数值在数学上等于
x - y*n
,其中n
是最接近商x/y
的精确数学值的整数。如果两个数学整数与x/y
等距,则n
是偶数。- 如果任一操作数为NaN,则结果为NaN。
- 如果结果不是NaN,则结果的符号等于被除数的符号。
- 如果被除数是无穷大,或者除数是零,或者两者都是,则结果为NaN。
- 如果被除数是有限的且除数是无穷大,则结果等于被除数。
- 如果被除数是零且除数是有限的,则结果等于被除数。
- 参数:
-
dividend
- 被除数 -
divisor
- 除数 - 返回:
- 余数,四舍五入
-
toIntExact
将long型数转换为整数,检测溢出- 参数:
-
n
- 要转换为int的数字 - 返回:
- 如果没有溢出发生,则具有与n相同值的整数
- 抛出:
-
MathRuntimeException
- 如果n无法容纳到int中
-
incrementExact
递增一个数字,检测溢出。- 参数:
-
n
- 要递增的数字 - 返回:
- 如果没有溢出发生,则n+1
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
incrementExact
递增一个数字,检测溢出。- 参数:
-
n
- 要递增的数字 - 返回:
- 如果没有溢出发生,则n+1
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
decrementExact
递减一个数字,检测溢出。- 参数:
-
n
- 要递减的数字 - 返回:
- 如果没有溢出发生,则n-1
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
decrementExact
递减一个数字,检测溢出。- 参数:
-
n
- 要递减的数字 - 返回:
- 如果没有溢出发生,则n-1
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
addExact
两个数字相加,检测溢出。- 参数:
-
a
- 要相加的第一个数字 -
b
- 要相加的第二个数字 - 返回:
- 如果没有溢出发生,则a+b
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
addExact
两个数字相加,检测溢出。- 参数:
-
a
- 要相加的第一个数字 -
b
- 要相加的第二个数字 - 返回:
- 如果没有溢出发生,则a+b
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
subtractExact
public static int subtractExact(int a, int b) 两个数字相减,检测溢出。- 参数:
-
a
- 第一个数字 -
b
- 从a中减去的第二个数字 - 返回:
- 如果没有溢出发生,则a-b
- 抛出:
-
MathRuntimeException
- 如果发生溢出
-
subtractExact
public static long subtractExact(long a, long b) 两个数字相减,检测溢出。- 参数:
-
a
- 第一个数字 -
b
- 从a中减去的第二个数字
-
multiplyExact
public static int multiplyExact(int a, int b) Multiply two numbers, detecting overflows.- 参数:
-
a
- first number to multiply -
b
- second number to multiply - 返回:
- a*b if no overflows occur
- 抛出:
-
MathRuntimeException
- if an overflow occurs
-
multiplyExact
public static long multiplyExact(long a, int b) Multiply two numbers, detecting overflows.- 参数:
-
a
- first number to multiply -
b
- second number to multiply - 返回:
- a*b if no overflows occur
- 抛出:
-
MathRuntimeException
- if an overflow occurs - 从以下版本开始:
- 1.3
-
multiplyExact
public static long multiplyExact(long a, long b) Multiply two numbers, detecting overflows.- 参数:
-
a
- first number to multiply -
b
- second number to multiply - 返回:
- a*b if no overflows occur
- 抛出:
-
MathRuntimeException
- if an overflow occurs
-
multiplyFull
public static long multiplyFull(int a, int b) Multiply two integers and give an exact result without overflow.- 参数:
-
a
- first factor -
b
- second factor - 返回:
- a * b exactly
- 从以下版本开始:
- 1.3
-
multiplyHigh
public static long multiplyHigh(long a, long b) Multiply two long integers and give the 64 most significant bits of the result.Beware that as Java primitive long are always considered to be signed, there are some intermediate values
a
andb
for whicha * b
exceedsLong.MAX_VALUE
but this method will still return 0l. This happens for example fora = 2³¹
andb = 2³²
asa * b = 2⁶³ = Long.MAX_VALUE + 1
, so it exceeds the max value for a long, but still fits in 64 bits, so this method correctly returns 0l in this case, but multiplication result would be considered negative (and in fact equal toLong.MIN_VALUE
- 参数:
-
a
- first factor -
b
- second factor - 返回:
- a * b / 264
- 从以下版本开始:
- 1.3
-
unsignedMultiplyHigh
public static long unsignedMultiplyHigh(long a, long b) Multiply two long unsigned integers and give the 64 most significant bits of the unsigned result.Beware that as Java primitive long are always considered to be signed, there are some intermediate values
a
andb
for whicha * b
exceedsLong.MAX_VALUE
but this method will still return 0l. This happens for example fora = 2³¹
andb = 2³²
asa * b = 2⁶³ = Long.MAX_VALUE + 1
, so it exceeds the max value for a long, but still fits in 64 bits, so this method correctly returns 0l in this case, but multiplication result would be considered negative (and in fact equal toLong.MIN_VALUE
- 参数:
-
a
- first factor -
b
- second factor - 返回:
- a * b / 264
- 从以下版本开始:
- 3.0
-
divideExact
public static int divideExact(int x, int y) Divide two integers, checking for overflow.- 参数:
-
x
- dividend -
y
- divisor - 返回:
- x / y
- 抛出:
-
MathRuntimeException
- if an overflow occurs - 从以下版本开始:
- 3.0
-
divideExact
public static long divideExact(long x, long y) Divide two long integers, checking for overflow.- 参数:
-
x
- dividend -
y
- divisor - 返回:
- x / y
- 抛出:
-
MathRuntimeException
- if an overflow occurs - 从以下版本开始:
- 3.0
-
ceilDiv
Finds q such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer division when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
q such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
ceilDivExact
Finds q such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer division when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
q such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 or if a ==Integer.MIN_VALUE
and b = -1 - 从以下版本开始:
- 3.0
-
ceilDiv
Finds q such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer division when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
q such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
ceilDivExact
Finds q such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer division when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
q such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 or if a ==Long.MIN_VALUE
and b = -1 - 从以下版本开始:
- 3.0
-
ceilDiv
Finds q such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer division when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
q such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
ceilMod
Finds r such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer modulo when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
r such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
ceilMod
Finds r such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer modulo when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
r such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
ceilMod
Finds r such thata = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
.This methods returns the same value as integer modulo when a and b are opposite signs, but returns a different value when they are same (i.e. q is positive).
- 参数:
-
a
- dividend -
b
- divisor - 返回:
-
r such that
a = q b + r
withb < r <= 0
ifb > 0
and0 <= r < b
ifb < 0
- 抛出:
-
MathRuntimeException
- if b == 0 - 从以下版本开始:
- 3.0
-
floorDiv
找到q,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数除法相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
q,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 另请参阅:
-
floorDivExact
找到q,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数除法相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
q,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0或者如果a ==Integer.MIN_VALUE
并且 b = -1 - 从以下版本开始:
- 3.0
- 另请参阅:
-
floorDiv
找到q,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数除法相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
q,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 从以下版本开始:
- 1.3
- 另请参阅:
-
floorDiv
找到q,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数除法相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
q,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 另请参阅:
-
floorDivExact
找到q,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数除法相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
q,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0或者如果a ==Long.MIN_VALUE
并且 b = -1 - 从以下版本开始:
- 3.0
- 另请参阅:
-
floorMod
找到r,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数模除相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
r,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 另请参阅:
-
floorMod
public static int floorMod(long a, int b) 找到r,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数模除相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
r,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 从以下版本开始:
- 1.3
- 另请参阅:
-
floorMod
public static long floorMod(long a, long b) 找到r,使得a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
。当a和b具有相同符号时,此方法返回与整数模除相同的值,但当它们具有相反符号时返回不同的值(即q为负)。
- 参数:
-
a
- 被除数 -
b
- 除数 - 返回:
-
r,使得
a = q b + r
,其中0 <= r < b
,如果b > 0
,并且b < r <= 0
,如果b < 0
- 抛出:
-
MathRuntimeException
- 如果b == 0 - 另请参阅:
-
copySign
public static double copySign(double magnitude, double sign) 返回第一个参数,其符号与第二个参数相同。NaN的sign
参数被视为正数。- 参数:
-
magnitude
- 要返回的值 -
sign
- 用于返回值的符号 - 返回:
-
具有与
sign
参数相同符号的幅度
-
copySign
public static float copySign(float magnitude, float sign) 返回第一个参数,其符号与第二个参数相同。NaN的sign
参数被视为正数。- 参数:
-
magnitude
- 要返回的值 -
sign
- 用于返回值的符号 - 返回:
-
具有与
sign
参数相同符号的幅度
-
getExponent
public static int getExponent(double d) 返回双精度数的指数,去除偏差。对于形式为2x的双精度数,无偏指数正好是x。
- 参数:
-
d
- 请求指数的数字 - 返回:
- IEEE754表示中d的指数,不带偏差
-
getExponent
public static int getExponent(float f) 返回浮点数的指数,去除偏差。对于形式为2x的浮点数,无偏指数正好是x。
- 参数:
-
f
- 请求指数的数字 - 返回:
- IEEE754表示中d的指数,不带偏差
-
fma
public static double fma(double a, double b, double c) 计算融合乘加操作a * b + c。此方法在Java 9的常规
Math
和StrictMath
方法中引入,然后为了一致性添加到Hipparchus中。然而,- 参数:
-
a
- first factor -
b
- second factor -
c
- additive term - 返回:
- a * b + c, using extended precision in the multiplication
- 从以下版本开始:
- 1.3
- 另请参阅:
-
fma
public static float fma(float a, float b, float c) 计算融合乘加操作 a * b + c。该方法在Java 9中与常规的
Math
和StrictMath
方法中引入,然后为了一致性添加到Hipparchus中。然而,在Hipparchus中还有一个更通用的方法,也允许在多个项之间重复这个计算:MathArrays.linearCombination(double[], double[])
。在大多数情况下,应该优先选择线性组合方法。- 参数:
-
a
- 第一个因子 -
b
- 第二个因子 -
c
- 加法项 - 返回:
- a * b + c,使用乘法中的扩展精度
- 另请参阅:
-
sqrt
计算一个数的平方根。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 要评估的数字 - 返回:
- a 的平方根
- 从以下版本开始:
- 1.3
-
cosh
计算一个数的双曲余弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要评估的数字 - 返回:
- x 的双曲余弦
- 从以下版本开始:
- 1.3
-
sinh
计算一个数的双曲正弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要评估的数字 - 返回:
- x 的双曲正弦
- 从以下版本开始:
- 1.3
-
tanh
计算一个数的双曲正切。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要评估的数字 - 返回:
- x 的双曲正切
- 从以下版本开始:
- 1.3
-
acosh
计算一个数的反双曲余弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 要评估的数字 - 返回:
- a 的反双曲余弦
- 从以下版本开始:
- 1.3
-
asinh
计算一个数的反双曲正弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 要评估的数字 - 返回:
- a 的反双曲正弦
- 从以下版本开始:
- 1.3
-
atanh
计算一个数的反双曲正切。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 要评估的数字 - 返回:
- a 的反双曲正切
- 从以下版本开始:
- 1.3
-
sign
计算一个数的符号。对于负数,符号为-1,对于正数,符号为+1,否则为0,对于复数,它在单位圆上延伸(相当于z/|z|,对于0和NaN有特殊处理)- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 要评估的数字 - 返回:
- -1.0、-0.0、+0.0、+1.0或NaN,取决于a的符号
- 从以下版本开始:
- 2.0
-
exp
指数函数。计算exp(x),函数结果几乎四舍五入。对于99.9%的输入值,它将正确舍入到理论值,否则将有1 ULP误差。方法:查找intVal = exp(int(x)) 查找fracVal = exp(int(x-int(x) / 1024.0) * 1024.0 ); 通过多项式减一计算剩余位的指数部分 z exp(x) = intVal * fracVal * (1 + z) 精度:计算精度为63位,因此对于99.9%的输入值,结果应该正确舍入,否则误差不超过1 ULP。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个双精度数 - 返回:
- double ex
- 从以下版本开始:
- 1.3
-
expm1
计算exp(x) - 1- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要计算的数的移位指数 - 返回:
- exp(x) - 1
- 从以下版本开始:
- 1.3
-
log
自然对数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个双精度数 - 返回:
- log(x)
- 从以下版本开始:
- 1.3
-
log1p
计算log(1 + x)。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 数字 - 返回:
-
log(1 + x)
。 - 从以下版本开始:
- 1.3
-
log10
计算以10为底的对数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个数字 - 返回:
- log10(x)
- 从以下版本开始:
- 1.3
-
pow
幂函数。计算 xy。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个双精度数 -
y
- 一个双精度数 - 返回:
- xy
- 从以下版本开始:
- 1.3
-
pow
幂函数。计算 xy。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个双精度数 -
y
- 一个双精度数 - 返回:
- xy
- 从以下版本开始:
- 1.7
-
pow
将一个双精度数提升为整数次幂。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
d
- 要提升的数字 -
e
- 指数 - 返回:
- de
- 从以下版本开始:
- 1.3
-
sin
正弦函数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 参数 - 返回:
- sin(x)
- 从以下版本开始:
- 1.3
-
cos
余弦函数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 参数 - 返回:
- cos(x)
- 从以下版本开始:
- 1.3
-
tan
正切函数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 参数 - 返回:
- tan(x)
- 从以下版本开始:
- 1.3
-
atan
反正切函数- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个数字 - 返回:
- atan(x)
- 从以下版本开始:
- 1.3
-
atan2
两个参数的反正切函数- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
y
- 纵坐标 -
x
- 横坐标 - 返回:
-
点(x,y)的相位角,介于
-PI
和PI
之间 - 从以下版本开始:
- 1.3
-
asin
计算一个数的反正弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要评估的数字 - 返回:
- x 的反正弦
- 从以下版本开始:
- 1.3
-
acos
计算一个数的反余弦。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 要评估的数字 - 返回:
-
cbrt
Compute the cubic root of a number.- 类型参数:
-
T
- the type of the field element - 参数:
-
x
- number on which evaluation is done - 返回:
- cubic root of x
- 从以下版本开始:
- 1.3
-
norm
Norm.- 类型参数:
-
T
- the type of the field element - 参数:
-
x
- number from which norm is requested - 返回:
- norm(x)
- 从以下版本开始:
- 2.0
-
abs
Absolute value.- 类型参数:
-
T
- the type of the field element - 参数:
-
x
- number from which absolute value is requested - 返回:
- abs(x)
- 从以下版本开始:
- 2.0
-
toRadians
Convert degrees to radians, with error of less than 0.5 ULP- 类型参数:
-
T
- the type of the field element - 参数:
-
x
- angle in degrees - 返回:
- x converted into radians
-
toDegrees
Convert radians to degrees, with error of less than 0.5 ULP- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 弧度角 - 返回:
- 转换为度的 x
-
scalb
将一个双精度数乘以 2 的幂。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
d
- 要乘的数 -
n
- 2 的幂 - 返回:
- d × 2n
- 从以下版本开始:
- 1.3
-
ulp
计算一个数字的最低有效位(最后一位单位)。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 请求 ulp 的数字 - 返回:
- ulp(x)
- 从以下版本开始:
- 2.0
-
floor
获取小于 x 的最大整数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 请求 floor 的数字 - 返回:
- 一个双精度数 f,使得 f 是整数 f <= x < f + 1.0
- 从以下版本开始:
- 1.3
-
ceil
获取大于 x 的最小整数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 请求 ceil 的数字 - 返回:
- 一个双精度数 c,使得 c 是整数 c - 1.0 < x <= c
- 从以下版本开始:
- 1.3
-
rint
获取最接近 x 的整数,如果 x 恰好处于两个整数之间,则取偶数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 请求最接近整数的数字 - 返回:
- 一个双精度数 r,使得 r 是整数 r - 0.5 <= x <= r + 0.5
- 从以下版本开始:
- 1.3
-
round
获取最接近 x 的 long 值。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 请求最接近 long 的数字 - 返回:
- 最接近 x 的 long 值
- 从以下版本开始:
- 1.3
-
min
计算两个值的最小值- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果 a 小于等于 b,则返回 a,否则返回 b
- 从以下版本开始:
- 1.3
-
min
计算两个值的最小值- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果 a 小于等于 b,则返回 a,否则返回 b
- 从以下版本开始:
- 1.3
-
max
计算两个值的最大值- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果 a 小于等于 b,则返回 b,否则返回 a
- 从以下版本开始:
- 1.3
-
max
计算两个值的最大值- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
a
- 第一个值 -
b
- 第二个值 - 返回:
- 如果 a 小于等于 b,则返回 b,否则返回 a
- 从以下版本开始:
- 1.3
-
hypot
返回一个三角形的斜边,两边分别为x
和y
- sqrt(x2 +y2)
避免中间溢出或下溢。- 如果任一参数为无穷大,则结果为正无穷大。
- 否则,如果任一参数为 NaN,则结果为 NaN。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
x
- 一个值 -
y
- 一个值 - 返回:
- sqrt(x2 +y2)
- 从以下版本开始:
- 1.3
-
IEEEremainder
根据 IEEE 754 标准计算余数。余数值在数学上等于
x - y*n
,其中n
是最接近商x/y
的精确数学值的数学整数。如果两个数学整数与x/y
等距,则n
是偶数。- 如果任一操作数为 NaN,则结果为 NaN。
- 如果结果不是 NaN,则结果的符号等于被除数的符号。
- 如果被除数是无穷大,或除数是零,或两者都是,则结果为 NaN。
- 如果被除数是有限的且除数是无穷大,则结果等于被除数。
- 如果被除数是零且除数是有限的,则结果等于被除数。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
dividend
- 被除数 -
divisor
- 除数 - 返回:
- 余数,四舍五入
- 从以下版本开始:
- 1.3
-
IEEEremainder
根据 IEEE 754 标准计算余数。余数值在数学上等于
x - y*n
,其中n
是最接近商x/y
的精确数学值的数学整数。如果两个数学整数与x/y
等距,则n
是偶数。- 如果任一操作数为 NaN,则结果为 NaN。
- 如果结果不是 NaN,则结果的符号等于被除数的符号。
- 如果被除数是无穷大,或除数是零,或两者都是,则结果为 NaN。
- 如果被除数是有限的且除数是无穷大,则结果等于被除数。
- 如果被除数是零且除数是有限的,则结果等于被除数。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
dividend
- 被除数 -
divisor
- 除数 - 返回:
- 余数,四舍五入
- 从以下版本开始:
- 1.3
-
copySign
返回第一个参数,其符号与第二个参数相同。NaN 的sign
参数被视为正数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
magnitude
- 要返回的值 -
sign
- 返回值的符号 - 返回:
-
具有与
sign
参数相同符号的幅度 - 从以下版本开始:
- 1.3
-
copySign
返回第一个参数,其符号与第二个参数相同。NaN 的sign
参数被视为正数。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
magnitude
- 要返回的值 -
sign
- 返回值的符号 - 返回:
-
具有与
sign
参数相同符号的幅度 - 从以下版本开始:
- 1.3
-