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