#include <bits/stdc++.h>
using namespace std;
int main() {
  long double x, y, X, Y, r, R, M, n, N, Z = 0, z = 0;
  long double p = 0.5;
  cout.precision(9);
  cin >> x >> y >> r >> X >> Y >> R;
  cout.precision(9);
  M = sqrt((x - X) * (x - X) + (y - Y) * (y - Y));
  if (M > r + R)
    cout << 0 << endl;
  else if (M <= fabs(R - r) && r >= R)
    cout << acos(-1.0) * R * R << endl;
  else if (M <= fabs(R - r) && R >= r)
    cout << acos(-1.0) * r * r << endl;
  else {
    n = 2 * acos((r * r + M * M - R * R) / (2 * r * M));
    N = 2 * acos((R * R + M * M - r * r) / (2 * R * M));
    z = p * n * r * r - r * sin(n) * r * p;
    Z = p * N * R * R - R * sin(N) * R * p;
    Z += z;
    cout << Z << endl;
  }
}
