def winkler_score(tau, target, forecast):
    """R. L. Winkler, A Decision-Theoretic Approach to Interval Estimation, J. Am. Stat. Assoc. 67 (337) (1972) 187–191. doi:10.2307/2284720. """
    delta = forecast[1] - forecast[0]
    if forecast[0] < target and target < forecast[1]:
        return delta
    elif forecast[0] > target:
        return delta + 2 * (forecast[0] - target) / tau
    elif forecast[1] < target:
        return delta + 2 * (target - forecast[1]) / tau
