// Helene Martin, Garfield High school
// Parameters warm-up questions

public class WarmUp {
	public static void main(String[] args) {
		cummulativeSum(3, 8, 2);
		System.out.println("===");
		
		// I used system time to approximate running time
		// You can use this technique to measure running time of any program or algorithm
		int iterations = 5000;
		long start = System.currentTimeMillis();
		pi(iterations);
		long stop = System.currentTimeMillis();
		
		long elapsed = stop - start;
		System.out.println("Time elapsed estimating pi using " + iterations + 
								 " terms: " + elapsed + "ms");
	}
	
	public static void cummulativeSum(int start, int end, int step) {
		int sum = 0;
		for(int i = start; i <= end; i += step) {
			sum += i;
		}
		System.out.println("Cumulative sum of numbers starting at " + start + 
								 ", increasing by " + step + " and with a maximum of " + 
								 end + ": " + sum);
	}

	// Approximates pi using the Leibniz formula.  
	// iterations specifies how many terms to use
	
	// 100,000 iterations takes about 5ms
	// 1,000,000 iterations takes about 13ms
	// I stopped Integer.MAX_VALUE iterations because I neede to use my computer!!
	public static void pi(int iterations) {
		double quarterPi = 0;
		double denom = 1;
		int sign = 1;
		
		for(int i = 1; i <= iterations; i++) {
			quarterPi += sign * 1/denom;
			denom += 2;
			sign = -sign;
		}
		
		System.out.println(quarterPi * 4);
	}
}
