#include <bits/stdc++.h>
using namespace std;
long double x[2], y[2], r[2], dis, a, b, SA, SB;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  for (int i = 0; i < 2; i++) cin >> x[i] >> y[i] >> r[i];
  dis = (x[1] - x[0]) * (x[1] - x[0]) + (y[1] - y[0]) * (y[1] - y[0]);
  if ((r[0] + r[1]) * (r[0] + r[1]) <= dis)
    cout << 0;
  else if (dis <= (r[0] - r[1]) * (r[0] - r[1]))
    cout << fixed << setprecision(20)
         << acos(-1) * min(r[0], r[1]) * min(r[0], r[1]);
  else {
    a = (r[0] * r[0] + dis - r[1] * r[1]) / (2 * r[0] * sqrt(dis));
    b = (r[1] * r[1] + dis - r[0] * r[0]) / (2 * r[1] * sqrt(dis));
    a = acos(a), b = acos(b);
    a *= 2, b *= 2;
    SA = (a / 2 - sin(a) / 2) * r[0] * r[0];
    SB = (b / 2 - sin(b) / 2) * r[1] * r[1];
    cout << fixed << setprecision(20) << SA + SB;
  }
  return 0;
}
