## net.rim.device.api.util Class MathUtilities

```java.lang.Object
net.rim.device.api.util.MathUtilities
```

`public final class MathUtilitiesextends Object`

Provides some basic numeric operations.

Method Summary
`static double` `acos(double x)`
Returns the arc cosine of the value `x`.
`static double` `asin(double x)`
Returns the arc sine of the value `x`.
`static double` `atan(double x)`
Returns the arc tangent of the value `x`.
`static double` ```atan2(double y, double x)```
Converts rectangular coordinates (x,y) to polar coordinates (r,theta).
`static double` ```clamp(double low, double value, double high)```
Clamps provided double value between a lower and upper bound.
`static float` ```clamp(float low, float value, float high)```
Clamps provided float value between a lower and upper bound.
`static int` ```clamp(int low, int value, int high)```
Clamps provided integer value between a lower and upper bound.
`static long` ```clamp(long low, long value, long high)```
Clamps provided long integer value between a lower and upper bound.
`static double` `exp(double x)`
Return the exponential (base e) of x.
`static double` ```ldexp(double x, int exp)```
Returns the result of multiplying `x` (the significand) by 2 raised to the power of `exp` (the exponent).
`static double` `log(double x)`
Return the natural logarithm (base e) of x.
`static int` `log2(int value)`
Returns the log base 2 of the unsigned value rounded down.
`static int` `log2(long value)`
Returns the log base 2 of the unsigned value rounded down.
`static double` ```pow(double x, double y)```
Return `x` raised to the power of `y`.
`static long` `round(double a)`
Returns the closest `long` to the argument.
`static int` `round(float a)`
Returns the closest `int` to the argument.
`static float` ```wrap(float low, float value, float high)```
Wraps provided float value around a lower and upper bound.
`static int` ```wrap(int low, int value, int high)```
Wraps provided integer value around a lower and upper bound.
`static long` ```wrap(long low, long value, long high)```
Wraps provided long integer values around a lower and upper bound.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### clamp

```public static int clamp(int low,
int value,
int high)```
Clamps provided integer value between a lower and upper bound.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to clamp.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the lower bound; if the value is higher than the higher bound, this method returns the higher bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.

### clamp

```public static long clamp(long low,
long value,
long high)```
Clamps provided long integer value between a lower and upper bound.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to clamp.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the lower bound; if the value is higher than the higher bound, this method returns the higher bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 7.0.0

### clamp

```public static float clamp(float low,
float value,
float high)```
Clamps provided float value between a lower and upper bound.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to clamp.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the lower bound; if the value is higher than the higher bound, this method returns the higher bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 7.0.0

### clamp

```public static double clamp(double low,
double value,
double high)```
Clamps provided double value between a lower and upper bound.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to clamp.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the lower bound; if the value is higher than the higher bound, this method returns the higher bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 7.0.0

### wrap

```public static int wrap(int low,
int value,
int high)```
Wraps provided integer value around a lower and upper bound.

This method does the opposite of `MathUtilities.clamp(int,int,int)`.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to wrap.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the higher bound; if the value is higher than the higher bound, this method returns the lower bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 4.0.0

### wrap

```public static long wrap(long low,
long value,
long high)```
Wraps provided long integer values around a lower and upper bound.

This method does the opposite of `MathUtilities.clamp(long,long,long)`.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to wrap.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the higher bound; if the value is higher than the higher bound, this method returns the lower bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 7.0.0

### wrap

```public static float wrap(float low,
float value,
float high)```
Wraps provided float value around a lower and upper bound.

This method does the opposite of `MathUtilities.clamp(float,float,float)`.

Parameters:
`low` - Lower bound value; must be less than your upper bound parameter.
`value` - Value to wrap.
`high` - Upper bound value.
Returns:
If the value is lower than the lower bound, this method returns the higher bound; if the value is higher than the higher bound, this method returns the lower bound; otherwise, this method returns the value itself.
Throws:
`IllegalArgumentException` - If you provide a low parameter value that is greater than your high parameter value.
Since:
BlackBerry API 7.0.0

### log2

`public static int log2(int value)`
Returns the log base 2 of the unsigned value rounded down.

The value zero and one both return zero.

Parameters:
`value` - The unsigned value to calculate log2 on.
Returns:
The calculation of log2(value) (range: 0-31).
Since:
BlackBerry API 4.2.0

### log2

`public static int log2(long value)`
Returns the log base 2 of the unsigned value rounded down.

The value zero and one both return a log2 result of zero.

