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

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

package com.daredayo.util.collection;

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


	public synchronized void add(float adding){
		
		count++;
		max = max < adding ? adding : max;
		min = min > adding ? adding : min;
		
		if(isOverFlow(sum , adding)){
			
			sum += adding - Float.MAX_VALUE;
			sumOverFlow++;
		}else{
			
			sum += adding;
		}
		average = sum / count + (float)(Float.MAX_VALUE * ((double) sumOverFlow )/((double)count)) ;
		
		
		float f = adding - average;
		if(isOverFlow(varianceSum , f )){
			
			varianceSum += f - Float.MAX_VALUE;
			varianceSumOVerFlow++;
		}else{
			
			varianceSum += f  ;
		}
		variance = varianceSum / (double)count + (double)(Float.MAX_VALUE * ((double) varianceSumOVerFlow )/((double)count)) ;
	}
	
	static final boolean isOverFlow(float a , float b){
		
		float old = a;
		a += b;
		return a < old;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy