Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <complex>
- #include <iostream>
- using namespace std;
- #define sqrt3 (sqrt(3.0) / 2.0)
- int main(int argc, char **argv) {
- double a, b, c, d, D, p, q, u, v;
- complex<double> z1, z2, z3;
- cin >> a;
- cin >> b;
- cin >> c;
- cin >> d;
- q = ((2.0 * pow(b, 3.0)) / (27 * pow(a, 3.0))) -
- ((b * c) / (3 * pow(a, 2.0))) + (d / a);
- p = (c / a) - (pow(b, 2.0) / (3.0 * pow(a, 2.0)));
- D = pow(q / 2.0, 2.0) + pow(p / 3.0, 3.0);
- cout << "p = " << p << endl << "q = " << q << endl;
- if (D >= 0) {
- u = pow(-(q / 2) + sqrt(abs(D)), 1.0 / 3.0);
- v = -pow(abs(-(q / 2) - sqrt(abs(D))), 1.0 / 3.0);
- z1 = u + v - (b / (3 * a));
- z2 = (-0.5 * (u + v) - (b / (3 * a))) + (1i * sqrt3 * (u - v));
- z3 = (-0.5 * (u + v) - (b / (3 * a))) - (1i * sqrt3 * (u - v));
- cout << z1 << endl;
- cout << z2 << endl;
- cout << z3 << endl;
- } else {
- double phi = acos((-0.5 * q) / sqrt(-((p * p * p) / 27)));
- z1 = 2 * sqrt(-p / 3) * cos(phi / 3) - (b / (3 * a));
- z2 = 2 * sqrt(-p / 3) * cos((phi + (2 * M_PI)) / 3) - (b / (3 * a));
- z3 = 2 * sqrt(-p / 3) * cos((phi + (4 * M_PI)) / 3) - (b / (3 * a));
- cout << z1 << endl;
- cout << z2 << endl;
- cout << z3 << endl;
- }
- return 0;
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement