org.antlr.runtime.misc.Stats Maven / Gradle / Ivy
package org.antlr.runtime.misc;
import java.io.*;
/** Stats routines needed by profiler etc...
// note that these routines return 0.0 if no values exist in the X[]
// which is not "correct", but it is useful so I don't generate NaN
// in my output
*/
public class Stats {
public static final String ANTLRWORKS_DIR = "antlrworks";
/** Compute the sample (unbiased estimator) standard deviation following:
*
* Computing Deviations: Standard Accuracy
* Tony F. Chan and John Gregg Lewis
* Stanford University
* Communications of ACM September 1979 of Volume 22 the ACM Number 9
*
* The "two-pass" method from the paper; supposed to have better
* numerical properties than the textbook summation/sqrt. To me
* this looks like the textbook method, but I ain't no numerical
* methods guy.
*/
public static double stddev(int[] X) {
int m = X.length;
if ( m<=1 ) {
return 0;
}
double xbar = avg(X);
double s2 = 0.0;
for (int i=0; i=0.0 ) {
return xbar / m;
}
return 0.0;
}
public static int min(int[] X) {
int min = Integer.MAX_VALUE;
int m = X.length;
if ( m==0 ) {
return 0;
}
for (int i=0; i max ) {
max = X[i];
}
}
return max;
}
public static int sum(int[] X) {
int s = 0;
int m = X.length;
if ( m==0 ) {
return 0;
}
for (int i=0; i