#include <bits/stdc++.h>
using namespace std;
const long double oo = 1e5 + 3;
const long double mod = 1e9 + 7;
const long double pi = 3.1415926535897932384;
long double x1, y_1, r1;
long double x2, y_2, r2;
long double d, u, v, m, n;
long double dis(long double x1, long double y1, long double x2,
                long double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
  cin >> x1 >> y_1 >> r1;
  cin >> x2 >> y_2 >> r2;
  cout.precision(22);
  d = dis(x1, y_1, x2, y_2);
  if (d >= (r1 + r2))
    cout << 0;
  else if (abs(r2 - r1) > d || d == 0) {
    cout << pi * min(r1, r2) * min(r1, r2);
  } else {
    long double u = 2 * acosl((d * d + r1 * r1 - r2 * r2) / (2 * d * r1));
    long double v = 2 * acosl((d * d + r2 * r2 - r1 * r1) / (2 * d * r2));
    long double m = u * r1 * r1 * 0.5 - 0.5 * r1 * r1 * sinl(u);
    long double n = v * r2 * r2 / 2 - 0.5 * r2 * r2 * sinl(v);
    cout << m + n;
  }
  return 0;
}
