// Arup Guha
// 8/3/2026
// Solution to 1990 UCF HS Programming Contest Problem: Got It Covered

import java.util.*;

public class covered {
	
	public static void main(String[] args) {
	
		Scanner stdin = new Scanner(System.in);	
		while (stdin.hasNext()) {
		
			// Get input.
			double[] r1 = new double[4];
			for (int i=0; i<4; i++) r1[i] = stdin.nextDouble();
			double[] r2 = new double[4];
			for (int i=0; i<4; i++) r2[i] = stdin.nextDouble();
			
			//Create obects.
			rectangle rA = new rectangle(r1[0], r1[1], r1[2], r1[3]);
			rectangle rB = new rectangle(r2[0], r2[1], r2[2], r2[3]);
			
			// Here it the total covered area, inclusion-exclusion principle!
			double res = rA.area() + rB.area() - rA.intersect(rB);
			System.out.printf("Covered Area = %.3f\n", res);
		}
	}
}

class rectangle {

	public double minX;
	public double maxX;
	public double minY;
	public double maxY;
	
	// Store the coordinates in a useful way for us.
	public rectangle(double x1, double y1, double x2, double y2) {
		minX = Math.min(x1, x2);
		maxX = Math.max(x1, x2);
		minY = Math.min(y1, y2);
		maxY = Math.max(y1, y2);
	}
	
	// Returns the area of this rectangle.
	public double area() {
		return (maxX-minX)*(maxY-minY);
	}
	
	// Returns the area of intersection between this rectangle and other.
	public double intersect(rectangle other) {
	
		// Easy cases.
		if (other.maxX <= this.minX) return 0;
		if (other.minX >= this.maxX) return 0;
		if (other.maxY <= this.minY) return 0;
		if (other.minY >= this.maxY) return 0;
		
		// Here is where our scan (vertical) lines begin and end.
		double startX = Math.max(this.minX, other.minX);
		double endX = Math.min(this.maxX, other.maxX);
		
		// Same for horizontal lines.
		double startY = Math.max(this.minY, other.minY);
		double endY = Math.min(this.maxY, other.maxY);
	
		// Here we go!
		return (endX-startX)*(endY-startY);
	}

}