/**
 * This program calculates the mean and the standard deviation of n numbers
 * in a Vector
 *
 * @version 	$Id: MathClass.java,v 1.2 1998/09/13 05:48:29 tfm1584 Exp tfm1584 $
 * 
 * @author	Tom M
 *
 * Revisions:
 *		$Log: MathClass.java,v $
 *		Revision 1.2  1998/09/13 05:48:14  tfm1584
 *		forgot to take square root of std. dev. result
 *
 *		Revision 1.1  1998/09/13 03:51:49  tfm1584
 *		Initial revision
 *
 */

import java.util.Vector;

public class MathClass {

    /**
     * The constructor 
     */

    public MathClass( ) {
    }


    /**
     * this calculates the mean of all of the doubles - it sums all of the
     * numbers then divides the result by the total number of elements
     *
     * @param 	meanNums   	the Vector of Doubles
     *
     * @return			the average of the numbers
     */

    public double calculateMean( Vector meanNums ) {
	double total = 0;
	Double dValue;  // Double from vector before converting to double
	int length = meanNums.size();

        for ( int i = 0; i < length; i++ ) {
	    dValue = (Double)meanNums.elementAt( i );
	    total += dValue.doubleValue();
  	}

	return (total/length);
    }

    /** 
     * This calculates the standard deviation of the doubles.  It adds up all
     * of the squares of the differences of the numbers from the mean, then
     * takes the square root of the total over the number of elements - 1 
     *
     * @param 	stddevNums	the numbers to find the std. dev. of
     * @param	avg		the mean of the numbers
     *
     * @return 			the calculated std. dev. of all of the numbers
     */

    public double calculateStdDev( Vector stddevNums, double avg ) {
        double total = 0; 
	Double dValue;  // Double from vector before converting to double

	int length = stddevNums.size();
	for ( int i = 0; i < length; i++ ) {
	    dValue =  (Double)stddevNums.elementAt( i ) ; 
	    total += Math.pow( (dValue.doubleValue() - avg), 2.0 ) ;
        }
	return ( Math.sqrt( total / (length - 1 ) ));
    }
	    
}