import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    }
} import java.math.BigDecimal; BigDecimal java.math import java.nio.ByteBuffer; ByteBuffer java.nio import java.util.*; util.* java public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    }
} Main public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    } main {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int a = sc.nextInt(); a sc.nextInt() sc.nextInt sc int b = sc.nextInt(); b sc.nextInt() sc.nextInt sc int h = sc.nextInt(); h sc.nextInt() sc.nextInt sc int m = sc.nextInt(); m sc.nextInt() sc.nextInt sc double ans = 0.0D; ans 0.0D if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        } h==0 && m==0 h==0 h 0 m==0 m 0 {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        } ans = Math.max(a,b) - Math.min(a,b) ans Math.max(a,b) - Math.min(a,b) Math.max(a,b) Math.max Math a b Math.min(a,b) Math.min Math a b System.out.println(ans) System.out.println System.out System System.out ans {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        } double kakudo1 = 30.0 * h + 0.5 * m; kakudo1 30.0 * h + 0.5 * m 30.0 * h 30.0 h 0.5 * m 0.5 m double kakudo2 = 6.0 * m; kakudo2 6.0 * m 6.0 m if (kakudo1 == 0) kakudo1 = 360.0; kakudo1 == 0 kakudo1 0 kakudo1 = 360.0 kakudo1 360.0 if (kakudo2 == 0) kakudo2 = 360.0; kakudo2 == 0 kakudo2 0 kakudo2 = 360.0 kakudo2 360.0 double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2); kakudo3 Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2) Math.max(kakudo1,kakudo2) Math.max Math kakudo1 kakudo2 Math.min(kakudo1,kakudo2) Math.min Math kakudo1 kakudo2 double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3)))); aa Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3)))) Math.sqrt Math (Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))) (Math.pow(a,2.0)) + (Math.pow(b,2.0)) (Math.pow(a,2.0)) Math.pow Math a 2.0 (Math.pow(b,2.0)) Math.pow Math b 2.0 (2 * a * b * Math.cos(Math.toRadians(kakudo3))) b 2 * a * b * Math.cos(Math.toRadians(kakudo3)) 2 a b Math.cos(Math.toRadians(kakudo3)) Math.cos Math Math.toRadians(kakudo3) Math.toRadians Math kakudo3 System.out.println(BigDecimal.valueOf(aa)) System.out.println System.out System System.out BigDecimal.valueOf(aa) BigDecimal.valueOf BigDecimal aa sc.close() sc.close sc String[] args args public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    }
} public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    }
} Main
import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int h = sc.nextInt();
        int m = sc.nextInt();

//        int mm = -1;
//        if (m%5 == 0)
//        {
//            mm = m/5;
//        }

        double ans = 0.0D;
        if (h==0 && m==0)//短針と長針が重なっているときは (大)a-(小)b 長針or短針の値を合わせる
        {
            ans = Math.max(a,b) - Math.min(a,b);
            System.out.println(ans);
        }
        else
        {
            double kakudo1 = 30.0 * h + 0.5 * m;
            double kakudo2 = 6.0 * m;
            if (kakudo1 == 0) kakudo1 = 360.0;
            if (kakudo2 == 0) kakudo2 = 360.0;
            double kakudo3 = Math.max(kakudo1,kakudo2) - Math.min(kakudo1,kakudo2);
            double aa = Math.sqrt((Math.pow(a,2.0)) + (Math.pow(b,2.0)) - (2 * a * b * Math.cos(Math.toRadians(kakudo3))));
            System.out.println(BigDecimal.valueOf(aa));
        }
        sc.close();
    }
}