function rotatePoint2D(nRadians, nX, nY) {
	var nSin = Math.sin(nRadians);
	var nCos = Math.cos(nRadians);
	var x = nCos * nX - nSin * nY;
	var y = nSin * nX + nCos * nY;
	return {x: x, y: y};
}
// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	const inputLines = input.split("\n");
	const line0 = inputLines[0];
	const line0vars = line0.split(" ");

	// 3 4 9 0

	const a = parseInt(line0vars[0], 10); // 時針長さ
	const b = parseInt(line0vars[1], 10); // 分針長さ
	const h = parseInt(line0vars[2], 10); // 時
	const m = parseInt(line0vars[3], 10); // 分
	var output;

	// tmp = input[1].split(" ");
	// //文字列から10進数に変換するときはparseIntを使います
	// var a = parseInt(input[0], 10);
	// var b = parseInt(tmp[0], 10);
	// var c = parseInt(tmp[1], 10);
	// var s = input[2];

	// var aRad = Math.sin(h * 30 * (Math.PI / 180));
	// var bRad = Math.sin(m * 6 * (Math.PI / 180));
	var aRad = (h * 30 + m * 0.5) * (Math.PI / 180);
	var bRad = m * 6 * (Math.PI / 180);
	var x1, y1, x2, y2;
	resultA = rotatePoint2D(aRad, 0, a);
	resultB = rotatePoint2D(bRad, 0, b);
	x1 = resultA.x;
	y1 = resultA.y;
	x2 = resultB.x;
	y2 = resultB.y;
	// console.log(aRad, bRad);
	// console.log(x1, y1, x2, y2);
// var x1 = 10 ;
// var y1 = 20 ;
// var x2 = 30 ;
// var y2 = 40 ;

output = Math.sqrt( Math.pow( x2-x1, 2 ) + Math.pow( y2-y1, 2 ) ) ;

	//出力
	console.log(output);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

// node index.js
// 1
// 2 3
// test
// (Ctrl + D)