## org.apache.lucene.util Class MathUtil

```java.lang.Object
org.apache.lucene.util.MathUtil
```

`public final class MathUtilextends Object`

Math static utility methods.

Method Summary
`static double` `acosh(double a)`
Calculates inverse hyperbolic cosine of a `double` value.
`static double` `asinh(double a)`
Calculates inverse hyperbolic sine of a `double` value.
`static double` `atanh(double a)`
Calculates inverse hyperbolic tangent of a `double` value.
`static long` ```gcd(long a, long b)```
Return the greatest common divisor of `a` and `b`, consistently with `BigInteger.gcd(BigInteger)`.
`static double` ```log(double base, double x)```
Calculates logarithm in a given base with doubles.
`static int` ```log(long x, int base)```
Returns `x <= 0 ? 0 : Math.floor(Math.log(x) / Math.log(base))`

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

Method Detail

### log

```public static int log(long x,
int base)```
Returns `x <= 0 ? 0 : Math.floor(Math.log(x) / Math.log(base))`

Parameters:
`base` - must be `> 1`

### log

```public static double log(double base,
double x)```
Calculates logarithm in a given base with doubles.

### gcd

```public static long gcd(long a,
long b)```
Return the greatest common divisor of `a` and `b`, consistently with `BigInteger.gcd(BigInteger)`.

NOTE: A greatest common divisor must be positive, but `2^64` cannot be expressed as a long although it is the GCD of `Long.MIN_VALUE` and `0` and the GCD of `Long.MIN_VALUE` and `Long.MIN_VALUE`. So in these 2 cases, and only them, this method will return `Long.MIN_VALUE`.

### asinh

`public static double asinh(double a)`
Calculates inverse hyperbolic sine of a `double` value.

Special cases:

• If the argument is NaN, then the result is NaN.
• If the argument is zero, then the result is a zero with the same sign as the argument.
• If the argument is infinite, then the result is infinity with the same sign as the argument.

### acosh

`public static double acosh(double a)`
Calculates inverse hyperbolic cosine of a `double` value.

Special cases:

• If the argument is NaN, then the result is NaN.
• If the argument is +1, then the result is a zero.
• If the argument is positive infinity, then the result is positive infinity.
• If the argument is less than 1, then the result is NaN.

### atanh

`public static double atanh(double a)`
Calculates inverse hyperbolic tangent of a `double` value.

Special cases:

• If the argument is NaN, then the result is NaN.
• If the argument is zero, then the result is a zero with the same sign as the argument.
• If the argument is +1, then the result is positive infinity.
• If the argument is -1, then the result is negative infinity.
• If the argument's absolute value is greater than 1, then the result is NaN.