Modifier and Type | Class and Description |
---|---|
static interface |
Precision.DoubleEquivalence
Interface containing comparison operations for doubles that allow values
to be considered equal even if they are not exactly equal.
|
Modifier and Type | Field and Description |
---|---|
static double |
EPSILON
Largest double-precision floating-point number such that
1 + EPSILON is numerically equal to 1. |
static double |
SAFE_MIN
Safe minimum, such that
1 / SAFE_MIN does not overflow. |
Modifier and Type | Method and Description |
---|---|
static int |
compareTo(double x,
double y,
double eps)
Compares two numbers given some amount of allowed error.
|
static int |
compareTo(double x,
double y,
int maxUlps)
Compares two numbers given some amount of allowed error.
|
static Precision.DoubleEquivalence |
doubleEquivalenceOfEpsilon(double eps)
Creates a
Precision.DoubleEquivalence instance that uses the given epsilon
value for determining equality. |
static boolean |
equals(double x,
double y)
Returns true iff they are equal as defined by
equals(x, y, 1) . |
static boolean |
equals(double x,
double y,
double eps)
Returns
true if there is no double value strictly between the
arguments or the difference between them is within the range of allowed
error (inclusive). |
static boolean |
equals(double x,
double y,
int maxUlps)
Returns true if the arguments are equal or within the range of allowed
error (inclusive).
|
static boolean |
equals(float x,
float y)
Returns true iff they are equal as defined by
equals(x, y, 1) . |
static boolean |
equals(float x,
float y,
float eps)
Returns
true if there is no float value strictly between the
arguments or the difference between them is within the range of allowed
error (inclusive). |
static boolean |
equals(float x,
float y,
int maxUlps)
Returns true if the arguments are equal or within the range of allowed
error (inclusive).
|
static boolean |
equalsIncludingNaN(double x,
double y)
Returns true if the arguments are both NaN or they are
equal as defined by
equals(x, y, 1) . |
static boolean |
equalsIncludingNaN(double x,
double y,
double eps)
Returns true if the arguments are both NaN, there are no double value strictly
between the arguments or the difference between them is within the range of allowed
error (inclusive).
|
static boolean |
equalsIncludingNaN(double x,
double y,
int maxUlps)
Returns true if both arguments are NaN or if they are equal as defined
by
equals(x, y, maxUlps) . |
static boolean |
equalsIncludingNaN(float x,
float y)
Returns true if both arguments are NaN or they are
equal as defined by
equals(x, y, 1) . |
static boolean |
equalsIncludingNaN(float x,
float y,
float eps)
Returns true if the arguments are both NaN, there are no float value strictly
between the arguments or the difference between them is within the range of allowed
error (inclusive).
|
static boolean |
equalsIncludingNaN(float x,
float y,
int maxUlps)
Returns true if both arguments are NaN or if they are equal as defined
by
equals(x, y, maxUlps) . |
static boolean |
equalsWithRelativeTolerance(double x,
double y,
double eps)
Returns
true if there is no double value strictly between the
arguments or the relative difference between them is less than or equal
to the given tolerance. |
static double |
representableDelta(double x,
double delta)
Computes a number close to
delta with the property that
(x + delta - x) is exactly machine-representable. |
static double |
round(double x,
int scale)
Rounds the given value to the specified number of decimal places.
|
static double |
round(double x,
int scale,
RoundingMode roundingMethod)
Rounds the given value to the specified number of decimal places.
|
public static final double EPSILON
Largest double-precision floating-point number such that
1 + EPSILON
is numerically equal to 1. This value is an upper
bound on the relative error due to rounding real numbers to double
precision floating-point numbers.
In IEEE 754 arithmetic, this is 2-53.
public static final double SAFE_MIN
1 / SAFE_MIN
does not overflow.
In IEEE 754 arithmetic, this is also the smallest normalized
number 2-1022.Double.MIN_NORMAL
,
Constant Field Valuespublic static int compareTo(double x, double y, double eps)
equals(x, y, eps)
x < y
x > y
NaN values are handled as if using Double.compare(double, double)
where the
returned value is:
NaN, NaN
!NaN, NaN
NaN, !NaN
x
- First value.y
- Second value.eps
- Allowed error when checking for equality.equals(double, double, double)
public static int compareTo(double x, double y, int maxUlps)
equals(x, y, maxUlps)
x < y
x > y
NaN values are handled as if using Double.compare(double, double)
where the
returned value is:
NaN, NaN
!NaN, NaN
NaN, !NaN
x
- First value.y
- Second value.maxUlps
- (maxUlps - 1)
is the number of floating point
values between x
and y
.equals(double, double, int)
public static boolean equals(float x, float y)
equals(x, y, 1)
.x
- first valuey
- second valuetrue
if the values are equal.public static boolean equalsIncludingNaN(float x, float y)
equals(x, y, 1)
.x
- first valuey
- second valuetrue
if the values are equal or both are NaN.public static boolean equals(float x, float y, float eps)
true
if there is no float value strictly between the
arguments or the difference between them is within the range of allowed
error (inclusive). Returns false
if either of the arguments
is NaN.x
- first valuey
- second valueeps
- the amount of absolute error to allow.true
if the values are equal or within range of each other.public static boolean equalsIncludingNaN(float x, float y, float eps)
x
- first valuey
- second valueeps
- the amount of absolute error to allow.true
if the values are equal or within range of each other,
or both are NaN.public static boolean equals(float x, float y, int maxUlps)
false
if either of the arguments is NaN.
Two double numbers are considered equal if there are (maxUlps - 1)
(or fewer) floating point numbers between them, i.e. two adjacent
floating point numbers are considered equal.
Adapted from Bruce Dawson.
x
- first valuey
- second valuemaxUlps
- (maxUlps - 1)
is the number of floating point
values between x
and y
.true
if there are fewer than maxUlps
floating
point values between x
and y
.public static boolean equalsIncludingNaN(float x, float y, int maxUlps)
equals(x, y, maxUlps)
.x
- first valuey
- second valuemaxUlps
- (maxUlps - 1)
is the number of floating point
values between x
and y
.true
if both arguments are NaN or if there are less than
maxUlps
floating point values between x
and y
.public static boolean equals(double x, double y)
equals(x, y, 1)
.x
- first valuey
- second valuetrue
if the values are equal.public static boolean equalsIncludingNaN(double x, double y)
equals(x, y, 1)
.x
- first valuey
- second valuetrue
if the values are equal or both are NaN.public static boolean equals(double x, double y, double eps)
true
if there is no double value strictly between the
arguments or the difference between them is within the range of allowed
error (inclusive). Returns false
if either of the arguments
is NaN.x
- First value.y
- Second value.eps
- Amount of allowed absolute error.true
if the values are equal or within range of each other.public static boolean equalsWithRelativeTolerance(double x, double y, double eps)
true
if there is no double value strictly between the
arguments or the relative difference between them is less than or equal
to the given tolerance. Returns false
if either of the arguments
is NaN.x
- First value.y
- Second value.eps
- Amount of allowed relative error.true
if the values are two adjacent floating point
numbers or they are within range of each other.public static boolean equalsIncludingNaN(double x, double y, double eps)
x
- first valuey
- second valueeps
- the amount of absolute error to allow.true
if the values are equal or within range of each other,
or both are NaN.public static boolean equals(double x, double y, int maxUlps)
false
if either of the arguments is NaN.
Two float numbers are considered equal if there are (maxUlps - 1)
(or fewer) floating point numbers between them, i.e. two adjacent
floating point numbers are considered equal.
Adapted from Bruce Dawson.
x
- first valuey
- second valuemaxUlps
- (maxUlps - 1)
is the number of floating point
values between x
and y
.true
if there are fewer than maxUlps
floating
point values between x
and y
.public static boolean equalsIncludingNaN(double x, double y, int maxUlps)
equals(x, y, maxUlps)
.x
- first valuey
- second valuemaxUlps
- (maxUlps - 1)
is the number of floating point
values between x
and y
.true
if both arguments are NaN or if there are less than
maxUlps
floating point values between x
and y
.public static double round(double x, int scale)
RoundingMode.HALF_UP
method.x
- Value to round.scale
- Number of digits to the right of the decimal point.public static double round(double x, int scale, RoundingMode roundingMethod)
BigDecimal
.
If x
is infinite or NaN
, then the value of x
is
returned unchanged, regardless of the other parameters.x
- Value to round.scale
- Number of digits to the right of the decimal point.roundingMethod
- Rounding method as defined in BigDecimal
.ArithmeticException
- if roundingMethod
is
RoundingMode.UNNECESSARY
and the specified scaling operation
would require rounding.public static double representableDelta(double x, double delta)
delta
with the property that
(x + delta - x)
is exactly machine-representable.
This is useful when computing numerical derivatives, in order to
reduce roundoff errors.x
- Value.delta
- Offset value.x + delta
and x
.public static Precision.DoubleEquivalence doubleEquivalenceOfEpsilon(double eps)
Precision.DoubleEquivalence
instance that uses the given epsilon
value for determining equality.eps
- Value to use for determining equality.Copyright © 2017–2022 The Apache Software Foundation. All rights reserved.