public class Euler613 {
    public static String solve() {
        int n = 1024;
        double[] xq = new double[n], wq = new double[n];
        int m = (n + 1) / 2;
        for (int i = 0; i < m; i++) {
            double z = Math.cos(Math.PI * (i + 0.75) / (n + 0.5));
            for (int iter = 0; iter < 100; iter++) {
                double p1 = 1, p2 = 0;
                for (int j = 1; j <= n; j++) {
                    double p3 = p2;
                    p2 = p1;
                    p1 = ((2 * j - 1) * z * p2 - (j - 1) * p3) / j;
                }
                double pp = n * (z * p1 - p2) / (z * z - 1.0), z1 = z;
                z = z1 - p1 / pp;
                if (Math.abs(z - z1) < 1e-18)
                    break;
            }
            double p1 = 1, p2 = 0;
            for (int j = 1; j <= n; j++) {
                double p3 = p2;
                p2 = p1;
                p1 = ((2 * j - 1) * z * p2 - (j - 1) * p3) / j;
            }
            double pp = n * (z * p1 - p2) / (z * z - 1.0), ww = 2.0 / ((1.0 - z * z) * pp * pp);
            xq[i] = -z;
            xq[n - 1 - i] = z;
            wq[i] = ww;
            wq[n - 1 - i] = ww;
        }
        for (int i = 0; i < n; i++) {
            xq[i] = 0.5 * (xq[i] + 1.0);
            wq[i] *= 0.5;
        }
        double integral = 0;
        for (int i = 0; i < n; i++) {
            double u = xq[i], wu = wq[i], omu = 1.0 - u, px = 40.0 * u, jac = 1200.0 * omu;
            for (int j = 0; j < n; j++) {
                double v = xq[j], wv = wq[j], py = 30.0 * omu * v;
                double ux = 40.0 - px, uy = -py, vx = -px, vy = 30.0 - py;
                double cross = ux * vy - uy * vx, dot = ux * vx + uy * vy;
                integral += wu * wv * Math.atan2(Math.abs(cross), dot) * jac;
            }
        }
        return String.format("%.10f", integral / (1200.0 * Math.PI));
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
