#include <bits/stdc++.h>
using namespace std;
int main(void) {
  long double x1, y1, r1, x2, y2, r2;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  long double d = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  if (d - r1 - r2 > 1e-10) {
    printf("0.00000000000000000000\n");
    return 0;
  }
  if (r1 >= r2 + d || r2 >= r1 + d) {
    long double r = min(r1, r2);
    long double ans = acos(-1.0) * r * r;
    printf("%.20f\n", (double)ans);
    return 0;
  }
  long double ang1, ang2, stri, s, p;
  ang1 = acos((d * d + r1 * r1 - r2 * r2) / (2 * d * r1));
  ang2 = acos((d * d - r1 * r1 + r2 * r2) / (2 * d * r2));
  s = r1 * r1 * ang1 + r2 * r2 * ang2 - 0.5 * r1 * r1 * sin(2 * ang1) -
      0.5 * r2 * r2 * sin(2 * ang2);
  printf("%.20lf\n", (double)s);
  return 0;
}
