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

public class frame_ia {

	private static Scanner in;
	private static PrintWriter out;

	public static void main(String[] args) throws IOException {
		in = new Scanner(new FileReader("frame.in"));
		out = new PrintWriter("frame.out");
		int a = in.nextInt();
		myAssert((1 <= a) && (a <= 1000));
		int b = in.nextInt();
		myAssert((1 <= b) && (b <= 1000));
		int c = in.nextInt();
		myAssert((1 <= c) && (c <= 1000));
		int d = in.nextInt();
		myAssert((1 <= d) && (d <= 1000));
		int[] tri = {a, b, c};
		Arrays.sort(tri);
		myAssert(tri[2] < tri[1] + tri[0]);
		
		double p = (a + b + c) / 2d;
		double s1 = Math.sqrt(p * (p - a) * (p - b) * (p - c));
		double r1 = s1 / p;
		double r2 = r1 - d;
		myAssert(r2 > 1e-5);
		
		double r21 = r2 / r1;
		r21 = r21 * r21;
		double s2 = s1 * r21;
		out.println(s1 - s2);
		
		in.close();
		out.close();
	}

	private static void myAssert(boolean b) {
		String msg = "ERROR IN TEST!!!";
		if (!b) {
			out.println(msg);
			System.out.println(msg);
			out.close();
			System.exit(1);
		}
	}

}
