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*.
def readInts():
    return map(int, input().split())

a11, a12 = readInts()
a21, a22 = readInts()

def zero(seg):
    left, right = seg
    return left <= 0 <= right
    
def mult_seg(seg1, seg2):
	l1, r1 = seg1
	l2, r2 = seg2
	
	ends = [l1 * l2, l1 * r2, r1 * l2, r1 * r2]
	ends.sort()
	
	return ends[0], ends[-1]
	
def intersect(seg1, seg2):
	l1, r1 = seg1
	l2, r2 = seg2
	
	return max(l1, l2) <= min(r1, r2)

def can(limit):
    b11 = a11 - limit, a11 + limit
    b12 = a12 - limit, a12 + limit
    b21 = a21 - limit, a21 + limit
    b22 = a22 - limit, a22 + limit
    
    # print(b11, b12, b21, b22)
    
    if (zero(b11) or zero(b22)) and (zero(b21) or zero(b12)):
        return True
    
    left_seg = mult_seg(b11, b22)
    right_seg = mult_seg(b12, b21)
    
    # print(left_seg, right_seg)
    
    return intersect(left_seg, right_seg)

# debug = 0.2
# can(debug)

left, right = 0, 1e9 + 1
for it in range(200):
    mid = (left + right) / 2
    
    # print(mid, can(mid))
    if can(mid):
        right = mid
    else:
        left = mid
        
print(right)