#include <bits/stdc++.h>
using namespace std;
int main() {
  double x1, y1, r1, x2, y2, r2;
  scanf("%lf%lf%lf", &x1, &y1, &r1);
  scanf("%lf%lf%lf", &x2, &y2, &r2);
  long double d =
      sqrt(1.0l * (x1 - x2) * (x1 - x2) + 1.0l * (y1 - y2) * (y1 - y2));
  if (d >= r1 + r2) return printf("0\n"), 0;
  if (d <= r1 - r2) return printf("%.9Lf", 1.0l * r2 * r2 * acos(-1)), 0;
  if (d <= r2 - r1) return printf("%.9Lf", 1.0l * r1 * r1 * acos(-1)), 0;
  long double theta1 =
      2 * (acos(((r1) * (r1) + (d) * (d) - (r2) * (r2)) / (2 * (r1) * (d))));
  long double theta2 =
      2 * (acos(((r2) * (r2) + (d) * (d) - (r1) * (r1)) / (2 * (r2) * (d))));
  long double area1 = .5l * r1 * r1 * theta1 - .5l * r1 * r1 * sin(theta1);
  long double area2 = .5l * r2 * r2 * theta2 - .5l * r2 * r2 * sin(theta2);
  long double ans = area1 + area2;
  printf("%.12Lf\n", ans);
  return 0;
}
