#include <bits/stdc++.h>
using namespace std;
long double calc(long double r1, long double r2, long double d) {
  long double ang1 = acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));
  long double ang2 = acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));
  long double a1 = r1 * r1 * (ang1 - sin(ang1) * cos(ang1));
  long double a2 = r2 * r2 * (ang2 - sin(ang2) * cos(ang2));
  return a1 + a2;
}
int main() {
  long long x1, y1, r1, x2, y2, r2;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  long long dx = x2 - x1, dy = y2 - y1, rr = r1 + r2, d2 = dx * dx + dy * dy;
  cout << setprecision(12);
  if (d2 >= rr * rr) {
    cout << 0.0 << endl;
    return 0;
  }
  long double d = sqrt((long double)d2);
  if (d + (long double)min(r1, r2) <= (long double)max(r1, r2)) {
    cout << M_PI * (double)(min(r1, r2) * min(r1, r2)) << endl;
    return 0;
  }
  cout << calc(r1, r2, d) << endl;
  return 0;
}
