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

public class Main implements Runnable {

	Scanner in;
	PrintWriter out;

	double getOsnSquare(double r) {

		return Math.PI * r * r;
	}

	double getVCil(double h, double osnSquare) {
		return osnSquare * h / 3;
	}

	private double getVCil1(double angle, double palka, double r) {
		double x = palka * Math.cos(angle);
		r += x;
		double h = Math.tan(angle) * r;
		return getVCil(h, getOsnSquare(r));
	}

	private double getVCil2(double angle, double palka, double r) {
		double h = Math.tan(angle) * r;
		return getVCil(h, getOsnSquare(r));
	}

	private double f(double angle, double palka, double r) {
		return getVCil1(angle, palka, r) - getVCil2(angle, palka, r);
	}

	void solve() {
		double l = in.nextDouble();
		double r = in.nextDouble() / 2;
		double low = 0.0;
		double high = 90.0;
		double eps = 1e-12;
		while (true) {
			double midLow = low + (high - low) / 3;
			double midHigh = high - (high - low) / 3;
			if (Math.abs(midHigh - high) < eps || Math.abs(midLow - low) < eps) {
				break;
			}
			if (f(low, l, r) > f(high, l, r)) {
				high = midHigh;
			} else {
				low = midLow;
			}
		}
		out.printf(Locale.US, "%.9f", f(high, l, r));
	}

	public void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

	public static void main(String args[]) {
		new Main().run();
	}

}
