import java.io.*;
import java.util.*;

public class guard_mb_wa {
    private static void myAssert(String msg, boolean exp) {
        if (!exp) {
            throw new AssertionError(msg);
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new FileReader("guard.in"));
        StringTokenizer line = new StringTokenizer(in.readLine());
        int[] sides = new int[3];
        for (int i = 0; i < sides.length; ++i) {
            sides[i] = Integer.parseInt(line.nextToken());
            myAssert("Triangle side limit is illegal", 1 <= sides[i] && sides[i] <= 100000);
        }
        myAssert("Extra tokens", !line.hasMoreTokens());
        in.close();

        Arrays.sort(sides);

        PrintWriter out = new PrintWriter("guard.out");

        long sqrtDiff = (long)sides[0] * sides[0] + (long)sides[1] * sides[1] - (long)sides[2] * sides[2];
        if (sqrtDiff > 0) {
            double halfP = (sides[0] + sides[1] + sides[2]) / 2;
            double heronSquare = Math.sqrt(halfP * (halfP - sides[0]) * (halfP - sides[1]) * (halfP - sides[2]));
            double sidesMul = 1.0 * sides[0] * sides[1] * sides[2];
            out.println(sidesMul / (heronSquare * 4));
        } else {
            out.println(sides[2] / 2.0);
        }
        out.close();
    }
}
