import sys from collections import deque def main(): A, B = map(int, sys.stdin.readline().split()) move_vectors = [ (A, B), (A, -B), (-A, B), (-A, -B), (B, A), (B, -A), (-B, A), (-B, -A) ] cutoff_s = 20 # Determined based on required precision visited = set() queue = deque() initial = (1, 1) visited.add(initial) queue.append(initial) sum_contrib = 0.0 while queue: p, q = queue.popleft() s = p + q if s > cutoff_s: continue # Compute contribution contrib = 1.0 for _ in range(s): contrib /= s if contrib < 1e-100: # Prevent underflow by breaking early break sum_contrib += contrib for dx, dy in move_vectors: np = p + dx nq = q + dy if np > 0 and nq > 0: if (np, nq) not in visited: ns = np + nq if ns <= cutoff_s: visited.add((np, nq)) queue.append((np, nq)) # Print with sufficient precision print("{0:.12f}".format(sum_contrib)) if __name__ == "__main__": main()