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