#include <bits/stdc++.h>
using namespace std;
const long double pi = acos(-1);
long double ghadr(long double x) { return max(x, -x); }
int32_t main() {
  long double x1, y1, r1, x2, y2, r2;
  cin >> x1 >> y1 >> r1;
  cin >> x2 >> y2 >> r2;
  long double dx = x1 - x2;
  long double dy = y1 - y2;
  long double d = sqrt(dx * dx + dy * dy);
  if (d > r1 + r2) {
    cout << 0;
    return 0;
  }
  if (d <= ghadr(r1 - r2)) {
    long double r = min(r1, r2);
    cout << setprecision(15) << r * r * pi;
    return 0;
  }
  long double x = 2 * acos((d * d + r1 * r1 - r2 * r2) / (2 * d * r1));
  long double y = 2 * acos((d * d + r2 * r2 - r1 * r1) / (2 * d * r2));
  long double ans1 = (x * r1 * r1 - r1 * r1 * sin(x)) / 2;
  long double ans2 = (y * r2 * r2 - r2 * r2 * sin(y)) / 2;
  cout << setprecision(15) << ans1 + ans2;
}
