⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stats.java

📁 antlr最新版本V3源代码
💻 JAVA
字号:
package org.antlr.runtime.misc;import org.antlr.tool.ErrorManager;import org.antlr.tool.GrammarReport;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 {	/** 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<m; i++){			s2 += (X[i] - xbar)*(X[i] - xbar);		}		s2 = s2/(m-1);		return Math.sqrt(s2);	}	/** Compute the sample mean */	public static double avg(int[] X) {		double xbar = 0.0;		int m = X.length;		if ( m==0 ) {			return 0;		}		for (int i=0; i<m; i++){			xbar += X[i];		}		if ( xbar>=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<m; i++){			if ( X[i] < min ) {				min = X[i];			}		}		return min;	}	public static int max(int[] X) {		int max = Integer.MIN_VALUE;		int m = X.length;		if ( m==0 ) {			return 0;		}		for (int i=0; i<m; i++){			if ( X[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<m; i++){			s += X[i];		}		return s;	}	public static void writeReport(String filename, String data) {		String absoluteFilename = getAbsoluteFileName(filename);		File f = new File(absoluteFilename);		File parent = f.getParentFile();		parent.mkdirs(); // ensure parent dir exists		// write file		try {			FileOutputStream fos = new FileOutputStream(f, true); // append			BufferedOutputStream bos = new BufferedOutputStream(fos);			PrintStream ps = new PrintStream(bos);			ps.println(data);			ps.close();			bos.close();			fos.close();		}		catch (IOException ioe) {			ErrorManager.internalError("can't write stats to "+absoluteFilename,									   ioe);		}	}	public static String getAbsoluteFileName(String filename) {		return System.getProperty("user.home")+File.separator+					GrammarReport.ANTLRWORKS_DIR +File.separator+					filename;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -