/*  ex4_2
    kosaq       */

#include <stdio.h>
#include <math.h>//数学関数を使用

double distance(int centi_hour, int centi_minute, int h_hour, int m_minute);//プロトタイプ宣言をする。

int main(void){
    int centi_A, centi_B, hour, minute;//それぞれ、時針の長さ、分針の長さ、現在の時間H時M分を定義
    scanf("%d %d %d %d", &centi_A, &centi_B, &hour, &minute);//時針の長さ、分針の長さ、現在の時間H時M分を入力
    double ans;//出力する答え（二本の針の固定されていない端点の間の長さ）

    ans = distance(centi_A, centi_B, hour, minute);//ansに関数から得られる値を代入
    printf("%.20f\n", ans);//答えを出力。誤差を10^-9以下にする為に余裕を持った長さで出力
    return 0;

}

/*
以下は関数の定義*/

double distance(int centi_hour, int centi_minute, int h_hour, int m_minute){//関数を定義する。
    double h_radian, m_radian;//12時を0ラジアンとして、それぞれ時針と分針の角度（単位はラジアン）
    double rad_difference;//時針と分針の角度の差（単位はラジアン）
    double distance;//二本の針の固定されていない端点の間の長さ

    h_radian = 2 * M_PI * ((double)h_hour + (double)m_minute / 60) / 12;//１周2πラジアンに対し、((double)h_hour + (double)m_minute / 60) / 12　周する。
    m_radian = 2 * M_PI * (double)m_minute / 60;//１周2πラジアンに対し、(double)m_minute / 60　周する。
    rad_difference = fabs(h_radian - m_radian);//時針と分針の角度の差の絶対値

    distance = sqrt(pow(centi_hour, 2) + pow(centi_minute, 2) - 2 * centi_hour * centi_minute * cos(rad_difference));//余弦定理を用いて値を出す。

    return (distance);//返り値の値をreturnで返す。
}