def _uvprime_to_CCT_Duv_parabolic(tmm1, tm, tmp1, dmm1, dm, dmp1, sign):
    """Ohno 2011 parabolic technique for computing CCT.

    Parameters
    ----------
    tmm1 : `numpy.ndarray`
        "T sub m minus 1", the m+1th CCT value
    tm : `numpy.ndarray`
        "T sub m", the mth CCT value
    tmp1 : `numpy.ndarray`
        "T sub m plus 1", the m+1th CCT value
    dmm1 : `numpy.ndarray`
        "d sub m minus 1", the m-1th distance value
    dm : `numpy.ndarray`
        "d sub m", the mth distance value
    dmp1 : `numpy.ndarray`
        "d sub m plus 1", m+1th distance value
    sign : `int`
        either -1 or 1, indicating the sign of the solution

    Returns
    -------
    `tuple`
        CCT, Duv values

    """
    x = (tmm1 - tm) * (tmp1 - tmm1) * (tm - tmp1)
    a = (tmp1 * (dmm1 - dm) + tm * (dmp1 - dmm1) + tmm1 * (dm - dmp1)) * x ** -1
    b = (-(tmp1 ** 2 * (dmm1 - dm) + tm ** 2 * (dmp1 - dmm1) + tmm1 ** 2 *
           (dm - dmp1)) * x ** -1)
    c = (-(dmp1 * (tmm1 - tm) * tm * tmm1 + dm *
           (tmp1 - tmm1) * tmp1 * tmm1 + dmm1 *
           (tm - tmp1) * tmp1 * tm) * x ** -1)

    CCT = -b / (2 * a)
    Duv = sign * (a * CCT ** 2 + b * CCT + c)
    return CCT, Duv