docs: @Override
  	public double integrate(DoubleUnaryOperator integrand) {
  		double	lowerBound			= getLowerBound();
  		double	upperBound			= getUpperBound();
  		double	range				= upperBound-lowerBound;
  		int		numberOfIntervalls	= (int) ((numberOfEvaluationPoints-1) / 2.0);
  
  		double fullIntervall = range / numberOfIntervalls;
  		double halfIntervall = 0.5 * fullIntervall;
  
  		double sum = 0.0;
  		for(int i=1; i<numberOfIntervalls; i++) {
  			sum += 2 * integrand.applyAsDouble(lowerBound + i * fullIntervall + halfIntervall) + integrand.applyAsDouble(lowerBound + i * fullIntervall);
  		}
  
  		sum += 2.0 * integrand.applyAsDouble(lowerBound + halfIntervall);
  
  		return (integrand.applyAsDouble(lowerBound) + integrand.applyAsDouble(upperBound) + 2.0 * sum) / 6.0 * fullIntervall;
  	}