#include <bits/stdc++.h>
using namespace std;
int main() {
  long double x1, y1, r1, x2, y2, r2, d, area;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  d = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  if (d >= r1 + r2)
    area = 0;
  else if (d <= abs(r1 - r2))
    area = min(M_PI * r1 * r1, M_PI * r2 * r2);
  else {
    long double alpha, s1, s2;
    alpha = acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));
    s1 = alpha * r1 * r1 - r1 * r1 * sin(alpha) * cos(alpha);
    alpha = acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));
    s2 = alpha * r2 * r2 - r2 * r2 * sin(alpha) * cos(alpha);
    area = s1 + s2;
  }
  cout << fixed << setprecision(6) << area << '\n';
  return 0;
}
