def GDP_to_DP()

in utils_data.py [0:0]


def GDP_to_DP(mu, delta):
    def deltaval(eps):
        return norm.cdf(-eps / mu + mu / 2) - math.exp(eps) * norm.cdf(
            -eps / mu - mu / 2
        )

    if delta <= 0:  # No finite epsilon value is possible
        return math.inf
    lower = 0.0
    upper = 500.0
    while (
        abs(deltaval((lower + upper) / 2) - delta) >= delta / 10
        and (lower + upper / 2) > 0
    ):  # binary search to get within (1+-1/10)*delta
        # print("Delta: ", deltaval((lower+upper)/2), "Eps value: ", (lower+upper)/2)
        if deltaval((lower + upper) / 2) < delta:
            upper = (lower + upper) / 2
        else:
            lower = (lower + upper) / 2
    return (lower + upper) / 2