code: def hugoniot_t(rho, rho0, c0, s, gamma0, q, theta0, n, mass,
                 three_r=3. * constants.R, t_ref=300., c_v=0.):
      
      if isuncertainties([rho, rho0, c0, s, gamma0, q, theta0]):
          f_v = np.vectorize(uct.wrap(hugoniot_t_single),
                             excluded=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
      else:
          f_v = np.vectorize(hugoniot_t_single, excluded=[1, 2, 3, 4, 5, 6,
                                                          7, 8, 9, 10, 11])
      return f_v(rho, rho0, c0, s, gamma0, q, theta0, n, mass,
                 three_r=three_r, t_ref=t_ref, c_v=c_v)
docs: calculate temperature along a hugoniot
  
      :param rho: density in g/cm^3
      :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 gamma0: Gruneisen parameter at 1 bar
      :param q: logarithmic derivative of Gruneisen parameter
      :param theta0: Debye temperature in K
      :param n: number of elements in a chemical formula
      :param mass: molar mass in gram
      :param three_r: 3 times gas constant.
          Jamieson modified this value to compensate for mismatches
      :param t_ref: reference temperature, 300 K
      :param c_v: heat capacity, see Jamieson 1983 for detail
      :return: temperature along hugoniot