func_code_string: #include <bits/stdc++.h>   using namespace std;   long double x[2], y[2], r[2];   inline long double sqr(long double x) { return x * x; }   inline long long sqrl(long long x) { return x * x; }   inline long double fcos(long double a, long double b, long double c) {     return acosl((a * a + b * b - c * c) / (2 * a * b));   }   inline long double cut(long double ang, long double r) {     long double s1 = ang * r * r;     long double s2 = sinl(ang) * cosl(ang) * r * r;     return s1 - s2;   }   const long double pi = acosl(-1);   long double solve() {     if (r[0] > r[1]) {       swap(r[0], r[1]);       swap(x[0], x[1]);       swap(y[0], y[1]);     }     long long dx = x[0] - x[1], dy = y[0] - y[1];     long long ds = sqrl(dx) + sqrl(dy);     if (ds >= sqrl(r[0] + r[1])) return 0;     long double d = sqrtl(ds);     if (d + r[0] <= r[1]) return sqr(r[0]) * pi;     long double ang[2];     ang[0] = fcos(d, r[0], r[1]);     ang[1] = fcos(d, r[1], r[0]);     return cut(ang[0], r[0]) + cut(ang[1], r[1]);   }   int main() {     cin >> x[0] >> y[0] >> r[0] >> x[1] >> y[1] >> r[1];     cout << setprecision(8) << solve() << endl;     return 0;   }   