Save This Page
Home » mahout-collections-1.0-src » org.apache.mahout.collections » [javadoc | source]
org.apache.mahout.collections
public class: Arithmetic [javadoc | source]
java.lang.Object
   org.apache.mahout.collections.Constants
      org.apache.mahout.collections.Arithmetic
Arithmetic functions.
Fields inherited from org.apache.mahout.collections.Constants:
MACHEP,  MAXLOG,  MINLOG,  MAXGAM,  SQTPI,  SQRTH,  LOGPI,  big,  biginv
Constructor:
 protected Arithmetic() 
Method from org.apache.mahout.collections.Arithmetic Summary:
binomial,   binomial,   ceil,   chbevl,   floor,   log,   log10,   log2,   logFactorial,   longFactorial,   stirlingCorrection
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.mahout.collections.Arithmetic Detail:
 public static double binomial(double n,
    long k) 
    Efficiently returns the binomial coefficient, often also referred to as "n over k" or "n choose k". The binomial coefficient is defined as (n * n-1 * ... * n-k+1 ) / ( 1 * 2 * ... * k ).
    • k<0: 0.
    • k==0: 1.
    • k==1: n.
    • else: (n * n-1 * ... * n-k+1 ) / ( 1 * 2 * ... * k ).
 public static double binomial(long n,
    long k) 
    Efficiently returns the binomial coefficient, often also referred to as "n over k" or "n choose k". The binomial coefficient is defined as
    • k<0: 0.
    • k==0 || k==n: 1.
    • k==1 || k==n-1: n.
    • else: (n * n-1 * ... * n-k+1 ) / ( 1 * 2 * ... * k ).
 public static long ceil(double value) 
    Returns the smallest long >= value.
    Examples: 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 ArithmeticException 
    Evaluates the series of Chebyshev polynomials Ti at argument x/2. The series is given by
           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.

 public static long floor(double value) 
    Returns the largest long <= value.
    Examples: 1.0 -> 1, 1.2 -> 1, 1.9 -> 1
    2.0 -> 2, 2.2 -> 2, 2.9 -> 2
    This method is safer than using (long) Math.floor(value), because of possible rounding error.
 public static double log(double base,
    double value) 
    Returns logbasevalue.
 public static double log10(double value) 
    Returns log10value.
 public static double log2(double value) 
    Returns log2value.
 public static double logFactorial(int k) 
    Returns log(k!). Tries to avoid overflows. For k<30 simply looks up a table in O(1). For k>=30 uses stirlings approximation.
 public static long longFactorial(int k) throws IllegalArgumentException 
    Instantly returns the factorial k!.
 public static double stirlingCorrection(int k) 
    Returns the StirlingCorrection.

    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)