Conway 的眼镜起雾了, 双膝发软,双臂沉重。 手心出汗,妈妈的意面。 他很紧张,但表面上他看起来平静而准备就绪, 准备干干净净、整整齐齐地回家,但街道却让人眼花缭乱。
为了回家,Conway 需要跟随正前方的路标(而不是左边或右边)。为了看清路标,他抬起头,使镜片的中心与路标的中心对齐,此时镜片总是垂直于视线。不幸的是,Conway 的眼镜起雾了,所以他需要用他那块可靠的超细纤维布擦拭镜片。Conway 只能通过镜片上的干净区域看清东西,因此他想知道镜片上需要擦拭的区域的高度,以便知道自己需要擦拭多少。
图 1:左侧显示了该场景的一个示例。虚线表示视线。镜片上的绿色区域表示镜片上的清晰区域。左侧的场景可以抽象为右侧的图示。
给定以下信息,求出在能够看到整个路标之前,他需要擦拭的最小区域的高度(即绿色线段的最小长度)。
- 瞳孔到镜片的距离:$d$ 单位。
- 瞳孔到路标的水平距离:$x$ 单位。
- 瞳孔到路标中心的垂直距离:$y$ 单位。
- 路标的垂直尺寸:$h$ 单位。
输入格式
输入包含四个由空格分隔的整数:$d, x, y, h$。保证 $0 < d < x < 10\,000$,$0 \le y < 10\,000$,且 $0 < h < 10\,000$。
输出格式
输出一个数字,表示镜片上清晰区域的最小所需高度。如果绝对误差或相对误差不超过 $10^{-6}$,则认为你的答案是正确的。
样例
输入样例 1
5 40 30 10
输出样例 1
0.802890
输入样例 2
1 100 0 20
输出样例 2
0.200000