public final class StrictMath extends Object
In contrast to class Math, the methods in this class return exactly
the same results on all platforms. Algorithms based on these methods thus
behave the same (e.g. regarding numerical convergence) on all platforms,
complying with the slogan "write once, run everywhere". On the other side,
the implementation of class StrictMath may be less efficient than that of
class Math, as class StrictMath cannot utilize platform specific features
such as an extended precision math co-processors.
The methods in this class are specified using the "Freely Distributable Math Library" (fdlibm), version 5.3.
| Modifier and Type | Field and Description |
|---|---|
static double |
E
The double value closest to e, the base of the natural logarithm.
|
static double |
PI
The double value closest to pi, the ratio of a circle's circumference to
its diameter.
|
| Modifier and Type | Method and Description |
|---|---|
static double |
abs(double d)
Returns the absolute value of the argument.
|
static float |
abs(float f)
Returns the absolute value of the argument.
|
static int |
abs(int i)
Returns the absolute value of the argument.
|
static long |
abs(long l)
Returns the absolute value of the argument.
|
static double |
acos(double x)
Returns the closest double approximation of the arc cosine of the
argument within the range
[0..pi]. |
static double |
asin(double x)
Returns the closest double approximation of the arc sine of the argument
within the range
[-pi/2..pi/2]. |
static double |
atan(double x)
Returns the closest double approximation of the arc tangent of the
argument within the range
[-pi/2..pi/2]. |
static double |
atan2(double y,
double x)
Returns the closest double approximation of the arc tangent of
y/x within the range [-pi..pi]. |
static double |
cbrt(double x)
Returns the closest double approximation of the cube root of the
argument.
|
static double |
ceil(double d)
Returns the double conversion of the most negative (closest to negative
infinity) integer value greater than or equal to the argument.
|
static double |
copySign(double magnitude,
double sign)
Returns a double with the given magnitude and the sign of
sign. |
static float |
copySign(float magnitude,
float sign)
Returns a float with the given magnitude and the sign of
sign. |
static double |
cos(double d)
Returns the closest double approximation of the cosine of the argument.
|
static double |
cosh(double x)
Returns the closest double approximation of the hyperbolic cosine of the
argument.
|
static double |
exp(double x)
Returns the closest double approximation of the raising "e" to the power
of the argument.
|
static double |
expm1(double x)
Returns the closest double approximation of
e
d- 1. |
static double |
floor(double d)
Returns the double conversion of the most positive (closest to positive
infinity) integer less than or equal to the argument.
|
static int |
getExponent(double d)
Returns the exponent of double
d. |
static int |
getExponent(float f)
Returns the exponent of float
f. |
static double |
hypot(double x,
double y)
Returns
sqrt(x2+
y2). |
static double |
IEEEremainder(double x,
double y)
Returns the remainder of dividing
x by y using the IEEE
754 rules. |
static double |
log(double x)
Returns the closest double approximation of the natural logarithm of the
argument.
|
static double |
log10(double x)
Returns the closest double approximation of the base 10 logarithm of the
argument.
|
static double |
log1p(double x)
Returns the closest double approximation of the natural logarithm of the
sum of the argument and 1.
|
static double |
max(double d1,
double d2)
Returns the most positive (closest to positive infinity) of the two
arguments.
|
static float |
max(float f1,
float f2)
Returns the most positive (closest to positive infinity) of the two
arguments.
|
static int |
max(int i1,
int i2)
Returns the most positive (closest to positive infinity) of the two
arguments.
|
static long |
max(long l1,
long l2)
Returns the most positive (closest to positive infinity) of the two
arguments.
|
static double |
min(double d1,
double d2)
Returns the most negative (closest to negative infinity) of the two
arguments.
|
static float |
min(float f1,
float f2)
Returns the most negative (closest to negative infinity) of the two
arguments.
|
static int |
min(int i1,
int i2)
Returns the most negative (closest to negative infinity) of the two
arguments.
|
static long |
min(long l1,
long l2)
Returns the most negative (closest to negative infinity) of the two
arguments.
|
static double |
nextAfter(double start,
double direction)
Returns the next double after
start in the given
direction. |
static float |
nextAfter(float start,
double direction)
Returns the next float after
start in the given direction
. |
static double |
nextUp(double d)
Returns the next double larger than
d. |
static float |
nextUp(float f)
Returns the next float larger than
f. |
static double |
pow(double x,
double y)
Returns the closest double approximation of the result of raising
x to the power of y. |
static double |
random()
Returns a pseudo-random number between 0.0 (inclusive) and 1.0
(exclusive).
|
static double |
rint(double d)
Returns the double conversion of the result of rounding the argument to
an integer.
|
static long |
round(double d)
Returns the result of rounding the argument to an integer.
|
static int |
round(float f)
Returns the result of rounding the argument to an integer.
|
static double |
scalb(double d,
int scaleFactor)
Returns
d * 2^scaleFactor. |
static float |
scalb(float d,
int scaleFactor)
Returns
d * 2^scaleFactor. |
static double |
signum(double d)
Returns the signum function of the argument.
|
static float |
signum(float f)
Returns the signum function of the argument.
|
static double |
sin(double d)
Returns the closest double approximation of the sine of the argument.
|
static double |
sinh(double x)
Returns the closest double approximation of the hyperbolic sine of the
argument.
|
static double |
sqrt(double d)
Returns the closest double approximation of the square root of the
argument.
|
static double |
tan(double d)
Returns the closest double approximation of the tangent of the argument.
|
static double |
tanh(double x)
Returns the closest double approximation of the hyperbolic tangent of the
argument.
|
static double |
toDegrees(double angrad)
Returns the measure in degrees of the supplied radian angle.
|
static double |
toRadians(double angdeg)
Returns the measure in radians of the supplied degree angle.
|
static double |
ulp(double d)
Returns the argument's ulp (unit in the last place).
|
static float |
ulp(float f)
Returns the argument's ulp (unit in the last place).
|
public static final double E
public static final double PI
public static double abs(double d)
Special cases:
abs(-0.0) = +0.0abs(+infinity) = +infinityabs(-infinity) = +infinityabs(NaN) = NaNpublic static float abs(float f)
Special cases:
abs(-0.0) = +0.0abs(+infinity) = +infinityabs(-infinity) = +infinityabs(NaN) = NaNpublic static int abs(int i)
If the argument is Integer.MIN_VALUE, Integer.MIN_VALUE
is returned.
public static long abs(long l)
If the argument is Long.MIN_VALUE, Long.MIN_VALUE is
returned.
public static double acos(double x)
[0..pi].
Special cases:
acos((anything > 1) = NaNacos((anything < -1) = NaNacos(NaN) = NaNx - the value to compute arc cosine of.public static double asin(double x)
[-pi/2..pi/2].
Special cases:
asin((anything > 1)) = NaNasin((anything < -1)) = NaNasin(NaN) = NaNx - the value whose arc sine has to be computed.public static double atan(double x)
[-pi/2..pi/2].
Special cases:
atan(+0.0) = +0.0atan(-0.0) = -0.0atan(+infinity) = +pi/2atan(-infinity) = -pi/2atan(NaN) = NaNx - the value whose arc tangent has to be computed.public static double atan2(double y,
double x)
y/x within the range [-pi..pi]. This is the angle of the
polar representation of the rectangular coordinates (x,y).
Special cases:
atan2((anything), NaN ) = NaN;atan2(NaN , (anything) ) = NaN;atan2(+0.0, +(anything but NaN)) = +0.0atan2(-0.0, +(anything but NaN)) = -0.0atan2(+0.0, -(anything but NaN)) = +piatan2(-0.0, -(anything but NaN)) = -piatan2(+(anything but 0 and NaN), 0) = +pi/2atan2(-(anything but 0 and NaN), 0) = -pi/2atan2(+(anything but infinity and NaN), +infinity) =
+0.0atan2(-(anything but infinity and NaN), +infinity) =
-0.0atan2(+(anything but infinity and NaN), -infinity) = +piatan2(-(anything but infinity and NaN), -infinity) = -piatan2(+infinity, +infinity ) = +pi/4atan2(-infinity, +infinity ) = -pi/4atan2(+infinity, -infinity ) = +3pi/4atan2(-infinity, -infinity ) = -3pi/4atan2(+infinity, (anything but,0, NaN, and infinity))
= +pi/2atan2(-infinity, (anything but,0, NaN, and infinity))
= -pi/2y - the numerator of the value whose atan has to be computed.x - the denominator of the value whose atan has to be computed.y/x.public static double cbrt(double x)
Special cases:
cbrt(+0.0) = +0.0cbrt(-0.0) = -0.0cbrt(+infinity) = +infinitycbrt(-infinity) = -infinitycbrt(NaN) = NaNx - the value whose cube root has to be computed.public static double ceil(double d)
Special cases:
ceil(+0.0) = +0.0ceil(-0.0) = -0.0ceil((anything in range (-1,0)) = -0.0ceil(+infinity) = +infinityceil(-infinity) = -infinityceil(NaN) = NaNd - the double value whose ceiling will be computed.public static double cosh(double x)
Special cases:
cosh(+infinity) = +infinitycosh(-infinity) = +infinitycosh(NaN) = NaNx - the value whose hyperbolic cosine has to be computed.public static double cos(double d)
Special cases:
cos(+infinity) = NaNcos(-infinity) = NaNcos(NaN) = NaNd - the angle whose cosine has to be computed, in radians.public static double exp(double x)
Special cases:
exp(+infinity) = +infinityexp(-infinity) = +0.0exp(NaN) = NaNx - the value whose exponential has to be computed.public static double expm1(double x)
e
d- 1. If the argument is very close to 0, it is
much more accurate to use expm1(d)+1 than exp(d) (due to
cancellation of significant digits).
Special cases:
expm1(+0.0) = +0.0expm1(-0.0) = -0.0expm1(+infinity) = +infinityexpm1(-infinity) = -1.0expm1(NaN) = NaNx - the value to compute the ed
- 1 of.ed- 1 value of the
argument.public static double floor(double d)
Special cases:
floor(+0.0) = +0.0floor(-0.0) = -0.0floor(+infinity) = +infinityfloor(-infinity) = -infinityfloor(NaN) = NaNd - the double value whose floor will be computed.public static double hypot(double x,
double y)
sqrt(x2+
y2). The final result is without
medium underflow or overflow.
Special cases:
hypot(+infinity, (anything including NaN)) = +infinityhypot(-infinity, (anything including NaN)) = +infinityhypot((anything including NaN), +infinity) = +infinityhypot((anything including NaN), -infinity) = +infinityhypot(NaN, NaN) = NaNx - a double number.y - a double number.sqrt(x2+
y2) value of the
arguments.public static double IEEEremainder(double x,
double y)
x by y using the IEEE
754 rules. The result is x-round(x/p)*p where round(x/p)
is the nearest integer (rounded to even), but without numerical
cancellation problems.
Special cases:
IEEEremainder((anything), 0) = NaNIEEEremainder(+infinity, (anything)) = NaNIEEEremainder(-infinity, (anything)) = NaNIEEEremainder(NaN, (anything)) = NaNIEEEremainder((anything), NaN) = NaNIEEEremainder(x, +infinity) = x where x is anything but
+/-infinityIEEEremainder(x, -infinity) = x where x is anything but
+/-infinityx - the numerator of the operation.y - the denominator of the operation.x/y.public static double log(double x)
Special cases:
log(+0.0) = -infinitylog(-0.0) = -infinitylog((anything < 0) = NaNlog(+infinity) = +infinitylog(-infinity) = NaNlog(NaN) = NaNx - the value whose log has to be computed.public static double log10(double x)
Special cases:
log10(+0.0) = -infinitylog10(-0.0) = -infinitylog10((anything < 0) = NaNlog10(+infinity) = +infinitylog10(-infinity) = NaNlog10(NaN) = NaNx - the value whose base 10 log has to be computed.public static double log1p(double x)
log1p(d) than log(1.0+d) (due to
numerical cancellation).
Special cases:
log1p(+0.0) = +0.0log1p(-0.0) = -0.0log1p((anything < 1)) = NaNlog1p(-1.0) = -infinitylog1p(+infinity) = +infinitylog1p(-infinity) = NaNlog1p(NaN) = NaNx - the value to compute the ln(1+d) of.public static double max(double d1,
double d2)
Special cases:
max(NaN, (anything)) = NaNmax((anything), NaN) = NaNmax(+0.0, -0.0) = +0.0max(-0.0, +0.0) = +0.0public static float max(float f1,
float f2)
Special cases:
max(NaN, (anything)) = NaNmax((anything), NaN) = NaNmax(+0.0, -0.0) = +0.0max(-0.0, +0.0) = +0.0public static int max(int i1,
int i2)
public static long max(long l1,
long l2)
public static double min(double d1,
double d2)
Special cases:
min(NaN, (anything)) = NaNmin((anything), NaN) = NaNmin(+0.0, -0.0) = -0.0min(-0.0, +0.0) = -0.0public static float min(float f1,
float f2)
Special cases:
min(NaN, (anything)) = NaNmin((anything), NaN) = NaNmin(+0.0, -0.0) = -0.0min(-0.0, +0.0) = -0.0public static int min(int i1,
int i2)
public static long min(long l1,
long l2)
public static double pow(double x,
double y)
x to the power of y.
Special cases:
pow((anything), +0.0) = 1.0pow((anything), -0.0) = 1.0pow(x, 1.0) = xpow((anything), NaN) = NaNpow(NaN, (anything except 0)) = NaNpow(+/-(|x| > 1), +infinity) = +infinitypow(+/-(|x| > 1), -infinity) = +0.0pow(+/-(|x| < 1), +infinity) = +0.0pow(+/-(|x| < 1), -infinity) = +infinitypow(+/-1.0 , +infinity) = NaNpow(+/-1.0 , -infinity) = NaNpow(+0.0, (+anything except 0, NaN)) = +0.0pow(-0.0, (+anything except 0, NaN, odd integer)) = +0.0pow(+0.0, (-anything except 0, NaN)) = +infinitypow(-0.0, (-anything except 0, NAN, odd integer)) =
+infinitypow(-0.0, (odd integer)) = -pow( +0 , (odd integer) )pow(+infinity, (+anything except 0, NaN)) = +infinitypow(+infinity, (-anything except 0, NaN)) = +0.0pow(-infinity, (anything)) = -pow(0, (-anything))pow((-anything), (integer)) =
pow(-1,(integer))*pow(+anything,integer)pow((-anything except 0 and infinity), (non-integer))
= NANx - the base of the operation.y - the exponent of the operation.x to the power of y.public static double random()
public static double rint(double d)
Special cases:
rint(+0.0) = +0.0rint(-0.0) = -0.0rint(+infinity) = +infinityrint(-infinity) = -infinityrint(NaN) = NaNd - the value to be rounded.public static long round(double d)
(long) Math.floor(d+0.5).
Special cases:
round(+0.0) = +0.0round(-0.0) = +0.0round((anything > Long.MAX_VALUE) = Long.MAX_VALUEround((anything < Long.MIN_VALUE) = Long.MIN_VALUEround(+infinity) = Long.MAX_VALUEround(-infinity) = Long.MIN_VALUEround(NaN) = +0.0d - the value to be rounded.public static int round(float f)
(int) Math.floor(f+0.5).
Special cases:
round(+0.0) = +0.0round(-0.0) = +0.0round((anything > Integer.MAX_VALUE) = Integer.MAX_VALUEround((anything < Integer.MIN_VALUE) = Integer.MIN_VALUEround(+infinity) = Integer.MAX_VALUEround(-infinity) = Integer.MIN_VALUEround(NaN) = +0.0f - the value to be rounded.public static double signum(double d)
Special cases:
signum(+0.0) = +0.0signum(-0.0) = -0.0signum(+infinity) = +1.0signum(-infinity) = -1.0signum(NaN) = NaNd - the value whose signum has to be computed.public static float signum(float f)
Special cases:
signum(+0.0) = +0.0signum(-0.0) = -0.0signum(+infinity) = +1.0signum(-infinity) = -1.0signum(NaN) = NaNf - the value whose signum has to be computed.public static double sinh(double x)
Special cases:
sinh(+0.0) = +0.0sinh(-0.0) = -0.0sinh(+infinity) = +infinitysinh(-infinity) = -infinitysinh(NaN) = NaNx - the value whose hyperbolic sine has to be computed.public static double sin(double d)
Special cases:
sin(+0.0) = +0.0sin(-0.0) = -0.0sin(+infinity) = NaNsin(-infinity) = NaNsin(NaN) = NaNd - the angle whose sin has to be computed, in radians.public static double sqrt(double d)
Special cases:
sqrt(+0.0) = +0.0sqrt(-0.0) = -0.0sqrt( (anything < 0) ) = NaNsqrt(+infinity) = +infinitysqrt(NaN) = NaNpublic static double tan(double d)
Special cases:
tan(+0.0) = +0.0tan(-0.0) = -0.0tan(+infinity) = NaNtan(-infinity) = NaNtan(NaN) = NaNd - the angle whose tangent has to be computed, in radians.public static double tanh(double x)
Special cases:
tanh(+0.0) = +0.0tanh(-0.0) = -0.0tanh(+infinity) = +1.0tanh(-infinity) = -1.0tanh(NaN) = NaNx - the value whose hyperbolic tangent has to be computed.public static double toDegrees(double angrad)
angrad * 180 / pi.
Special cases:
toDegrees(+0.0) = +0.0toDegrees(-0.0) = -0.0toDegrees(+infinity) = +infinitytoDegrees(-infinity) = -infinitytoDegrees(NaN) = NaNangrad - an angle in radians.public static double toRadians(double angdeg)
angdeg / 180 * pi.
Special cases:
toRadians(+0.0) = +0.0toRadians(-0.0) = -0.0toRadians(+infinity) = +infinitytoRadians(-infinity) = -infinitytoRadians(NaN) = NaNangdeg - an angle in degrees.public static double ulp(double d)
x,
ulp(-x) == ulp(x).
Special cases:
ulp(+0.0) = Double.MIN_VALUEulp(-0.0) = Double.MIN_VALUEulp(+infinity) = infinityulp(-infinity) = infinityulp(NaN) = NaNd - the floating-point value to compute ulp of.public static float ulp(float f)
x,
ulp(-x) == ulp(x).
Special cases:
ulp(+0.0) = Float.MIN_VALUEulp(-0.0) = Float.MIN_VALUEulp(+infinity) = infinityulp(-infinity) = infinityulp(NaN) = NaNf - the floating-point value to compute ulp of.public static double copySign(double magnitude,
double sign)
sign.
If sign is NaN, the sign of the result is positive.public static float copySign(float magnitude,
float sign)
sign. If
sign is NaN, the sign of the result is positive.public static int getExponent(float f)
f.public static int getExponent(double d)
d.public static double nextAfter(double start,
double direction)
start in the given
direction.public static float nextAfter(float start,
double direction)
start in the given direction
.public static double nextUp(double d)
d.public static float nextUp(float f)
f.public static double scalb(double d,
int scaleFactor)
d * 2^scaleFactor. The result may be rounded.public static float scalb(float d,
int scaleFactor)
d * 2^scaleFactor. The result may be rounded.