import math


def calc_es_v_dew(t_c, rh):
    """
    Calculates vapor pressure, saturation vapor pressure, and dew point in celcius. See [BriceHalls]_

    :param t_c: Temperature in Celcius.
    :type t_c: float
    :param rh: Relative humdity 0-100
    :type rh: float
    :return: [vapor pressure, saturation vapor pressure, dew point]
    :rtype: [float, float, float]
    :Example:

        >>> import hygrometry
        >>> hygrometry.calc_es_v_dew(20.1, 50.3)
        [23.514683799663736, 11.827885951230858, 9.451033779734948]

    """
    t_c = float(t_c)
    rh = float(rh)
    es = 6.112 * math.exp(17.67 * t_c / (t_c + 243.5))
    v = es * rh / 100.0
    if v != 0:
        l = math.log(v / 6.112)
        dew_c = 243.5 * l / (17.67 - l)
    else:
        dew_c = float('nan')
    return [es, v, dew_c]