00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 package org.antlr.runtime.misc;
00029
00030 import java.io.*;
00031 import java.util.List;
00032
00040 public class Stats {
00041 public static final String ANTLRWORKS_DIR = "antlrworks";
00042
00055 public static double stddev(int[] X) {
00056 int m = X.length;
00057 if ( m<=1 ) {
00058 return 0;
00059 }
00060 double xbar = avg(X);
00061 double s2 = 0.0;
00062 for (int i=0; i<m; i++){
00063 s2 += (X[i] - xbar)*(X[i] - xbar);
00064 }
00065 s2 = s2/(m-1);
00066 return Math.sqrt(s2);
00067 }
00068
00070 public static double avg(int[] X) {
00071 double xbar = 0.0;
00072 int m = X.length;
00073 if ( m==0 ) {
00074 return 0;
00075 }
00076 for (int i=0; i<m; i++){
00077 xbar += X[i];
00078 }
00079 if ( xbar>=0.0 ) {
00080 return xbar / m;
00081 }
00082 return 0.0;
00083 }
00084
00085 public static int min(int[] X) {
00086 int min = Integer.MAX_VALUE;
00087 int m = X.length;
00088 if ( m==0 ) {
00089 return 0;
00090 }
00091 for (int i=0; i<m; i++){
00092 if ( X[i] < min ) {
00093 min = X[i];
00094 }
00095 }
00096 return min;
00097 }
00098
00099 public static int max(int[] X) {
00100 int max = Integer.MIN_VALUE;
00101 int m = X.length;
00102 if ( m==0 ) {
00103 return 0;
00104 }
00105 for (int i=0; i<m; i++){
00106 if ( X[i] > max ) {
00107 max = X[i];
00108 }
00109 }
00110 return max;
00111 }
00112
00114 public static double avg(List<Integer> X) {
00115 double xbar = 0.0;
00116 int m = X.size();
00117 if ( m==0 ) {
00118 return 0;
00119 }
00120 for (int i=0; i<m; i++){
00121 xbar += X.get(i);
00122 }
00123 if ( xbar>=0.0 ) {
00124 return xbar / m;
00125 }
00126 return 0.0;
00127 }
00128
00129 public static int min(List<Integer> X) {
00130 int min = Integer.MAX_VALUE;
00131 int m = X.size();
00132 if ( m==0 ) {
00133 return 0;
00134 }
00135 for (int i=0; i<m; i++){
00136 if ( X.get(i) < min ) {
00137 min = X.get(i);
00138 }
00139 }
00140 return min;
00141 }
00142
00143 public static int max(List<Integer> X) {
00144 int max = Integer.MIN_VALUE;
00145 int m = X.size();
00146 if ( m==0 ) {
00147 return 0;
00148 }
00149 for (int i=0; i<m; i++){
00150 if ( X.get(i) > max ) {
00151 max = X.get(i);
00152 }
00153 }
00154 return max;
00155 }
00156
00157 public static int sum(int[] X) {
00158 int s = 0;
00159 int m = X.length;
00160 if ( m==0 ) {
00161 return 0;
00162 }
00163 for (int i=0; i<m; i++){
00164 s += X[i];
00165 }
00166 return s;
00167 }
00168
00169 public static void writeReport(String filename, String data) throws IOException {
00170 String absoluteFilename = getAbsoluteFileName(filename);
00171 File f = new File(absoluteFilename);
00172 File parent = f.getParentFile();
00173 parent.mkdirs();
00174
00175 FileOutputStream fos = new FileOutputStream(f, true);
00176 BufferedOutputStream bos = new BufferedOutputStream(fos);
00177 PrintStream ps = new PrintStream(bos);
00178 ps.println(data);
00179 ps.close();
00180 bos.close();
00181 fos.close();
00182 }
00183
00184 public static String getAbsoluteFileName(String filename) {
00185 return System.getProperty("user.home")+File.separator+
00186 ANTLRWORKS_DIR +File.separator+
00187 filename;
00188 }
00189 }