// // Solve Quadratic Equations with Complex Coefficients // 2008-06-06 Tomonori Kouya // #include #include using namespace std; // Evaluation of (deg)th degree polynomial by Horner Method complex eval_poly(complex a[], complex x, int deg) { complex ret; ret = a[deg]; while(--deg >= 0) ret = ret * x + a[deg]; return ret; } int main() { complex a[3]; // Coefficients complex x[2]; // Roots // Input 3 coefficients: a[2] * x^2 + a[1] * x + a[0] = 0 cout << "a[0] = "; cin >> a[0]; cout << "a[1] = "; cin >> a[1]; cout << "a[2] = "; cin >> a[2]; // Solve the equation x[0] = (-a[1] + sqrt(a[1] * a[1] - 4.0 * a[0] * a[2])) / (2.0 * a[2]); x[1] = (-a[1] - sqrt(a[1] * a[1] - 4.0 * a[0] * a[2])) / (2.0 * a[2]); // Output roots cout << "x[0] = " << x[0] << endl; cout << "x[1] = " << x[1] << endl; // Validate roots ( p(x) == 0 ?) cout << "p(x[0]) = " << eval_poly(a, x[0], 2) << endl; cout << "p(x[1]) = " << eval_poly(a, x[1], 2) << endl; return 0; }