// Задача "Посты охраны"
// 3-я личная Интернет-олимпиада сезона 2009/2010
// Автор задачи: Владимир Ульянцев, ulyantsev@rain.ifmo.ru
// Автор решения: Маским Носенко, nosenkomax@gmail.com

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

public class guard_mn implements Runnable {

	public static void main(String args[]) {
		new Thread(new guard_mn()).start();
	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	private String FNAME = "guard";
	boolean eof = false;

	@Override
	public void run() {
		try {
			Locale.setDefault(Locale.US);
			br = new BufferedReader(new FileReader(FNAME + ".in"));
			out = new PrintWriter(FNAME + ".out");
			solve();
			br.close();
			out.close();

		} catch (Exception e) {
			e.printStackTrace();
			System.exit(566);
		}
	}

	String nextToken() {
		while (st == null || !st.hasMoreTokens()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException e) {
				eof = true;
				return "0";
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(nextToken());
	}

	long nextLong() {
		return Long.parseLong(nextToken());
	}

	double nextDouble() {
		return Double.parseDouble(nextToken());
	}

	void My_Assert(boolean b, String s) {
		if (!b)
			throw new Error("Assertion " + s);
	}

	final double MAX = 1e5;

	private void solve() {
		double a = nextDouble();
		double b = nextDouble();
		double c = nextDouble();
		My_Assert(1 <= a && a <= MAX, "a is out of range: " + a);
		My_Assert(1 <= b && b <= MAX, "b is out of range: " + b);
		My_Assert(1 <= c && c <= MAX, "c is out of range: " + c);

		if (a < b) {
			a = b + 0 * (b = a);
		}

		if (a < c) {
			a = c + 0 * (c = a);
		}

		double ans = Double.POSITIVE_INFINITY;

		if (a * a > b * b + c * c)
			ans = a / 2;

		if (a < b + c) {
			double p = (a + b + c) / 2;
			double S = Math.sqrt(p * (p - a) * (p - b) * (p - c));
			double R = a * b * c / (4 * S);
			ans = Math.min(ans, R);
		}

		out.println(ans);

	}
}