module BenchmarkDriver::Repeater

def average_result(values, rest_on_average)

def average_result(values, rest_on_average)
  unless values.first.is_a?(Array)
    return values.inject(&:+) / values.size.to_f
  end
  case rest_on_average
  when :first
    rest = values.first[1..-1]
    [values.map { |v| v[0] }.inject(&:+) / values.size.to_f, *rest]
  when :average
    values.first.size.times.map do |index|
      values.map { |v| v[index] }.inject(&:+) / values.size.to_f
    end
  else
    raise "unexpected rest_on_average #{rest_on_average.inspect}"
  end
end