local mmi, mma = math.min, math.max local x, y = io.read("*n", "*n") local z, w = io.read("*n", "*n") local amin = mma(z, y - w) local amax = 1000000007 for irep = 1, 2000 do local a = (amin + amax) / 2 local v = (a * a - z * z) * ((a + w) * (a + w) - y * y) if v <= x * x then amin = a else amax = a end end local a = amin local height = math.sqrt((a + w) * (a + w) - y * y) local width = math.sqrt(a * a - z * z) print(x - y * height / 2 - z * width / 2 - (width - y) * (height - z) / 2)