Parameters:
`value` - The unsigned value to calculate log2 on.
Returns:
The calculation of log2(value) (range: 0-63).
Since:
BlackBerry API 4.2.0

### log

`public static double log(double x)`
Return the natural logarithm (base e) of x. Interesting cases:
• If the argument is less than zero (including negative infinity), the result is NaN.
• If the argument is zero, the result is negative infinity.
• If the argument is positive infinity, the result is positive infinity.
• If the argument is NaN, the result is NaN.

Parameters:
`x` - a number greater than zero.
Returns:
the natural logarithm (base e) of the argument.
Since:
BlackBerry API 4.2.0

### exp

`public static double exp(double x)`
Return the exponential (base e) of x. Interesting cases:
• If the argument is negative infinity, the result is zero.
• If the argument is positive infinity, the result is positive infinity.
• If the argument is NaN, the result is NaN.
• If the argument is greater than 7.09e+02, the result is positive infinity.
• If the argument is less than -7.45e+02, the result is zero.

Parameters:
`x` - the power to raise e to.
Returns:
e raised to the power x.
Since:
BlackBerry API 4.2.0

### pow

```public static double pow(double x,
double y)```
Return `x` raised to the power of `y`.

Parameters:
`x` - the base value.
`y` - the exponent.
Returns:
xy.
Since:
BlackBerry API 4.6.0

### asin

`public static double asin(double x)`
Returns the arc sine of the value `x`.

Parameters:
`x` - the value.
Returns:
the arc sine of the argument in radians.
Since:
BlackBerry API 4.6.0

### acos

`public static double acos(double x)`
Returns the arc cosine of the value `x`.

Parameters:
`x` - the value.
Returns:
the arc cosine of the argument in radians.
Since:
BlackBerry API 4.6.0

### atan

`public static double atan(double x)`
Returns the arc tangent of the value `x`.

Parameters:
`x` - the value.
Returns:
the arc tangent of the argument in radians.
Since:
BlackBerry API 4.6.0

### atan2

```public static double atan2(double y,
double x)```
Converts rectangular coordinates (x,y) to polar coordinates (r,theta). This method computes the phase theta by computing the arc tangent of y/x in the range of -pi to pi.

Parameters:
`y` - the abscissa coordinate.
`x` - the ordinate coordinate.
Returns:
the theta component of the point (r,theta) in polar coordinates that corresponds to the point (x,y) in Cartesian coordinates.
Since:
BlackBerry API 4.6.0

### ldexp

```public static double ldexp(double x,
int exp)```
Returns the result of multiplying `x` (the significand) by 2 raised to the power of `exp` (the exponent).

Parameters:
`x` - the significand.
`exp` - the exponent.
Returns:
x * 2exp.
Since:
BlackBerry API 4.6.0

### round

`public static int round(float a)`
Returns the closest `int` to the argument. The result is rounded to an integer by adding 1/2 if positive or subtracting 1/2 if negative, taking the floor of the result, and casting the result to type `int`.

Special cases:

• If the argument is NaN, the result is 0.
• If the argument is negative infinity or any value less than or equal to the value of `Integer.MIN_VALUE`, the result is equal to the value of `Integer.MIN_VALUE`.
• If the argument is positive infinity or any value greater than or equal to the value of `Integer.MAX_VALUE`, the result is equal to the value of `Integer.MAX_VALUE`.
• If the argument is an exact negative half (-x.5), the value is rounded to the closes value to zero.

Parameters:
`a` - a floating-point value to be rounded to an integer.
Returns:
the value of the argument rounded to the nearest `int` value.
`Integer.MAX_VALUE`, `Integer.MIN_VALUE`
Since:
BlackBerry API 4.6.0

### round

`public static long round(double a)`
Returns the closest `long` to the argument. The result is rounded to an integer by adding 1/2 if positive or subtracting 1/2 if negative, taking the floor of the result, and casting the result to type `long`.

Special cases:

• If the argument is NaN, the result is 0.
• If the argument is negative infinity or any value less than or equal to the value of `Long.MIN_VALUE`, the result is equal to the value of `Long.MIN_VALUE`.
• If the argument is positive infinity or any value greater than or equal to the value of `Long.MAX_VALUE`, the result is equal to the value of `Long.MAX_VALUE`.
• If the argument is an exact negative half (-x.5), the value is rounded to the closest value to zero.

Parameters:
`a` - a floating-point value to be rounded to a `long`.
Returns:
the value of the argument rounded to the nearest `long` value.
`Long.MAX_VALUE`, `Long.MIN_VALUE`