UNITS = %w[kbps Mbps Gbps Tbps]

def from_human(bps, unit)
  (UNITS.size+1).times do |round|
    return bps unless UNITS[round..-1].include?(unit)
    bps *= 1000
  end
end

def to_human(bps)
  unit = "bps"
  (UNITS.size+1).times do |round|
    return "%.2f%s" % [bps, unit] if bps.abs < 1000
    unit = UNITS[round]
    bps /= 1000
  end
end