The determinant of a matrix 2 × 2 is defined as follows:

A matrix is called degenerate if its determinant is equal to zero. 

The norm ||*A*|| of a matrix *A* is defined as a maximum of absolute values of its elements.

You are given a matrix <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/e78540a0de68f85833f82714a7141114b781276e.png" style="max-width: 100.0%;max-height: 100.0%;"/>. Consider any degenerate matrix *B* such that norm ||*A* - *B*|| is minimum possible. Determine ||*A* - *B*||.
The first line contains two integers *a* and *b* (|*a*|, |*b*| ≤ 10<sup class="upper-index">9</sup>), the elements of the first row of matrix *A*. 

The second line contains two integers *c* and *d* (|*c*|, |*d*| ≤ 10<sup class="upper-index">9</sup>) the elements of the second row of matrix *A*.
a, b = [int(x) for x in input().split()]
c, d = [int(x) for x in input().split()]

def isCrossing(square1, square2):
    for vert in square1:
        if square2[1][1] * vert[0] < vert[1] * square2[0][0] < square2[0][1] * vert[0]:
            return True
        if square2[0][0] * vert[1] < vert[0] * square2[0][1] < square2[3][0] * vert[1]:
            return True
    for vert in square2:
        if square1[1][1] * vert[0] < vert[1] * square1[0][0] < square1[0][1] * vert[0]:
            return True
        if square1[0][0] * vert[1] < vert[0] * square1[0][1] < square1[3][0] * vert[1]:
            return True
    return False

def binSearch(left, right, a, b, c, d):
    m = (left + right) / 2
    eps = 10 ** -10
    while abs(right - left) > eps:
        if isCrossing(([a - m, b - m], [a - m, b + m], [a + m, b + m], [a + m, b - m]),
                ([c - m, d - m], [c - m, d + m], [c + m, d + m], [c + m, d - m])):
            right = m
        else:
            left = m
            right = right + (right - left)
        m = (left + right) / 2
        # print(left, m, right)
    return m

print(binSearch(10**-10, 10, a, b, c, d))
