/* Manfred Sauter */
#include <cmath>
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
using namespace std;

const double EPS = 1e-9;

#define in cin


double w, h;

const double PI = 2. * acos(0.);



inline double calc(double r)
{

	if (2.*r > w+EPS) return 0.;
	double s1 = w, s2 = h - 2.*r;
	double res = 0.;

	double A = PI *r*r;
	double peri = 2.*PI*r;
	if (s1 >= peri-EPS) res = max(res, A*s2);
	if (s2 >= peri-EPS) res = max(res, A*s1);

	return res;
}




int main()
{
	//int c = 0;

	while (in >> w >> h)
	{
		if (!w && !h) break;

//		double step = w/2. / 10000;
/*
		stringstream ss;
		ss << "plot." << ++c << ".dat";
		ofstream out(ss.str().c_str());
*/

/*
		double best = 0.;
		for (double r=0.; r<=w/2.; r+= step)
		{
			double c = calc(r);
//			out << r << " " << c << endl;
			best = max(best, c);
		}
*/
		double best = 0.;

		double r1 = h/(2.*(PI+1.));
		double r2 = w/(2.*PI);
		double r3 = w/2.;
		best = max(best, calc(r1));
		best = max(best, calc(r2));
		best = max(best, calc(r3));


		printf("%.3lf\n", best);
	}


	return 0;
}
