#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-9, PI = acos(-1.0);
long double area(long double r1, long double r2, long double dist) {
  long double alpha =
      acos((-pow(r1, 2) + pow(r2, 2) + pow(dist, 2)) / 2 / r2 / dist) * 2;
  return alpha * r2 * r2 / 2 - sin(alpha) * r2 * r2 / 2;
}
int main() {
  long double xa, xb, ra, ya, yb, rb;
  while (cin >> xa >> ya >> ra >> xb >> yb >> rb) {
    long double hc, h, s, dist, rr = ra + rb, la, lb;
    dist = sqrt(pow((xa - xb), 2) + pow((ya - yb), 2));
    if (rr - EPS < dist) {
      printf("%.20f\n", 0.0);
    } else if (dist + min(ra, rb) - EPS <= max(ra, rb)) {
      long double minr = min(ra, rb);
      printf("%.20f\n", (double)(pow(minr, 2) * PI));
    } else {
      double res = area(ra, rb, dist) + area(rb, ra, dist);
      printf("%.20f\n", res);
    }
  }
  return 0;
}
