def _TSat_P(P):
    """Define the saturated line, T=f(P)

    Parameters
    ----------
    P : float
        Pressure, [MPa]

    Returns
    -------
    T : float
        Temperature, [K]

    Notes
    ------
    Raise :class:`NotImplementedError` if input isn't in limit:

        * 0.00061121 ≤ P ≤ 22.064

    References
    ----------
    IAPWS, Revised Release on the IAPWS Industrial Formulation 1997 for the
    Thermodynamic Properties of Water and Steam August 2007,
    http://www.iapws.org/relguide/IF97-Rev.html, Eq 31

    Examples
    --------
    >>> _TSat_P(10)
    584.149488
    """
    if P < 611.212677 / 1000000.0 or P > 22.064:
        raise NotImplementedError('Incoming out of bound')
    n = [0, 1167.0521452767, -724213.16703206, -17.073846940092, 
        12020.82470247, -3232555.0322333, 14.91510861353, -4823.2657361591,
        405113.40542057, -0.23855557567849, 650.17534844798]
    beta = P ** 0.25
    E = beta ** 2 + n[3] * beta + n[6]
    F = n[1] * beta ** 2 + n[4] * beta + n[7]
    G = n[2] * beta ** 2 + n[5] * beta + n[8]
    D = 2 * G / (-F - (F ** 2 - 4 * E * G) ** 0.5)
    return (n[10] + D - ((n[10] + D) ** 2 - 4 * (n[9] + n[10] * D)) ** 0.5) / 2
