#include <bits/stdc++.h>
const int N = 200005;
using namespace std;
long double x1, aasdfasdfasdf, x2, y2, r1, r2;
long double gd(long double x1, long double aasdfasdfasdf, long double x2,
               long double y2) {
  return sqrt((x1 - x2) * (x1 - x2) +
              (aasdfasdfasdf - y2) * (aasdfasdfasdf - y2));
}
long double solve_cos(long double a, long double b, long double c) {
  return acos((a * a + b * b - c * c) / (2 * a * b));
}
long double cut(long double ang, long double r) {
  long double s1, s2;
  s1 = ang * r * r / 2;
  s2 = sin(ang) * r * r / 2;
  return s1 - s2;
}
long double solve() {
  if (r1 < r2) {
    swap(x1, x2);
    swap(aasdfasdfasdf, y2);
    swap(r1, r2);
  }
  long double cd = gd(x1, aasdfasdfasdf, x2, y2);
  if (cd + r2 <= r1 + 1e-16) return r2 * r2 * 3.141592653589793;
  if (cd >= r1 + r2 - 1e-16) return 0;
  long double ang1 = solve_cos(cd, r1, r2);
  long double ang2 = solve_cos(cd, r2, r1);
  return cut(ang1 * 2, r1) + cut(ang2 * 2, r2);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> x1 >> aasdfasdfasdf >> r1;
  cin >> x2 >> y2 >> r2;
  cout.precision(12);
  cout << fixed << solve() << endl;
  return 0;
}
