#include<bits/stdc++.h>
using namespace std;
int main()
{
long double X,Y,R,x,y,r,a,b,c,n,m,ans=0;
cin>>X>>Y>>R>>x>>y>>r;
n=(X-x)*(X-x)+(Y-y)*(Y-y);
n=sqrt(n);
long double p=acos(-1);
if(n>=R+r)ans=0;
else if(n+r<=R||n+R<=r)ans=p*min(r,R)*min(r,R);
else{
a=acos((R*R+n*n-r*r)/(2*R*n))*2;
b=acos((r*r+n*n-R*R)/(2*r*n))*2;
ans=(long double)(R*R*a+r*r*b-R*R*sin(a)-r*r*sin(b))*0.5;
}
cout<<fixed<<setprecision(20)<<ans;
return 0;
}