docs: def calc_horizontal_infrared(sky_cover, dry_bulb, dew_point):
      """Calculate horizontal infrared radiation intensity.
  
      See EnergyPlus Enrineering Reference for more information:
      https://bigladdersoftware.com/epx/docs/8-9/engineering-reference/climate-calculations.html#sky-radiation-modeling
  
      Note:
          [1] Walton, G. N. 1983. Thermal Analysis Research Program Reference Manual.
          NBSSIR 83-2655. National Bureau of Standards, p. 21.
  
          [2] Clark, G. and C. Allen, “The Estimation of Atmospheric Radiation for
          Clear and Cloudy Skies,” Proceedings 2nd National Passive Solar Conference
          (AS/ISES), 1978, pp. 675-678.
  
      Args:
          sky_cover: A float value between 0 and 10 that represents the opaque
              sky cover in tenths (0 = clear; 10 = completely overcast)
          dry_bulb: A float value that represents the dry bulb temperature
              in degrees C.
          dew_point: A float value that represents the dew point temperature
              in degrees C.
  
      Returns:
          horiz_ir: A horizontal infrared radiation intensity value in W/m2.
      """
      # stefan-boltzmann constant
      SIGMA = 5.6697e-8
  
      # convert to kelvin
      db_k = dry_bulb + 273.15
      dp_k = dew_point + 273.15
  
      # calculate sky emissivity and horizontal ir
      sky_emiss = (0.787 + (0.764 * math.log(dp_k / 273.15))) * \
          (1 + (0.022 * sky_cover) - (0.0035 * (sky_cover ** 2)) +
           (0.00028 * (sky_cover ** 3)))
      horiz_ir = sky_emiss * SIGMA * (db_k ** 4)
      return horiz_ir