docs: @Override
  	public double getVariance() {
  		if(isDeterministic()) {
  			return 0.0;
  		}
  		if(size() == 0) {
  			return Double.NaN;
  		}
  
  		double sum			= 0.0;
  		double sumOfSquared = 0.0;
  		double errorOfSum			= 0.0;
  		double errorOfSumSquared	= 0.0;
  		for(int i=0; i<realizations.length; i++) {
  			double value	= realizations[i] - errorOfSum;
  			double newSum	= sum + value;
  			errorOfSum		= (newSum - sum) - value;
  			sum				= newSum;
  
  			double valueSquared		= realizations[i] * realizations[i] - errorOfSumSquared;
  			double newSumOfSquared	= sumOfSquared + valueSquared;
  			errorOfSumSquared		= (newSumOfSquared-sumOfSquared) - valueSquared;
  			sumOfSquared			= newSumOfSquared;
  		}
  		return (sumOfSquared/realizations.length - sum/realizations.length*sum/realizations.length);
  	}