#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
int main() {
  long double x1, y1, r1, x2, y2, r2;
  while (~scanf("%Lf%Lf%Lf%Lf%Lf%Lf", &x1, &y1, &r1, &x2, &y2, &r2)) {
    long double de = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
    long double d = sqrt(de);
    if (d >= (r1 + r2)) {
      printf("0.00000000000000000000\n");
      continue;
    }
    if (d <= fabs(r1 - r2)) {
      printf("%.20Lf\n", pi * min(r1, r2) * min(r1, r2));
      continue;
    }
    long double s1 = acos((r1 * r1 + de - r2 * r2) / (2.0 * r1 * d));
    long double s2 = acos((r2 * r2 + de - r1 * r1) / (2.0 * r2 * d));
    long double v1 = s1 * r1 * r1;
    long double ss1 = 1.0 / 2.0 * r1 * r1 * sin(2.0 * s1);
    long double v2 = s2 * r2 * r2;
    long double ss2 = 1.0 / 2.0 * r2 * r2 * sin(2.0 * s2);
    printf("%.20Lf\n", v1 + v2 - ss1 - ss2);
  }
}
