#include <bits/stdc++.h>
using namespace std;
double eps = 1e-9;
int main() {
  cout << fixed << setprecision(15);
  long double x1, y1, r1, x2, y2, r2;
  while (cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2) {
    long double d = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    if (d + eps >= r1 + r2)
      printf("0.00000000000000000000\n");
    else if (d <= max(r1, r2) - min(r1, r2) + eps) {
      long double ans = acos((long double)-1.0) * min(r1, r2) * min(r1, r2);
      cout << ans << endl;
    } else {
      long double angle1 =
          acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d)) * 2.0;
      long double angle2 =
          acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d)) * 2.0;
      long double ans = (0.5 * angle1 * r1 * r1 - 0.5 * r1 * r1 * sin(angle1)) +
                        (0.5 * angle2 * r2 * r2 - 0.5 * r2 * r2 * sin(angle2));
      cout << ans << endl;
    }
  }
  return 0;
}
