#include <iostream>
#include <cstdio>

#include <algorithm>
#include <cmath>
#include <cstring>

#include <vector>
#include <map>
#include <set>
#include <queue>

using namespace std;

#define pb(x) push_back(x)
#define mp(a, b) make_pair (a, b)
#define sqr(x) ((x)*(x))

typedef unsigned long double uld;

const uld EPS = 1e-12;
const uld PI = 3.1415926535897932384626433832795;

uld l, d;

uld s (uld H) {
	uld r = d * 0.5;
	uld a = sqrt (sqr (l) - sqr (H) + EPS);

	return (r * r * H + a * r * H + a * a * H / 3);
}

void fmul (uld z_a, uld d_a, uld z_b, uld d_b, uld &z, uld &d) {
	d = d_a * d_b + z_a * d_b + d_a * z_b;

	z = z_a * z_b + (int) (d);
	d = d - (int) (d);	
}

void fsum (uld z_a, uld d_a, uld z_b, uld d_b, uld &z, uld &d) {	
	z = (int) (z_a + d_a + z_b + d_b);
	d = z_a + d_a + z_b + d_b - z;
}

void getans (uld H, uld &Z, uld &D) {
	uld r = d * 0.5;	
	uld a = sqrt (sqr (l) - sqr (H) + EPS);

	uld z_f1, d_f1, z_f2, d_f2, z_f3, d_f3;

	uld z_r = (int) (r), d_r = r - z_r;
	uld z_H = (int) (H), d_H = H - z_H;
	uld z_a = (int) (a), d_a = a - z_a;

	fmul (z_r, d_r, z_r, d_r, z_f1, d_f1);
	fmul (z_f1, d_f1, z_H, d_H, z_f1, d_f1);

	fmul (z_a, d_a, z_r, d_r, z_f2, d_f2);
	fmul (z_f2, d_f2, z_H, d_H, z_f2, d_f2);

	fmul (z_a, d_a, z_a, d_a, z_f3, d_f3);
	fmul (z_f3, d_f3, z_H, d_H, z_f3, d_f3);
	fmul (z_f3, d_f3, 0, 1.0/3, z_f3, d_f3);

	uld z, d;

	fsum (z_f1, d_f1, z_f2, d_f2, z, d);
	fsum (z, d, z_f3, d_f3, z, d);
	fmul (z, d, (int) PI, PI - (int) PI, z, d);	

	Z = z, D = d;
}

int main () {
	//freopen ("input.txt", "r", stdin);	
	//freopen ("output.txt", "w", stdout);

	cin >> l >> d;

	uld h_l = 0, h_r = l;
	while (h_r - h_l > EPS) {
		uld len = (h_r - h_l) / 3;
		uld m1 = h_l + len;
		uld m2 = h_r - len;

		uld z_s1, d_s1, z_s2, d_s2;
		getans (m1, z_s1, d_s1);
		getans (m2, z_s2, d_s2);

		uld s1 = s (m1);
		uld s2 = s (m2);		

		if (z_s1 < z_s2 || (fabs (z_s1 - z_s2) < EPS && d_s1 < d_s2))
			h_l = m1; else
			h_r = m2;		
	}

	uld z, d;
	getans (h_r, z, d);
	printf ("%d.", (int) (z));
	for (int i = 0; i < 11; i++) {
		d *= 10;
		int x = (int) d;
		printf ("%d", x);
		d -= x;
	}

	return 0;
}