#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int main() {
  long double x1, y1, x2, y2, r1, r2;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  long double d = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
  if (x1 == x2 && y1 == y2 || (abs(r1 - r2)) >= d) {
    long double ans = 3.14159265358979 * min(r1, r2) * min(r1, r2);
    cout << fixed << setprecision(20) << ans;
    return 0;
  }
  if (r1 + r2 <= d) {
    long double ans = 0;
    cout << fixed << setprecision(20) << ans;
  } else {
    long double alpha = acos((r1 * r1 + d * d - r2 * r2) / (2.0 * r1 * d));
    long double beta = acos((r2 * r2 + d * d - r1 * r1) / (2.0 * r2 * d));
    long double x1 = alpha * r1 * r1 - r1 * r1 * sin(2 * alpha) * 0.5;
    long double x2 = beta * r2 * r2 - r2 * r2 * sin(2 * beta) * 0.5;
    long double ans = x1 + x2;
    cout << fixed << setprecision(20) << ans;
  }
}
