程序包 org.hipparchus.util

类 FastMath

java.lang.Object
org.hipparchus.util.FastMath

public class FastMath extends Object
更快、更准确、更便携的大规模计算替代方案,用于替代 MathStrictMath

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 final double
    E
    自然对数的底数 e。
    static final double
    PI
    圆周率 PI,圆周长与直径的比率。
  • 方法概要

    修饰符和类型
    方法
    说明
    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>>
    T
    abs(T x)
    绝对值。
    static int
    absExact(int x)
    绝对值。
    static long
    absExact(long x)
    绝对值。
    static double
    acos(double x)
    计算一个数的反余弦。
    static <T extends CalculusFieldElement<T>>
    T
    acos(T x)
    计算一个数的反余弦。
    static double
    acosh(double a)
    计算一个数的反双曲余弦。
    static <T extends CalculusFieldElement<T>>
    T
    acosh(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>>
    T
    asin(T x)
    计算一个数的反正弦。
    static double
    asinh(double a)
    计算一个数的反双曲正弦。
    static <T extends CalculusFieldElement<T>>
    T
    asinh(T a)
    计算一个数的反双曲正弦。
    static double
    atan(double x)
    反正切函数
    static <T extends CalculusFieldElement<T>>
    T
    atan(T x)
    反正切函数
    static double
    atan2(double y, double x)
    两参数反正切函数
    static <T extends CalculusFieldElement<T>>
    T
    atan2(T y, T x)
    两参数反正切函数
    static double
    atanh(double a)
    计算一个数的反双曲正切。
    static <T extends CalculusFieldElement<T>>
    T
    atanh(T a)
    计算一个数的反双曲正切。
    static double
    cbrt(double x)
    计算一个数的立方根。
    static <T extends CalculusFieldElement<T>>
    T
    cbrt(T x)
    计算一个数的立方根。
    static double
    ceil(double x)
    获取大于 x 的最小整数。
    static <T extends CalculusFieldElement<T>>
    T
    ceil(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>>
    T
    copySign(T magnitude, double sign)
    返回第一个参数,其符号与第二个参数相同。
    static <T extends CalculusFieldElement<T>>
    T
    copySign(T magnitude, T sign)
    返回第一个参数,其符号与第二个参数相同。
    static double
    cos(double x)
    余弦函数。
    static <T extends CalculusFieldElement<T>>
    T
    cos(T x)
    余弦函数。
    static double
    cosh(double x)
    计算一个数的双曲余弦。
    static <T extends CalculusFieldElement<T>>
    T
    cosh(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>>
    T
    exp(T x)
    指数函数。
    static double
    expm1(double x)
    计算 exp(x) - 1
    static <T extends CalculusFieldElement<T>>
    T
    expm1(T x)
    计算 exp(x) - 1
    static double
    floor(double x)
    获取小于 x 的最大整数。
    static <T extends CalculusFieldElement<T>>
    T
    floor(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 that a = q b + r with 0 <= r < b if b > 0 and b < r <= 0 if b < 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)
    返回三角形的斜边,其两边为xy - sqrt(x2 +y2),避免中间溢出或下溢。
    static <T extends CalculusFieldElement<T>>
    T
    hypot(T x, T y)
    返回三角形的斜边,其两边为xy - sqrt(x2 +y2),避免中间溢出或下溢。
    static double
    IEEEremainder(double dividend, double divisor)
    根据IEEE 754标准计算余数。
    static <T extends CalculusFieldElement<T>>
    T
    IEEEremainder(T dividend, double divisor)
    根据IEEE 754标准计算余数。
    static <T extends CalculusFieldElement<T>>
    T
    IEEEremainder(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>>
    T
    log(T x)
    自然对数。
    static double
    log10(double x)
    计算以10为底的对数。
    static <T extends CalculusFieldElement<T>>
    T
    log10(T x)
    计算以10为底的对数。
    static double
    log1p(double x)
    计算log(1 + x)。
    static <T extends CalculusFieldElement<T>>
    T
    log1p(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>>
    T
    max(T a, double b)
    计算两个值的最大值
    static <T extends CalculusFieldElement<T>>
    T
    max(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>>
    T
    min(T a, double b)
    计算两个值的最小值
    static <T extends CalculusFieldElement<T>>
    T
    min(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>>
    double
    norm(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>>
    T
    pow(T x, double y)
    幂函数。
    static <T extends CalculusFieldElement<T>>
    T
    pow(T d, int e)
    将双精度数提高到整数幂。
    static <T extends CalculusFieldElement<T>>
    T
    pow(T x, T y)
    幂函数。
    static double
    random()
    返回0.0和1.0之间的伪随机数。
    static double
    rint(double x)
    获取最接近x的整数,如果x恰好处于两个整数之间,则取偶数。
    static <T extends CalculusFieldElement<T>>
    T
    rint(T x)
    获取最接近x的整数,如果x恰好处于两个整数之间,则取偶数。
    static long
    round(double x)
    获取最接近x的长整数。
    static int
    round(float x)
    获取最接近x的整数。
    static <T extends CalculusFieldElement<T>>
    long
    round(T x)
    获取最接近x的长整数。
    static double
    scalb(double d, int n)
    将双精度数乘以2的幂。
    static float
    scalb(float f, int n)
    将浮点数乘以2的幂。
    static <T extends CalculusFieldElement<T>>
    T
    scalb(T d, int n)
    将双精度数乘以2的幂。
    static <T extends CalculusFieldElement<T>>
    T
    sign(T a)
    计算数字的符号。
    static double
    signum(double a)
    计算数字的符号。
    static float
    signum(float a)
    计算数字的符号。
    static double
    sin(double x)
    正弦函数。
    static <T extends CalculusFieldElement<T>>
    T
    sin(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>>
    T
    sinh(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>>
    T
    sqrt(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>>
    T
    tan(T x)
    正切函数。
    static double
    tanh(double x)
    计算数字的双曲正切。
    static <T extends CalculusFieldElement<T>>
    T
    tanh(T x)
    计算数字的双曲正切。
    static double
    toDegrees(double x)
    将弧度转换为度,误差小于0.5 ULP
    static <T extends CalculusFieldElement<T>>
    T
    toDegrees(T x)
    将弧度转换为度,误差小于0.5 ULP
    static int
    toIntExact(long n)
    将长整数转换为整数,检测溢出
    static double
    toRadians(double x)
    将度转换为弧度,误差小于0.5 ULP
    static <T extends CalculusFieldElement<T>>
    T
    toRadians(T x)
    将度转换为弧度,误差小于0.5 ULP
    static double
    ulp(double x)
    计算数字的最低有效位(最后一位单位)。
    static float
    ulp(float x)
    计算数字的最低有效位(最后一位单位)。
    static <T extends CalculusFieldElement<T>>
    T
    ulp(T x)
    计算数字的最低有效位(最后一位单位)。
    static long
    unsignedMultiplyHigh(long a, long b)
    乘法两个长无符号整数并给出无符号结果的64个最高有效位。

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细资料

    • 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

      public static SinhCosh sinhCosh(double x)
      组合双曲正弦和双曲余弦函数。
      参数:
      x - 参数。
      返回:
      [sinh(x), cosh(x)]
    • sinhCosh

      public static <T extends CalculusFieldElement<T>> FieldSinhCosh<T> sinhCosh(T x)
      组合双曲正弦和双曲余弦函数。
      类型参数:
      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. Returns NaN if either argument is negative. If base is 0 and x is positive, 0 is returned. If base is positive and x is 0, Double.NEGATIVE_INFINITY is returned. If both arguments are 0, the result is NaN.
      参数:
      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 that basey = 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

      public static SinCos sinCos(double x)
      Combined Sine and Cosine function.
      参数:
      x - Argument.
      返回:
      [sin(x), cos(x)]
    • sinCos

      public static <T extends CalculusFieldElement<T>> FieldSinCos<T> sinCos(T x)
      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 and PI
    • 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)
      返回三角形的斜边,其两边为xy - 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

      public static int toIntExact(long n) throws MathRuntimeException
      将long型数转换为整数,检测溢出
      参数:
      n - 要转换为int的数字
      返回:
      如果没有溢出发生,则具有与n相同值的整数
      抛出:
      MathRuntimeException - 如果n无法容纳到int中
    • incrementExact

      public static int incrementExact(int n) throws MathRuntimeException
      递增一个数字,检测溢出。
      参数:
      n - 要递增的数字
      返回:
      如果没有溢出发生,则n+1
      抛出:
      MathRuntimeException - 如果发生溢出
    • incrementExact

      public static long incrementExact(long n) throws MathRuntimeException
      递增一个数字,检测溢出。
      参数:
      n - 要递增的数字
      返回:
      如果没有溢出发生,则n+1
      抛出:
      MathRuntimeException - 如果发生溢出
    • decrementExact

      public static int decrementExact(int n) throws MathRuntimeException
      递减一个数字,检测溢出。
      参数:
      n - 要递减的数字
      返回:
      如果没有溢出发生,则n-1
      抛出:
      MathRuntimeException - 如果发生溢出
    • decrementExact

      public static long decrementExact(long n) throws MathRuntimeException
      递减一个数字,检测溢出。
      参数:
      n - 要递减的数字
      返回:
      如果没有溢出发生,则n-1
      抛出:
      MathRuntimeException - 如果发生溢出
    • addExact

      public static int addExact(int a, int b) throws MathRuntimeException
      两个数字相加,检测溢出。
      参数:
      a - 要相加的第一个数字
      b - 要相加的第二个数字
      返回:
      如果没有溢出发生,则a+b
      抛出:
      MathRuntimeException - 如果发生溢出
    • addExact

      public static long addExact(long a, long b) throws MathRuntimeException
      两个数字相加,检测溢出。
      参数:
      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 and b for which a * b exceeds Long.MAX_VALUE but this method will still return 0l. This happens for example for a = 2³¹ and b = 2³² as a * 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 to Long.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 and b for which a * b exceeds Long.MAX_VALUE but this method will still return 0l. This happens for example for a = 2³¹ and b = 2³² as a * 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 to Long.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

      public static int ceilDiv(int a, int b) throws MathRuntimeException
      Finds q such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • ceilDivExact

      public static int ceilDivExact(int a, int b) throws MathRuntimeException
      Finds q such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0 or if a == Integer.MIN_VALUE and b = -1
      从以下版本开始:
      3.0
    • ceilDiv

      public static long ceilDiv(long a, long b) throws MathRuntimeException
      Finds q such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • ceilDivExact

      public static long ceilDivExact(long a, long b) throws MathRuntimeException
      Finds q such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0 or if a == Long.MIN_VALUE and b = -1
      从以下版本开始:
      3.0
    • ceilDiv

      public static long ceilDiv(long a, int b) throws MathRuntimeException
      Finds q such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • ceilMod

      public static int ceilMod(int a, int b) throws MathRuntimeException
      Finds r such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • ceilMod

      public static int ceilMod(long a, int b) throws MathRuntimeException
      Finds r such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • ceilMod

      public static long ceilMod(long a, long b) throws MathRuntimeException
      Finds r such that a = q b + r with b < r <= 0 if b > 0 and 0 <= r < b if b < 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 with b < r <= 0 if b > 0 and 0 <= r < b if b < 0
      抛出:
      MathRuntimeException - if b == 0
      从以下版本开始:
      3.0
    • floorDiv

      public static int floorDiv(int a, int b) throws MathRuntimeException
      找到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

      public static int floorDivExact(int a, int b) throws MathRuntimeException
      找到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

      public static long floorDiv(long a, int b) throws MathRuntimeException
      找到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

      public static long floorDiv(long a, long b) throws MathRuntimeException
      找到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

      public static long floorDivExact(long a, long b) throws MathRuntimeException
      找到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

      public static int floorMod(int a, int b) throws MathRuntimeException
      找到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的常规MathStrictMath方法中引入,然后为了一致性添加到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中与常规的MathStrictMath方法中引入,然后为了一致性添加到Hipparchus中。然而,在Hipparchus中还有一个更通用的方法,也允许在多个项之间重复这个计算:MathArrays.linearCombination(double[], double[])。在大多数情况下,应该优先选择线性组合方法。

      参数:
      a - 第一个因子
      b - 第二个因子
      c - 加法项
      返回:
      a * b + c,使用乘法中的扩展精度
      另请参阅:
    • sqrt

      public static <T extends CalculusFieldElement<T>> T sqrt(T a)
      计算一个数的平方根。
      类型参数:
      T - 字段元素的类型
      参数:
      a - 要评估的数字
      返回:
      a 的平方根
      从以下版本开始:
      1.3
    • cosh

      public static <T extends CalculusFieldElement<T>> T cosh(T x)
      计算一个数的双曲余弦。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要评估的数字
      返回:
      x 的双曲余弦
      从以下版本开始:
      1.3
    • sinh

      public static <T extends CalculusFieldElement<T>> T sinh(T x)
      计算一个数的双曲正弦。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要评估的数字
      返回:
      x 的双曲正弦
      从以下版本开始:
      1.3
    • tanh

      public static <T extends CalculusFieldElement<T>> T tanh(T x)
      计算一个数的双曲正切。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要评估的数字
      返回:
      x 的双曲正切
      从以下版本开始:
      1.3
    • acosh

      public static <T extends CalculusFieldElement<T>> T acosh(T a)
      计算一个数的反双曲余弦。
      类型参数:
      T - 字段元素的类型
      参数:
      a - 要评估的数字
      返回:
      a 的反双曲余弦
      从以下版本开始:
      1.3
    • asinh

      public static <T extends CalculusFieldElement<T>> T asinh(T a)
      计算一个数的反双曲正弦。
      类型参数:
      T - 字段元素的类型
      参数:
      a - 要评估的数字
      返回:
      a 的反双曲正弦
      从以下版本开始:
      1.3
    • atanh

      public static <T extends CalculusFieldElement<T>> T atanh(T a)
      计算一个数的反双曲正切。
      类型参数:
      T - 字段元素的类型
      参数:
      a - 要评估的数字
      返回:
      a 的反双曲正切
      从以下版本开始:
      1.3
    • sign

      public static <T extends CalculusFieldElement<T>> T sign(T a)
      计算一个数的符号。对于负数,符号为-1,对于正数,符号为+1,否则为0,对于复数,它在单位圆上延伸(相当于z/|z|,对于0和NaN有特殊处理)
      类型参数:
      T - 字段元素的类型
      参数:
      a - 要评估的数字
      返回:
      -1.0、-0.0、+0.0、+1.0或NaN,取决于a的符号
      从以下版本开始:
      2.0
    • exp

      public static <T extends CalculusFieldElement<T>> T exp(T x)
      指数函数。计算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

      public static <T extends CalculusFieldElement<T>> T expm1(T x)
      计算exp(x) - 1
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要计算的数的移位指数
      返回:
      exp(x) - 1
      从以下版本开始:
      1.3
    • log

      public static <T extends CalculusFieldElement<T>> T log(T x)
      自然对数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个双精度数
      返回:
      log(x)
      从以下版本开始:
      1.3
    • log1p

      public static <T extends CalculusFieldElement<T>> T log1p(T x)
      计算log(1 + x)。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 数字
      返回:
      log(1 + x)
      从以下版本开始:
      1.3
    • log10

      public static <T extends CalculusFieldElement<T>> T log10(T x)
      计算以10为底的对数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个数字
      返回:
      log10(x)
      从以下版本开始:
      1.3
    • pow

      public static <T extends CalculusFieldElement<T>> T pow(T x, T y)
      幂函数。计算 xy
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个双精度数
      y - 一个双精度数
      返回:
      xy
      从以下版本开始:
      1.3
    • pow

      public static <T extends CalculusFieldElement<T>> T pow(T x, double y)
      幂函数。计算 xy
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个双精度数
      y - 一个双精度数
      返回:
      xy
      从以下版本开始:
      1.7
    • pow

      public static <T extends CalculusFieldElement<T>> T pow(T d, int e)
      将一个双精度数提升为整数次幂。
      类型参数:
      T - 字段元素的类型
      参数:
      d - 要提升的数字
      e - 指数
      返回:
      de
      从以下版本开始:
      1.3
    • sin

      public static <T extends CalculusFieldElement<T>> T sin(T x)
      正弦函数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 参数
      返回:
      sin(x)
      从以下版本开始:
      1.3
    • cos

      public static <T extends CalculusFieldElement<T>> T cos(T x)
      余弦函数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 参数
      返回:
      cos(x)
      从以下版本开始:
      1.3
    • tan

      public static <T extends CalculusFieldElement<T>> T tan(T x)
      正切函数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 参数
      返回:
      tan(x)
      从以下版本开始:
      1.3
    • atan

      public static <T extends CalculusFieldElement<T>> T atan(T x)
      反正切函数
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个数字
      返回:
      atan(x)
      从以下版本开始:
      1.3
    • atan2

      public static <T extends CalculusFieldElement<T>> T atan2(T y, T x)
      两个参数的反正切函数
      类型参数:
      T - 字段元素的类型
      参数:
      y - 纵坐标
      x - 横坐标
      返回:
      点(x,y)的相位角,介于-PIPI之间
      从以下版本开始:
      1.3
    • asin

      public static <T extends CalculusFieldElement<T>> T asin(T x)
      计算一个数的反正弦。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要评估的数字
      返回:
      x 的反正弦
      从以下版本开始:
      1.3
    • acos

      public static <T extends CalculusFieldElement<T>> T acos(T x)
      计算一个数的反余弦。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 要评估的数字
      返回:
    • cbrt

      public static <T extends CalculusFieldElement<T>> T cbrt(T x)
      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

      public static <T extends CalculusFieldElement<T>> double norm(T x)
      Norm.
      类型参数:
      T - the type of the field element
      参数:
      x - number from which norm is requested
      返回:
      norm(x)
      从以下版本开始:
      2.0
    • abs

      public static <T extends CalculusFieldElement<T>> T abs(T x)
      Absolute value.
      类型参数:
      T - the type of the field element
      参数:
      x - number from which absolute value is requested
      返回:
      abs(x)
      从以下版本开始:
      2.0
    • toRadians

      public static <T extends CalculusFieldElement<T>> T toRadians(T x)
      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

      public static <T extends CalculusFieldElement<T>> T toDegrees(T x)
      Convert radians to degrees, with error of less than 0.5 ULP
      类型参数:
      T - 字段元素的类型
      参数:
      x - 弧度角
      返回:
      转换为度的 x
    • scalb

      public static <T extends CalculusFieldElement<T>> T scalb(T d, int n)
      将一个双精度数乘以 2 的幂。
      类型参数:
      T - 字段元素的类型
      参数:
      d - 要乘的数
      n - 2 的幂
      返回:
      d × 2n
      从以下版本开始:
      1.3
    • ulp

      public static <T extends CalculusFieldElement<T>> T ulp(T x)
      计算一个数字的最低有效位(最后一位单位)。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 请求 ulp 的数字
      返回:
      ulp(x)
      从以下版本开始:
      2.0
    • floor

      public static <T extends CalculusFieldElement<T>> T floor(T x)
      获取小于 x 的最大整数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 请求 floor 的数字
      返回:
      一个双精度数 f,使得 f 是整数 f <= x < f + 1.0
      从以下版本开始:
      1.3
    • ceil

      public static <T extends CalculusFieldElement<T>> T ceil(T x)
      获取大于 x 的最小整数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 请求 ceil 的数字
      返回:
      一个双精度数 c,使得 c 是整数 c - 1.0 < x <= c
      从以下版本开始:
      1.3
    • rint

      public static <T extends CalculusFieldElement<T>> T rint(T x)
      获取最接近 x 的整数,如果 x 恰好处于两个整数之间,则取偶数。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 请求最接近整数的数字
      返回:
      一个双精度数 r,使得 r 是整数 r - 0.5 <= x <= r + 0.5
      从以下版本开始:
      1.3
    • round

      public static <T extends CalculusFieldElement<T>> long round(T x)
      获取最接近 x 的 long 值。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 请求最接近 long 的数字
      返回:
      最接近 x 的 long 值
      从以下版本开始:
      1.3
    • min

      public static <T extends CalculusFieldElement<T>> T min(T a, T b)
      计算两个值的最小值
      类型参数:
      T - 字段元素的类型
      参数:
      a - 第一个值
      b - 第二个值
      返回:
      如果 a 小于等于 b,则返回 a,否则返回 b
      从以下版本开始:
      1.3
    • min

      public static <T extends CalculusFieldElement<T>> T min(T a, double b)
      计算两个值的最小值
      类型参数:
      T - 字段元素的类型
      参数:
      a - 第一个值
      b - 第二个值
      返回:
      如果 a 小于等于 b,则返回 a,否则返回 b
      从以下版本开始:
      1.3
    • max

      public static <T extends CalculusFieldElement<T>> T max(T a, T b)
      计算两个值的最大值
      类型参数:
      T - 字段元素的类型
      参数:
      a - 第一个值
      b - 第二个值
      返回:
      如果 a 小于等于 b,则返回 b,否则返回 a
      从以下版本开始:
      1.3
    • max

      public static <T extends CalculusFieldElement<T>> T max(T a, double b)
      计算两个值的最大值
      类型参数:
      T - 字段元素的类型
      参数:
      a - 第一个值
      b - 第二个值
      返回:
      如果 a 小于等于 b,则返回 b,否则返回 a
      从以下版本开始:
      1.3
    • hypot

      public static <T extends CalculusFieldElement<T>> T hypot(T x, T y)
      返回一个三角形的斜边,两边分别为 xy - sqrt(x2 +y2)
      避免中间溢出或下溢。
      • 如果任一参数为无穷大,则结果为正无穷大。
      • 否则,如果任一参数为 NaN,则结果为 NaN。
      类型参数:
      T - 字段元素的类型
      参数:
      x - 一个值
      y - 一个值
      返回:
      sqrt(x2 +y2)
      从以下版本开始:
      1.3
    • IEEEremainder

      public static <T extends CalculusFieldElement<T>> T IEEEremainder(T dividend, double divisor)
      根据 IEEE 754 标准计算余数。

      余数值在数学上等于 x - y*n,其中 n 是最接近商 x/y 的精确数学值的数学整数。如果两个数学整数与 x/y 等距,则 n 是偶数。

      • 如果任一操作数为 NaN,则结果为 NaN。
      • 如果结果不是 NaN,则结果的符号等于被除数的符号。
      • 如果被除数是无穷大,或除数是零,或两者都是,则结果为 NaN。
      • 如果被除数是有限的且除数是无穷大,则结果等于被除数。
      • 如果被除数是零且除数是有限的,则结果等于被除数。
      类型参数:
      T - 字段元素的类型
      参数:
      dividend - 被除数
      divisor - 除数
      返回:
      余数,四舍五入
      从以下版本开始:
      1.3
    • IEEEremainder

      public static <T extends CalculusFieldElement<T>> T IEEEremainder(T dividend, T divisor)
      根据 IEEE 754 标准计算余数。

      余数值在数学上等于 x - y*n,其中 n 是最接近商 x/y 的精确数学值的数学整数。如果两个数学整数与 x/y 等距,则 n 是偶数。

      • 如果任一操作数为 NaN,则结果为 NaN。
      • 如果结果不是 NaN,则结果的符号等于被除数的符号。
      • 如果被除数是无穷大,或除数是零,或两者都是,则结果为 NaN。
      • 如果被除数是有限的且除数是无穷大,则结果等于被除数。
      • 如果被除数是零且除数是有限的,则结果等于被除数。
      类型参数:
      T - 字段元素的类型
      参数:
      dividend - 被除数
      divisor - 除数
      返回:
      余数,四舍五入
      从以下版本开始:
      1.3
    • copySign

      public static <T extends CalculusFieldElement<T>> T copySign(T magnitude, T sign)
      返回第一个参数,其符号与第二个参数相同。NaN 的 sign 参数被视为正数。
      类型参数:
      T - 字段元素的类型
      参数:
      magnitude - 要返回的值
      sign - 返回值的符号
      返回:
      具有与 sign 参数相同符号的幅度
      从以下版本开始:
      1.3
    • copySign

      public static <T extends CalculusFieldElement<T>> T copySign(T magnitude, double sign)
      返回第一个参数,其符号与第二个参数相同。NaN 的 sign 参数被视为正数。
      类型参数:
      T - 字段元素的类型
      参数:
      magnitude - 要返回的值
      sign - 返回值的符号
      返回:
      具有与 sign 参数相同符号的幅度
      从以下版本开始:
      1.3