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

def hugoniot_rho(p, rho0, c0, s, min_strain=0.01):
    """
    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
    """
    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)