Package cc.mallet.util
Class Maths
- java.lang.Object
-
- cc.mallet.util.Maths
-
public final class Maths extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description Maths()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static boolean
almostEquals(double[] d1, double[] d2, double eps)
static boolean
almostEquals(double d1, double d2)
static boolean
almostEquals(double d1, double d2, double epsilon)
static double
beta(double a, double b)
static boolean
checkWithinRange(double value, double min, double max)
Checks if min <= value <= max.static double
cosh(double a)
static double
factorial(int n)
static double
gamma(double x)
static double
getEntropy(double[] dist)
static double
jensenShannonDivergence(double[] p1, double[] p2)
Returns the Jensen-Shannon divergence.static double
klDivergence(double[] p1, double[] p2)
Returns the KL divergence, K(p1 || p2).static double
logBeta(double a, double b)
static double
logBinom(int x, int n, double p)
Computes p(x;n,p) where x~B(n,p)static double
logFactorial(int n)
static double
logGamma(double x)
static double
logit(double p)
static double
numCombinations(int n, int r)
static double
numPermutations(int n, int r)
static double
oldLogGamma(double x)
static double
pbinom(int x, int n, double p)
Vastly inefficient O(x) method to compute cdf of B(n,p)static double
regularizedGammaP(double shape, double x)
Regularized Gamma function, used for Gamma CDF.static double
sigmod(double beta)
static double
sigmod_rev(double sig)
static double
subtractLogProb(double a, double b)
Returns the difference of two doubles expressed in log space, that is,static double
sumLogProb(double[] vals)
Sums an array of numbers log(x1)...log(xn).static double
sumLogProb(double a, double b)
Returns the sum of two doubles expressed in log space, that is,static double
tanh(double a)
-
-
-
Method Detail
-
logGamma
public static final double logGamma(double x)
-
oldLogGamma
public static double oldLogGamma(double x)
-
logBeta
public static double logBeta(double a, double b)
-
beta
public static double beta(double a, double b)
-
gamma
public static double gamma(double x)
-
factorial
public static double factorial(int n)
-
logFactorial
public static double logFactorial(int n)
-
regularizedGammaP
public static double regularizedGammaP(double shape, double x)
Regularized Gamma function, used for Gamma CDF. Operates by evaluating an infinite sum that converges quickly in practice.
-
logBinom
public static double logBinom(int x, int n, double p)
Computes p(x;n,p) where x~B(n,p)
-
pbinom
public static double pbinom(int x, int n, double p)
Vastly inefficient O(x) method to compute cdf of B(n,p)
-
sigmod
public static double sigmod(double beta)
-
sigmod_rev
public static double sigmod_rev(double sig)
-
logit
public static double logit(double p)
-
numCombinations
public static double numCombinations(int n, int r)
-
numPermutations
public static double numPermutations(int n, int r)
-
cosh
public static double cosh(double a)
-
tanh
public static double tanh(double a)
-
almostEquals
public static boolean almostEquals(double d1, double d2)
-
almostEquals
public static boolean almostEquals(double d1, double d2, double epsilon)
-
almostEquals
public static boolean almostEquals(double[] d1, double[] d2, double eps)
-
checkWithinRange
public static boolean checkWithinRange(double value, double min, double max)
Checks if min <= value <= max.
-
klDivergence
public static double klDivergence(double[] p1, double[] p2)
Returns the KL divergence, K(p1 || p2). The log is w.r.t. base 2.*Note*: If any value in p2 is 0.0 then the KL-divergence is infinite.
-
jensenShannonDivergence
public static double jensenShannonDivergence(double[] p1, double[] p2)
Returns the Jensen-Shannon divergence.
-
sumLogProb
public static double sumLogProb(double a, double b)
Returns the sum of two doubles expressed in log space, that is,sumLogProb = log (e^a + e^b) = log e^a(1 + e^(b-a)) = a + log (1 + e^(b-a))
By exponentiating b-a, we obtain better numerical precision than we would if we calculated e^a or e^b directly.Note: This function is just like
sumNegLogProb
in Transducer, except that the logs aren't negated.
-
sumLogProb
public static double sumLogProb(double[] vals)
Sums an array of numbers log(x1)...log(xn). This saves some of the unnecessary calls to Math.log in the two-argument version.Note that this implementation IGNORES elements of the input array that are more than LOGTOLERANCE (currently 30.0) less than the maximum element.
Cursory testing makes me wonder if this is actually much faster than repeated use of the 2-argument version, however -cas.
- Parameters:
vals
- An array log(x1), log(x2), ..., log(xn)- Returns:
- log(x1+x2+...+xn)
-
subtractLogProb
public static double subtractLogProb(double a, double b)
Returns the difference of two doubles expressed in log space, that is,sumLogProb = log (e^a - e^b) = log e^a(1 - e^(b-a)) = a + log (1 - e^(b-a))
By exponentiating b-a, we obtain better numerical precision than we would if we calculated e^a or e^b directly.Returns NaN if b > a (so that log(e^a - e^b) is undefined).
-
getEntropy
public static double getEntropy(double[] dist)
-
-