def calculate_ef_var(tpf, fpf):
    """
    determine variance due to actives (efvar_a) decoys (efvar_d) and s2, the slope of the ROC curve tangent to the
    fpf @ which the enrichment factor was calculated
    :param tpf: float tpf @ which the enrichment factor was calculated
    :param fpf: float fpf @ which the enrichment factor was calculated
    :return efvara, efvard, s2: tuple
    """

    efvara = (tpf * (1 - tpf))
    efvard = (fpf * (1 - fpf))

    ef = tpf / fpf
    if fpf == 1:
        return(0, 0, 0)
    else:
        s = ef * ( 1 + (np.log(ef)/np.log(fpf)))
        s2 = s * s
        return (efvara, efvard, s2)