| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectedu.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=0
 
 Coefficients 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.ArithmeticExceptionpublic 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.IllegalArgumentExceptionpublic 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 | |||||||||