#include <iostream>
#include <cmath>
void quadratic_equation_roots(float a, float b, float c) {
float discriminant = (b * b) - (4 * a * c);
float root1, root2;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
std::cout << "root1 = " << root1 << "\nroot2 = " << root2 << "\n";
}
else if(discriminant == 0) {
root1 = root2 = -b / (2 * a);
std::cout << "root1 = root2 = " << root1 << "\n";
}
else if(discriminant < 0) {
float real = -b / (2 * a);
float imaginary = sqrt(-discriminant) / (2 * a);
std::cout << "root1 = " << real << "+" << imaginary << "i\nroot2 = " << real << "-" << imaginary << "i\n";
}
}
int main(void) {
float a = 3, b = 5, c = -9;
quadratic_equation_roots(a, b, c);
std::cout << "\n";
a = 3; b = 5; c = 7;
quadratic_equation_roots(a, b, c);
std::cout << "\n";
a = 2; b = 4; c = 2;
quadratic_equation_roots(a, b, c);
return 0;
}
/*
run:
root1 = 1.08876
root2 = -2.75543
root1 = -0.833333+1.28019i
root2 = -0.833333-1.28019i
root1 = root2 = -1
*/