#include <bits/stdc++.h>
using namespace std;
double sqr(double a) { return a * a; }
int main() {
  cout.precision(10);
  double xa, ya, ra, xb, yb, rb;
  cin >> xa >> ya >> ra >> xb >> yb >> rb;
  double d = sqrt(sqr(xb - xa) + sqr(yb - ya));
  double r = min(ra, rb);
  double R = max(ra, rb);
  if (d >= ra + rb)
    cout << 0 << endl;
  else if (r + d <= R)
    cout << 3.1415926535897932384626433832795 * r * r << endl;
  else {
    long double d1 = (sqr(d) + sqr(ra) - sqr(rb)) / (2 * d);
    long double d2 = (sqr(d) + sqr(rb) - sqr(ra)) / (2 * d);
    long double a1 = acos(d1 / ra);
    long double a2 = acos(d2 / rb);
    long double area1 = a1 * sqr(ra) - d1 * ra * sin(a1);
    long double area2 = a2 * sqr(rb) - d2 * rb * sin(a2);
    cout << area1 + area2 << endl;
  }
}
