#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e6 + 5, MOD = 1e5 + 7;
const long double eps = 1e-9;
const long double pai = acosl(-1.0);
long double dis(long double x1, long double y1, long double x2,
                long double y2) {
  return sqrtl((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long double x1, x2, y1, y2, r1, r2;
  cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
  long double d = dis(x1, y1, x2, y2);
  if (r1 + r2 <= d + eps) {
    cout << "0";
  } else if (max(r1, r2) - min(r1, r2) + eps >= d) {
    cout << fixed << setprecision(10) << pai * min(r1, r2) * min(r1, r2);
  } else {
    long double theta1, theta2;
    theta1 = 2.0 * acosl((r1 * r1 + d * d - r2 * r2) / (2.0 * r1 * d));
    theta2 = 2.0 * acosl((r2 * r2 + d * d - r1 * r1) / (2.0 * r2 * d));
    long double ans;
    ans = 0.5 * (r1 * r1 * (theta1 - sinl(theta1)) +
                 r2 * r2 * (theta2 - sinl(theta2)));
    cout << fixed << setprecision(10) << ans;
  }
  return 0;
}
