|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectsim.util.distribution.Constants
sim.util.distribution.Arithmetic
public class Arithmetic
Arithmetic functions.
Field Summary | |
---|---|
protected static double |
big
|
protected static double |
biginv
|
protected static double[] |
doubleFactorials
|
protected static double[] |
logFactorials
|
protected static double |
LOGPI
|
protected static long[] |
longFactorials
|
protected static double |
MACHEP
|
protected static double |
MAXGAM
|
protected static double |
MAXLOG
|
protected static double |
MINLOG
|
protected static double |
SQRTH
|
protected static double |
SQTPI
|
Constructor Summary | |
---|---|
protected |
Arithmetic()
Makes this class non instantiable, but still let's others inherit from it. |
Method Summary | |
---|---|
static double |
binomial(double n,
long k)
Efficiently returns the binomial coefficient, often also referred to as "n over k" or "n choose k". |
static double |
binomial(long n,
long k)
Efficiently returns the binomial coefficient, often also referred to as "n over k" or "n choose k". |
static long |
ceil(double value)
Returns the smallest long >= value . |
static double |
chbevl(double x,
double[] coef,
int N)
Evaluates the series of Chebyshev polynomials Ti at argument x/2. |
static double |
factorial(int k)
Instantly returns the factorial k!. |
static long |
floor(double value)
Returns the largest long <= value . |
static double |
log(double base,
double value)
Returns logbasevalue. |
static double |
log10(double value)
Returns log10value. |
static double |
log2(double value)
Returns log2value. |
static double |
logFactorial(int k)
Returns log(k!). |
static long |
longFactorial(int k)
Instantly returns the factorial k!. |
static double |
stirlingCorrection(int k)
Returns the StirlingCorrection. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final double MACHEP
protected static final double MAXLOG
protected static final double MINLOG
protected static final double MAXGAM
protected static final double SQTPI
protected static final double SQRTH
protected static final double LOGPI
protected static final double big
protected static final double biginv
protected static final double[] logFactorials
protected static final long[] longFactorials
protected static final double[] doubleFactorials
Constructor Detail |
---|
protected Arithmetic()
Method Detail |
---|
public static double binomial(double n, long k)
public static double binomial(long n, long k)
public static long ceil(double value)
long >= value
.
1.0 -> 1, 1.2 -> 2, 1.9 -> 2
.
This method is safer than using (long) Math.ceil(value), because of possible rounding error.
public static double chbevl(double x, double[] coef, int N) throws java.lang.ArithmeticException
N-1 - ' y = > coef[i] T (x/2) - i i=0Coefficients are stored in reverse order, i.e. the zero order term is last in the array. Note N is the number of coefficients, not the order.
If coefficients are for the interval a to b, x must have been transformed to x -> 2(2x - b - a)/(b-a) before entering the routine. This maps x from (a, b) to (-1, 1), over which the Chebyshev polynomials are defined.
If the coefficients are for the inverted interval, in which (a, b) is mapped to (1/b, 1/a), the transformation required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity, this becomes x -> 4a/x - 1.
SPEED:
Taking advantage of the recurrence properties of the Chebyshev polynomials, the routine requires one more addition per loop than evaluating a nested polynomial of the same degree.
x
- argument to the polynomial.coef
- the coefficients of the polynomial.N
- the number of coefficients.
java.lang.ArithmeticException
public static double factorial(int k)
k
- must hold k >= 0.public static long floor(double value)
long <= value
.
1.0 -> 1, 1.2 -> 1, 1.9 -> 1 -
2.0 -> 2, 2.2 -> 2, 2.9 -> 2
public static double log(double base, double value)
public static double log10(double value)
public static double log2(double value)
public static double logFactorial(int k)
k
- must hold k >= 0.public static long longFactorial(int k) throws java.lang.IllegalArgumentException
k
- must hold k >= 0 && k < 21.
java.lang.IllegalArgumentException
public static double stirlingCorrection(int k)
Correction term of the Stirling approximation for log(k!) (series in 1/k, or table values for small k) with int parameter k.
log k! = (k + 1/2)log(k + 1) - (k + 1) + (1/2)log(2Pi) + stirlingCorrection(k + 1)
log k! = (k + 1/2)log(k) - k + (1/2)log(2Pi) + stirlingCorrection(k)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |