#include <bits/stdc++.h>
using namespace std;
int main() {
  long double x1, y1, r1;
  long double x2, y2, r2;
  cin >> x1 >> y1 >> r1;
  cin >> x2 >> y2 >> r2;
  long double d = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  cout.precision(10);
  if (d - (r1 + r2) > 1e-20)
    cout << 0 << endl;
  else if (d - fabs(r1 - r2) < 1e-20 && r1 - r2 > 1e-20)
    cout << r2 * r2 * 3.141592653589793 << endl;
  else if (d - fabs(r1 - r2) < 1e-20 && r1 - r2 < 1e-20)
    cout << r1 * r1 * 3.141592653589793 << endl;
  else {
    long double corn1 = acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d)) * 2;
    long double corn2 = acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d)) * 2;
    long double s1 = 0.5 * corn1 * r1 * r1 - 0.5 * r1 * r1 * sin(corn1);
    long double s2 = 0.5 * corn2 * r2 * r2 - 0.5 * r2 * r2 * sin(corn2);
    cout << s1 + s2 << endl;
  }
  return 0;
}
