#include <bits/stdc++.h>
using namespace std;
int main() {
  long double x1, x2, y1, y2, r1, r2;
  long double d, s1, s2, s, ang1, ang2, stri1, stri2, ssec1, ssec2, p;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  if (r1 > r2) {
    p = x1;
    x1 = x2;
    x2 = p;
    p = y1;
    y1 = y2;
    y2 = p;
    p = r1;
    r1 = r2;
    r2 = p;
  }
  d = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
  if (d + 0.000000001 >= r1 + r2)
    printf("0.00000000000000000000\n");
  else if (d <= r2 - r1 + 0.000000001) {
    s = M_PI * r1 * r1;
    cout.precision(15);
    cout << s << endl;
  } else {
    ang1 = 2.0 * acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));
    ang2 = 2.0 * acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));
    s = 0.5 * ang1 * r1 * r1 - 0.5 * r1 * r1 * sin(ang1) +
        0.5 * ang2 * r2 * r2 - 0.5 * r2 * r2 * sin(ang2);
    cout.precision(15);
    cout << s << endl;
  }
  return 0;
}
