public class Euler525 {

    static double integrandCenterSpeed(double a, double b, double t) {
        double s = Math.sin(t);
        double c = Math.cos(t);
        double num = a * b * Math.sqrt(a * a * c * c + b * b * s * s);
        double den = a * a * s * s + b * b * c * c;
        return num / den;
    }

    static double simpson(double fa, double fm, double fb, double a, double b) {
        return (b - a) * (fa + 4 * fm + fb) / 6;
    }

    static double adaptiveSimpson(double aParam, double bParam, double a, double b, double eps, double whole,
            double fa, double fm, double fb, int depth) {
        double m = (a + b) / 2;
        double l = (a + m) / 2;
        double r = (m + b) / 2;

        double fl = integrandCenterSpeed(aParam, bParam, l);
        double fr = integrandCenterSpeed(aParam, bParam, r);

        double left = simpson(fa, fl, fm, a, m);
        double right = simpson(fm, fr, fb, m, b);
        double delta = left + right - whole;

        if (depth <= 0 || Math.abs(delta) <= 15 * eps) {
            return left + right + delta / 15;
        }

        return adaptiveSimpson(aParam, bParam, a, m, eps / 2, left, fa, fl, fm, depth - 1) +
                adaptiveSimpson(aParam, bParam, m, b, eps / 2, right, fm, fr, fb, depth - 1);
    }

    static double integrateCenterCurveLength(double a, double b) {
        double A = 0.0;
        double B = Math.PI / 2;
        double fa = integrandCenterSpeed(a, b, A);
        double fb = integrandCenterSpeed(a, b, B);
        double m = (A + B) / 2;
        double fm = integrandCenterSpeed(a, b, m);
        double whole = simpson(fa, fm, fb, A, B);
        double eps = 1e-13;
        double quarter = adaptiveSimpson(a, b, A, B, eps, whole, fa, fm, fb, 30);
        return 4 * quarter;
    }

    public static void main(String[] args) {
        double c14 = integrateCenterCurveLength(1.0, 4.0);
        double c34 = integrateCenterCurveLength(3.0, 4.0);
        double ans = c14 + c34;
        System.out.printf(java.util.Locale.US, "%.8f\n", ans);
    }
}
