#include <bits/stdc++.h>
const long double pi = acos(-1.0);
using namespace std;
struct Circle {
  long double x, y, r;
} p, q;
long double dis(long double ax, long double ay, long double bx,
                long double by) {
  return sqrt((ax - bx) * (ax - bx) + (ay - by) * (ay - by));
}
long double solve(Circle p, Circle q) {
  long double a1, a2, area, d;
  d = dis(p.x, p.y, q.x, q.y);
  if (p.r + q.r <= d) return 0;
  if (fabs(p.r - q.r) >= d) return q.r * q.r * pi;
  a1 = (p.r * p.r + d * d - q.r * q.r) / (2 * p.r * d);
  a2 = (q.r * q.r + d * d - p.r * p.r) / (2 * q.r * d);
  a1 = 2 * acos(a1);
  a2 = 2 * acos(a2);
  area = p.r * p.r * (a1 - sin(a1)) / 2;
  area += q.r * q.r * (a2 - sin(a2)) / 2;
  return area;
}
int main() {
  cin >> p.x >> p.y >> p.r >> q.x >> q.y >> q.r;
  if (p.r < q.r) swap(p, q);
  cout.precision(12);
  cout << solve(p, q) << endl;
}
