Methods Summary |
---|
public static native double | IEEEremainder(double x, double y)Returns the remainder of dividing {@code x} by {@code y} using the IEEE
754 rules. The result is {@code x-round(x/p)*p} where {@code round(x/p)}
is the nearest integer (rounded to even), but without numerical
cancellation problems.
Special cases:
- {@code IEEEremainder((anything), 0) = NaN}
- {@code IEEEremainder(+infinity, (anything)) = NaN}
- {@code IEEEremainder(-infinity, (anything)) = NaN}
- {@code IEEEremainder(NaN, (anything)) = NaN}
- {@code IEEEremainder((anything), NaN) = NaN}
- {@code IEEEremainder(x, +infinity) = x } where x is anything but
+/-infinity
- {@code IEEEremainder(x, -infinity) = x } where x is anything but
+/-infinity
|
public static double | abs(double d)Returns the absolute value of the argument.
Special cases:
- {@code abs(-0.0) = +0.0}
- {@code abs(+infinity) = +infinity}
- {@code abs(-infinity) = +infinity}
- {@code abs(NaN) = NaN}
long bits = Double.doubleToLongBits(d);
bits &= 0x7fffffffffffffffL;
return Double.longBitsToDouble(bits);
|
public static float | abs(float f)Returns the absolute value of the argument.
Special cases:
- {@code abs(-0.0) = +0.0}
- {@code abs(+infinity) = +infinity}
- {@code abs(-infinity) = +infinity}
- {@code abs(NaN) = NaN}
int bits = Float.floatToIntBits(f);
bits &= 0x7fffffff;
return Float.intBitsToFloat(bits);
|
public static int | abs(int i)Returns the absolute value of the argument.
If the argument is {@code Integer.MIN_VALUE}, {@code Integer.MIN_VALUE}
is returned.
return i >= 0 ? i : -i;
|
public static long | abs(long l)Returns the absolute value of the argument. If the argument is {@code
Long.MIN_VALUE}, {@code Long.MIN_VALUE} is returned.
return l >= 0 ? l : -l;
|
public static native double | acos(double d)Returns the closest double approximation of the arc cosine of the
argument within the range {@code [0..pi]}. The returned result is within
1 ulp (unit in the last place) of the real result.
Special cases:
- {@code acos((anything > 1) = NaN}
- {@code acos((anything < -1) = NaN}
- {@code acos(NaN) = NaN}
|
public static native double | asin(double d)Returns the closest double approximation of the arc sine of the argument
within the range {@code [-pi/2..pi/2]}. The returned result is within 1
ulp (unit in the last place) of the real result.
Special cases:
- {@code asin((anything > 1)) = NaN}
- {@code asin((anything < -1)) = NaN}
- {@code asin(NaN) = NaN}
|
public static native double | atan(double d)Returns the closest double approximation of the arc tangent of the
argument within the range {@code [-pi/2..pi/2]}. The returned result is
within 1 ulp (unit in the last place) of the real result.
Special cases:
- {@code atan(+0.0) = +0.0}
- {@code atan(-0.0) = -0.0}
- {@code atan(+infinity) = +pi/2}
- {@code atan(-infinity) = -pi/2}
- {@code atan(NaN) = NaN}
|
public static native double | atan2(double y, double x)Returns the closest double approximation of the arc tangent of
{@code y/x} within the range {@code [-pi..pi]}. This is the angle of the
polar representation of the rectangular coordinates (x,y). The returned
result is within 2 ulps (units in the last place) of the real result.
Special cases:
- {@code atan2((anything), NaN ) = NaN;}
- {@code atan2(NaN , (anything) ) = NaN;}
- {@code atan2(+0.0, +(anything but NaN)) = +0.0}
- {@code atan2(-0.0, +(anything but NaN)) = -0.0}
- {@code atan2(+0.0, -(anything but NaN)) = +pi}
- {@code atan2(-0.0, -(anything but NaN)) = -pi}
- {@code atan2(+(anything but 0 and NaN), 0) = +pi/2}
- {@code atan2(-(anything but 0 and NaN), 0) = -pi/2}
- {@code atan2(+(anything but infinity and NaN), +infinity)} {@code =}
{@code +0.0}
- {@code atan2(-(anything but infinity and NaN), +infinity)} {@code =}
{@code -0.0}
- {@code atan2(+(anything but infinity and NaN), -infinity) = +pi}
- {@code atan2(-(anything but infinity and NaN), -infinity) = -pi}
- {@code atan2(+infinity, +infinity ) = +pi/4}
- {@code atan2(-infinity, +infinity ) = -pi/4}
- {@code atan2(+infinity, -infinity ) = +3pi/4}
- {@code atan2(-infinity, -infinity ) = -3pi/4}
- {@code atan2(+infinity, (anything but,0, NaN, and infinity))}
{@code =} {@code +pi/2}
- {@code atan2(-infinity, (anything but,0, NaN, and infinity))}
{@code =} {@code -pi/2}
|
public static native double | cbrt(double d)Returns the closest double approximation of the cube root of the
argument.
Special cases:
- {@code cbrt(+0.0) = +0.0}
- {@code cbrt(-0.0) = -0.0}
- {@code cbrt(+infinity) = +infinity}
- {@code cbrt(-infinity) = -infinity}
- {@code cbrt(NaN) = NaN}
|
public static native double | ceil(double d)Returns the double conversion of the most negative (closest to
negative infinity) integer value which is greater than the argument.
Special cases:
- {@code ceil(+0.0) = +0.0}
- {@code ceil(-0.0) = -0.0}
- {@code ceil((anything in range (-1,0)) = -0.0}
- {@code ceil(+infinity) = +infinity}
- {@code ceil(-infinity) = -infinity}
- {@code ceil(NaN) = NaN}
|
public static native double | cos(double d)Returns the closest double approximation of the cosine of the argument.
The returned result is within 1 ulp (unit in the last place) of the real
result.
Special cases:
- {@code cos(+infinity) = NaN}
- {@code cos(-infinity) = NaN}
- {@code cos(NaN) = NaN}
|
public static native double | cosh(double d)Returns the closest double approximation of the hyperbolic cosine of the
argument. The returned result is within 2.5 ulps (units in the last
place) of the real result.
Special cases:
- {@code cosh(+infinity) = +infinity}
- {@code cosh(-infinity) = +infinity}
- {@code cosh(NaN) = NaN}
|
public static native double | exp(double d)Returns the closest double approximation of the raising "e" to the power
of the argument. The returned result is within 1 ulp (unit in the last
place) of the real result.
Special cases:
- {@code exp(+infinity) = +infinity}
- {@code exp(-infinity) = +0.0}
- {@code exp(NaN) = NaN}
|
public static native double | expm1(double d)Returns the closest double approximation of {@code e}
{@code d}{@code - 1}. If the argument is very close to 0, it is
much more accurate to use {@code expm1(d)+1} than {@code exp(d)} (due to
cancellation of significant digits). The returned result is within 1 ulp
(unit in the last place) of the real result.
For any finite input, the result is not less than -1.0. If the real
result is within 0.5 ulp of -1, -1.0 is returned.
Special cases:
- {@code expm1(+0.0) = +0.0}
- {@code expm1(-0.0) = -0.0}
- {@code expm1(+infinity) = +infinity}
- {@code expm1(-infinity) = -1.0}
- {@code expm1(NaN) = NaN}
|
public static native double | floor(double d)Returns the double conversion of the most positive (closest to positive
infinity) integer value which is less than the argument.
Special cases:
- {@code floor(+0.0) = +0.0}
- {@code floor(-0.0) = -0.0}
- {@code floor(+infinity) = +infinity}
- {@code floor(-infinity) = -infinity}
- {@code floor(NaN) = NaN}
|
public static native double | hypot(double x, double y)Returns {@code sqrt(}{@code x}{@code 2}{@code +}
{@code y}{@code 2}{@code )}. The final result is
without medium underflow or overflow. The returned result is within 1 ulp
(unit in the last place) of the real result.
Special cases:
- {@code hypot(+infinity, (anything including NaN)) = +infinity}
- {@code hypot(-infinity, (anything including NaN)) = +infinity}
- {@code hypot((anything including NaN), +infinity) = +infinity}
- {@code hypot((anything including NaN), -infinity) = +infinity}
- {@code hypot(NaN, NaN) = NaN}
|
public static native double | log(double d)Returns the closest double approximation of the natural logarithm of the
argument. The returned result is within 1 ulp (unit in the last place) of
the real result.
Special cases:
- {@code log(+0.0) = -infinity}
- {@code log(-0.0) = -infinity}
- {@code log((anything < 0) = NaN}
- {@code log(+infinity) = +infinity}
- {@code log(-infinity) = NaN}
- {@code log(NaN) = NaN}
|
public static native double | log10(double d)Returns the closest double approximation of the base 10 logarithm of the
argument. The returned result is within 1 ulp (unit in the last place) of
the real result.
Special cases:
- {@code log10(+0.0) = -infinity}
- {@code log10(-0.0) = -infinity}
- {@code log10((anything < 0) = NaN}
- {@code log10(+infinity) = +infinity}
- {@code log10(-infinity) = NaN}
- {@code log10(NaN) = NaN}
|
public static native double | log1p(double d)Returns the closest double approximation of the natural logarithm of the
sum of the argument and 1. If the argument is very close to 0, it is much
more accurate to use {@code log1p(d)} than {@code log(1.0+d)} (due to
numerical cancellation). The returned result is within 1 ulp (unit in the
last place) of the real result.
Special cases:
- {@code log1p(+0.0) = +0.0}
- {@code log1p(-0.0) = -0.0}
- {@code log1p((anything < 1)) = NaN}
- {@code log1p(-1.0) = -infinity}
- {@code log1p(+infinity) = +infinity}
- {@code log1p(-infinity) = NaN}
- {@code log1p(NaN) = NaN}
|
public static double | max(double d1, double d2)Returns the most positive (closest to positive infinity) of the two
arguments.
Special cases:
- {@code max(NaN, (anything)) = NaN}
- {@code max((anything), NaN) = NaN}
- {@code max(+0.0, -0.0) = +0.0}
- {@code max(-0.0, +0.0) = +0.0}
if (d1 > d2)
return d1;
if (d1 < d2)
return d2;
/* if either arg is NaN, return NaN */
if (d1 != d2)
return Double.NaN;
/* max( +0.0,-0.0) == +0.0 */
if (d1 == 0.0
&& ((Double.doubleToLongBits(d1) & Double.doubleToLongBits(d2)) & 0x8000000000000000L) == 0)
return 0.0;
return d1;
|
public static float | max(float f1, float f2)Returns the most positive (closest to positive infinity) of the two
arguments.
Special cases:
- {@code max(NaN, (anything)) = NaN}
- {@code max((anything), NaN) = NaN}
- {@code max(+0.0, -0.0) = +0.0}
- {@code max(-0.0, +0.0) = +0.0}
if (f1 > f2)
return f1;
if (f1 < f2)
return f2;
/* if either arg is NaN, return NaN */
if (f1 != f2)
return Float.NaN;
/* max( +0.0,-0.0) == +0.0 */
if (f1 == 0.0f
&& ((Float.floatToIntBits(f1) & Float.floatToIntBits(f2)) & 0x80000000) == 0)
return 0.0f;
return f1;
|
public static int | max(int i1, int i2)Returns the most positive (closest to positive infinity) of the two
arguments.
return i1 > i2 ? i1 : i2;
|
public static long | max(long l1, long l2)Returns the most positive (closest to positive infinity) of the two
arguments.
return l1 > l2 ? l1 : l2;
|
public static double | min(double d1, double d2)Returns the most negative (closest to negative infinity) of the two
arguments.
Special cases:
- {@code min(NaN, (anything)) = NaN}
- {@code min((anything), NaN) = NaN}
- {@code min(+0.0, -0.0) = -0.0}
- {@code min(-0.0, +0.0) = -0.0}
if (d1 > d2)
return d2;
if (d1 < d2)
return d1;
/* if either arg is NaN, return NaN */
if (d1 != d2)
return Double.NaN;
/* min( +0.0,-0.0) == -0.0 */
if (d1 == 0.0
&& ((Double.doubleToLongBits(d1) | Double.doubleToLongBits(d2)) & 0x8000000000000000l) != 0)
return 0.0 * (-1.0);
return d1;
|
public static float | min(float f1, float f2)Returns the most negative (closest to negative infinity) of the two
arguments.
Special cases:
- {@code min(NaN, (anything)) = NaN}
- {@code min((anything), NaN) = NaN}
- {@code min(+0.0, -0.0) = -0.0}
- {@code min(-0.0, +0.0) = -0.0}
if (f1 > f2)
return f2;
if (f1 < f2)
return f1;
/* if either arg is NaN, return NaN */
if (f1 != f2)
return Float.NaN;
/* min( +0.0,-0.0) == -0.0 */
if (f1 == 0.0f
&& ((Float.floatToIntBits(f1) | Float.floatToIntBits(f2)) & 0x80000000) != 0)
return 0.0f * (-1.0f);
return f1;
|
public static int | min(int i1, int i2)Returns the most negative (closest to negative infinity) of the two
arguments.
return i1 < i2 ? i1 : i2;
|
public static long | min(long l1, long l2)Returns the most negative (closest to negative infinity) of the two
arguments.
return l1 < l2 ? l1 : l2;
|
private static native double | nextafter(double x, double y)
|
private static native float | nextafterf(float x, float y)
|
public static native double | pow(double x, double y)Returns the closest double approximation of the result of raising
{@code x} to the power of {@code y}.
Special cases:
- {@code pow((anything), +0.0) = 1.0}
- {@code pow((anything), -0.0) = 1.0}
- {@code pow(x, 1.0) = x}
- {@code pow((anything), NaN) = NaN}
- {@code pow(NaN, (anything except 0)) = NaN}
- {@code pow(+/-(|x| > 1), +infinity) = +infinity}
- {@code pow(+/-(|x| > 1), -infinity) = +0.0}
- {@code pow(+/-(|x| < 1), +infinity) = +0.0}
- {@code pow(+/-(|x| < 1), -infinity) = +infinity}
- {@code pow(+/-1.0 , +infinity) = NaN}
- {@code pow(+/-1.0 , -infinity) = NaN}
- {@code pow(+0.0, (+anything except 0, NaN)) = +0.0}
- {@code pow(-0.0, (+anything except 0, NaN, odd integer)) = +0.0}
- {@code pow(+0.0, (-anything except 0, NaN)) = +infinity}
- {@code pow(-0.0, (-anything except 0, NAN, odd integer))} {@code =}
{@code +infinity}
- {@code pow(-0.0, (odd integer)) = -pow( +0 , (odd integer) )}
- {@code pow(+infinity, (+anything except 0, NaN)) = +infinity}
- {@code pow(+infinity, (-anything except 0, NaN)) = +0.0}
- {@code pow(-infinity, (anything)) = -pow(0, (-anything))}
- {@code pow((-anything), (integer))} {@code =}
{@code pow(-1,(integer))*pow(+anything,integer) }
- {@code pow((-anything except 0 and inf), (non-integer)) = NAN}
|
public static double | random()Returns a pseudo-random number between 0.0 (inclusive) and 1.0
(exclusive).
if (random == null) {
random = new java.util.Random();
}
return random.nextDouble();
|
public static native double | rint(double d)Returns the double conversion of the result of rounding the argument to
an integer. Tie breaks are rounded towards even.
Special cases:
- {@code rint(+0.0) = +0.0}
- {@code rint(-0.0) = -0.0}
- {@code rint(+infinity) = +infinity}
- {@code rint(-infinity) = -infinity}
- {@code rint(NaN) = NaN}
|
public static long | round(double d)Returns the result of rounding the argument to an integer. The result is
equivalent to {@code (long) Math.floor(d+0.5)}.
Special cases:
- {@code round(+0.0) = +0.0}
- {@code round(-0.0) = +0.0}
- {@code round((anything > Long.MAX_VALUE) = Long.MAX_VALUE}
- {@code round((anything < Long.MIN_VALUE) = Long.MIN_VALUE}
- {@code round(+infintiy) = Long.MAX_VALUE}
- {@code round(-infintiy) = Long.MIN_VALUE}
- {@code round(NaN) = +0.0}
// check for NaN
if (d != d)
return 0L;
return (long) floor(d + 0.5d);
|
public static int | round(float f)Returns the result of rounding the argument to an integer. The result is
equivalent to {@code (int) Math.floor(f+0.5)}.
Special cases:
- {@code round(+0.0) = +0.0}
- {@code round(-0.0) = +0.0}
- {@code round((anything > Integer.MAX_VALUE) = Integer.MAX_VALUE}
- {@code round((anything < Integer.MIN_VALUE) = Integer.MIN_VALUE}
- {@code round(+infintiy) = Integer.MAX_VALUE}
- {@code round(-infintiy) = Integer.MIN_VALUE}
- {@code round(NaN) = +0.0}
// check for NaN
if (f != f)
return 0;
return (int) floor(f + 0.5f);
|
public static double | signum(double d)Returns the signum function of the argument. If the argument is less than
zero, it returns -1.0. If the argument is greater than zero, 1.0 is
returned. If the argument is either positive or negative zero, the
argument is returned as result.
Special cases:
- {@code signum(+0.0) = +0.0}
- {@code signum(-0.0) = -0.0}
- {@code signum(+infinity) = +1.0}
- {@code signum(-infinity) = -1.0}
- {@code signum(NaN) = NaN}
return StrictMath.signum(d);
|
public static float | signum(float f)Returns the signum function of the argument. If the argument is less than
zero, it returns -1.0. If the argument is greater than zero, 1.0 is
returned. If the argument is either positive or negative zero, the
argument is returned as result.
Special cases:
- {@code signum(+0.0) = +0.0}
- {@code signum(-0.0) = -0.0}
- {@code signum(+infinity) = +1.0}
- {@code signum(-infinity) = -1.0}
- {@code signum(NaN) = NaN}
return StrictMath.signum(f);
|
public static native double | sin(double d)Returns the closest double approximation of the sine of the argument. The
returned result is within 1 ulp (unit in the last place) of the real
result.
Special cases:
- {@code sin(+0.0) = +0.0}
- {@code sin(-0.0) = -0.0}
- {@code sin(+infinity) = NaN}
- {@code sin(-infinity) = NaN}
- {@code sin(NaN) = NaN}
|
public static native double | sinh(double d)Returns the closest double approximation of the hyperbolic sine of the
argument. The returned result is within 2.5 ulps (units in the last
place) of the real result.
Special cases:
- {@code sinh(+0.0) = +0.0}
- {@code sinh(-0.0) = -0.0}
- {@code sinh(+infinity) = +infinity}
- {@code sinh(-infinity) = -infinity}
- {@code sinh(NaN) = NaN}
|
public static native double | sqrt(double d)Returns the closest double approximation of the square root of the
argument.
Special cases:
- {@code sqrt(+0.0) = +0.0}
- {@code sqrt(-0.0) = -0.0}
- {@code sqrt( (anything < 0) ) = NaN}
- {@code sqrt(+infinity) = +infinity}
- {@code sqrt(NaN) = NaN}
|
public static native double | tan(double d)Returns the closest double approximation of the tangent of the argument.
The returned result is within 1 ulp (unit in the last place) of the real
result.
Special cases:
- {@code tan(+0.0) = +0.0}
- {@code tan(-0.0) = -0.0}
- {@code tan(+infinity) = NaN}
- {@code tan(-infinity) = NaN}
- {@code tan(NaN) = NaN}
|
public static native double | tanh(double d)Returns the closest double approximation of the hyperbolic tangent of the
argument. The absolute value is always less than 1. The returned result
is within 2.5 ulps (units in the last place) of the real result. If the
real result is within 0.5ulp of 1 or -1, it should return exactly +1 or
-1.
Special cases:
- {@code tanh(+0.0) = +0.0}
- {@code tanh(-0.0) = -0.0}
- {@code tanh(+infinity) = +1.0}
- {@code tanh(-infinity) = -1.0}
- {@code tanh(NaN) = NaN}
|
public static double | toDegrees(double angrad)Returns the measure in degrees of the supplied radian angle. The result
is {@code angrad * 180 / pi}.
Special cases:
- {@code toDegrees(+0.0) = +0.0}
- {@code toDegrees(-0.0) = -0.0}
- {@code toDegrees(+infinity) = +infinity}
- {@code toDegrees(-infinity) = -infinity}
- {@code toDegrees(NaN) = NaN}
return angrad * 180d / PI;
|
public static double | toRadians(double angdeg)Returns the measure in radians of the supplied degree angle. The result
is {@code angdeg / 180 * pi}.
Special cases:
- {@code toRadians(+0.0) = +0.0}
- {@code toRadians(-0.0) = -0.0}
- {@code toRadians(+infinity) = +infinity}
- {@code toRadians(-infinity) = -infinity}
- {@code toRadians(NaN) = NaN}
return angdeg / 180d * PI;
|
public static double | ulp(double d)Returns the argument's ulp (unit in the last place). The size of a ulp of
a double value is the positive distance between this value and the double
value next larger in magnitude. For non-NaN {@code x},
{@code ulp(-x) == ulp(x)}.
Special cases:
- {@code ulp(+0.0) = Double.MIN_VALUE}
- {@code ulp(-0.0) = Double.MIN_VALUE}
- {@code ulp(+infintiy) = infinity}
- {@code ulp(-infintiy) = infinity}
- {@code ulp(NaN) = NaN}
// special cases
if (Double.isInfinite(d)) {
return Double.POSITIVE_INFINITY;
} else if (d == Double.MAX_VALUE || d == -Double.MAX_VALUE) {
return pow(2, 971);
}
d = abs(d);
return nextafter(d, Double.MAX_VALUE) - d;
|
public static float | ulp(float f)Returns the argument's ulp (unit in the last place). The size of a ulp of
a float value is the positive distance between this value and the float
value next larger in magnitude. For non-NaN {@code x},
{@code ulp(-x) == ulp(x)}.
Special cases:
- {@code ulp(+0.0) = Float.MIN_VALUE}
- {@code ulp(-0.0) = Float.MIN_VALUE}
- {@code ulp(+infintiy) = infinity}
- {@code ulp(-infintiy) = infinity}
- {@code ulp(NaN) = NaN}
// special cases
if (Float.isNaN(f)) {
return Float.NaN;
} else if (Float.isInfinite(f)) {
return Float.POSITIVE_INFINITY;
} else if (f == Float.MAX_VALUE || f == -Float.MAX_VALUE) {
return (float) pow(2, 104);
}
f = abs(f);
return nextafterf(f, Float.MAX_VALUE) - f;
|