func_code_string: #include <bits/stdc++.h>   using namespace std;   const int oo = 1 << 30;   const double PI = M_PI;   const double EPS = 1e-15;   double w, h, u;   double cross(const complex<double> &a, const complex<double> &b) {     return imag(conj(a) * b);   }   complex<double> rotate_by(const complex<double> &p,                             const complex<double> &about, double radians) {     return (p - about) * exp(complex<double>(0, radians)) + about;   }   complex<double> intersect(const complex<double> &a, const complex<double> &b,                             const complex<double> &p, const complex<double> &q) {     double d1 = cross(p - a, b - a);     double d2 = cross(q - a, b - a);     return (d1 * q - d2 * p) / (d1 - d2);   }   int main() {     cin.sync_with_stdio(false);     cin >> w >> h >> u;     if (w < h) swap(w, h);     if (u > 90) u = 180 - u;     u = u * M_PI / 180.;     cout.precision(10);     if (u == 0) {       cout << fixed << w * h << endl;       return 0;     }     if (u >= (M_PI - 2. * atan(w / (double)h))) {       cout << fixed << h * h / sin(u) << endl;     } else {       double answer = w * h;       complex<double> a1 =           rotate_by(complex<double>(+w / 2., -h / 2), complex<double>(0, 0), u);       complex<double> a2 =           rotate_by(complex<double>(+w / 2., +h / 2), complex<double>(0, 0), u);       complex<double> a3 =           rotate_by(complex<double>(-w / 2., +h / 2), complex<double>(0, 0), u);       complex<double> b1 = intersect(a1, a2, complex<double>(-w / 2., h / 2.),                                      complex<double>(w / 2., h / 2.));       complex<double> b2 = intersect(a2, a3, complex<double>(-w / 2., h / 2.),                                      complex<double>(w / 2., h / 2.));       {         double side1 = b1.real() - b2.real();         double side2 = side1 * cos(u);         double area = side1 * side2 * sin(u);         answer = answer - area;       }       {         double side1 = w / 2. - b1.real();         double side2 = side1 * tan(M_PI / 2. - u);         double area = side1 * side2;         answer = answer - area;       }       cout << fixed << answer << endl;     }     return 0;   }   