#include <bits/stdc++.h>
using namespace std;
long double gimmearea(long double x1, long double y1, long double r1,
                      long double x2, long double y2, long double r2,
                      long double c) {
  long double t1, t2, p1, p2;
  t1 = acos((r1 * r1 + c - r2 * r2) / (2 * r1 * sqrt(c)));
  t2 = acos((r2 * r2 + c - r1 * r1) / (2 * r2 * sqrt(c)));
  p1 = sin(2 * t1);
  p2 = sin(2 * t2);
  return (r1 * r1 * t1 + r2 * r2 * t2) - 0.5 * (r1 * r1 * p1 + r2 * r2 * p2);
}
int main() {
  long double x1, y1, r1, x2, y2, r2, c, ans;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  c = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
  if (c >= (r1 + r2) * (r1 + r2)) {
    ans = 0;
  } else if (sqrt(c) <= fabs(r1 - r2)) {
    if (r2 < r1) r1 = r2;
    ans = 3.14159265358979323846264338 * r1 * r1;
  } else {
    ans = gimmearea(x1, y1, r1, x2, y2, r2, c);
  }
  cout << fixed << setprecision(15);
  cout << ans << endl;
  return 0;
}
