|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object edu.ucla.stat.SOCR.util.BesselConstants edu.ucla.stat.SOCR.util.BesselArithmetic
public class BesselArithmetic
BesselArithmetic functions.
Field Summary | |
---|---|
protected static double[] |
doubleFactorials
|
protected static double[] |
logFactorials
|
protected static long[] |
longFactorials
|
Fields inherited from class edu.ucla.stat.SOCR.util.BesselConstants |
---|
big, biginv, LOGPI, MACHEP, MAXGAM, MAXLOG, MINLOG, SQRTH, SQTPI |
Constructor Summary | |
---|---|
protected |
BesselArithmetic()
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[] logFactorials
protected static final long[] longFactorials
protected static final double[] doubleFactorials
Constructor Detail |
---|
protected BesselArithmetic()
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 |