class BenchmarkDriver::Output::Markdown

def humanize(value)

def humanize(value)
  if BenchmarkDriver::Result::ERROR.equal?(value)
    return sprintf("%*s", NAME_LENGTH, 'ERROR')
  elsif value == 0.0
    return sprintf("%*.3f", NAME_LENGTH, 0.0)
  elsif value < 0
    raise ArgumentError.new("Negative value: #{value.inspect}")
  end
  scale = (Math.log10(value) / 3).to_i
  prefix = sprintf("%*.3f", NAME_LENGTH - 1, (value.to_f / (1000 ** scale)))
  suffix =
    case scale
    when 1; 'k'
    when 2; 'M'
    when 3; 'G'
    when 4; 'T'
    when 5; 'Q'
    else # < 1000 or > 10^15, no scale or suffix
      return " #{prefix}"
    end
  "#{prefix}#{suffix}"
end