All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.daredayo.util.collection.StatisticsLong Maven / Gradle / Ivy

package com.daredayo.util.collection;

public class StatisticsLong {
	
	public long max;
	public long min;
	public long average;
	public double variance;
	public long count;
	
	private long sum;
	private long sumOverFlow;
	private long varianceSum;
	private long varianceSumOVerFlow;
	
	public void clear(){
		max = 0;
		min = Long.MAX_VALUE;
		average = 0;
		sum = 0;
		count =  0;
	}
	
	public StatisticsLong() {
		super();
		clear();
	}


	public synchronized void add(long adding){
		
		count++;
		max = max < adding ? adding : max;
		min = min > adding ? adding : min;
		
		if(isOverFlow(sum , adding)){
			
			sum += adding - Long.MAX_VALUE;
			sumOverFlow++;
		}else{
			
			sum += adding;
		}
		average = sum / count + (long)(Long.MAX_VALUE * ((double) sumOverFlow )/((double)count)) ;
		
		
		if(isOverFlow(varianceSum , (adding - average) ^2)){
			
			varianceSum += (adding - average) ^2 - Long.MAX_VALUE;
			varianceSumOVerFlow++;
		}else{
			
			varianceSum += (adding - average) ^2;
		}
		variance = varianceSum / (double)count + (double)(Long.MAX_VALUE * ((double) varianceSumOVerFlow )/((double)count)) ;
	}
	
	static final boolean isOverFlow(long a , long b){
		
		long old = a;
		a += b;
		return a < old;
	}
	
	public static void main(String[] args) {
		System.out.println(99L^2);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy