code: def hugoniot_rho(p, rho0, c0, s, min_strain=0.01):
      
      if isuncertainties([p, rho0, c0, s]):
          f_u = np.vectorize(uct.wrap(hugoniot_rho_single),
                             excluded=[1, 2, 3, 4])
          return f_u(p, rho0, c0, s, min_strain=min_strain)
      else:
          f_v = np.vectorize(hugoniot_rho_single, excluded=[1, 2, 3, 4])
          return f_v(p, rho0, c0, s, min_strain=min_strain)
docs: calculate density in g/cm^3 from a hugoniot curve
  
      :param p: pressure in GPa
      :param rho0: density at 1 bar in g/cm^3
      :param c0: velocity at 1 bar in km/s
      :param s: slope of the velocity change
      :param min_strain: defining minimum v/v0 value to search volume for
      :return: density in g/cm^3
      :note: this is a wrapper function by vectorizing hugoniot_rho_single