#define DeBUG
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <string>
#include <set>
#include <sstream>
#include <map>
#include <list>
#include <bitset>
using namespace std ;
#define zero {0}
#define INF 0x3f3f3f3f
#define EPS 1e-8
#define TRUE true
#define FALSE false
typedef long long LL;
const double PI = acos(-1.0);
//#pragma comment(linker, "/STACK:102400000,102400000")
inline int sgn(double x)
{
return fabs(x) < EPS ? 0 : (x < 0 ? -1 : 1);
}
#define N 100005
double r1, r2;
double f(double x)
{
x=x*x;
return sqrt((r2 * r2 - x ) * (r1 * r1 - x ));
}
double simpson(double l, double r)
{
return (f(l) + f(r) + 4 * f((l + r) / 2)) / 6 * (r - l);
}
double work(double l, double r)
{
double mid = (l + r) / 2;
double ans = simpson(l, r);
if (sgn(ans - simpson(l, mid) - simpson(mid, r)) == 0)
{
return ans;
}
else
{
return work(l, mid) + work(mid, r);
}
}
int main()
{
#ifdef DeBUGs
freopen("//home//amb//桌面//1.in", "r", stdin);
#endif
while (scanf("%lf%lf", &r1, &r2) + 1)
{
if (r2 < r1)
swap(r1, r2);
double ans = work(0,r1);
printf("%.4lf\n", ans * 8.0);
}
return 0;
}