There is a polyline going through points (0, 0) – (*x*, *x*) – (2*x*, 0) – (3*x*, *x*) – (4*x*, 0) – ... - (2*kx*, 0) – (2*kx* + *x*, *x*) – .... 

We know that the polyline passes through the point (*a*, *b*). Find minimum positive value *x* such that it is true or determine that there is no such *x*.
Only one line containing two positive integers *a* and *b* (1 ≤ *a*, *b* ≤ 10<sup class="upper-index">9</sup>).
str_0=input()
list_0=str_0.split(' ')
a=int(list_0[0])
b=int(list_0[1])


def isin(a,b,n):
    boole=False
    t_1=(a-b)/(2*n)
    if a>=2*n*t_1 and a<=2*(n+1)*t_1:
        boole=True
        t_1=(a-b)/(2*n)
    else:
        t_1=0
    t_2=(a+b)/(2*n+2)
    if a>=(2*n+1)*t_2 and a<=2*(n+1)*t_2:
        boole=True
        t_2=(a+b)/(2*n+2)
    else:
        t_2=0
    if not boole:
        return [False,[]]
    else:
        if t_2==0:
            return[True,t_1]
        elif t_1==0:
            return[True,t_2]
        else:
            if t_1<t_2:
                return[True,t_1]
            else:
                return[True,t_2]

if a<b:
    print(-1)
else:
    n=1
    while not isin(a,b,n)[0]:
        n=n+1
    print('%.12f' % isin(a,b,n)[1])
