#include <bits/stdc++.h>
using namespace std;
void solve() {
  long double x1, y1, r1, x2, y2, r2, ans;
  cin >> x1 >> y1 >> r1;
  cin >> x2 >> y2 >> r2;
  long double d = sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
  long double th1 = 2 * acos((r1 * r1 + d * d - r2 * r2) / (2 * d * r1));
  long double th2 = 2 * acos((r2 * r2 + d * d - r1 * r1) / (2 * d * r2));
  if (r1 + r2 <= d)
    ans = 0;
  else if (d + r1 <= r2 || d + r2 <= r1)
    ans = acos(-1) * min(r1, r2) * min(r1, r2);
  else {
    long double s1 = (r1 * r1 * 0.5 * (th1 - sin(th1)));
    long double s2 = (r2 * r2 * 0.5 * (th2 - sin(th2)));
    ans = s1 + s2;
  }
  cout << fixed << setprecision(10);
  cout << (ans) << endl;
}
signed main() {
  long long t = 1;
  while (t--) solve();
  return 0;
}
