QuadricEquation testDome
public class QuadraticEquation {
public static Roots findRoots(double a, double b, double c) {
Roots root = new Roots(0,0);
double root1, root2;
if(a==0 ||b==0||c==0) return root;
// calculate the determinant (b2 - 4ac)
double determinant = (b * b) - (4 * a * c);
if (determinant > 0) {
// two real and distinct roots
root1 = (-b + Math.sqrt(determinant)) / (2 * a);
root2 = (-b - Math.sqrt(determinant)) / (2 * a);
// System.out.format("root1 = %.2f and root2 = %.2f", root1, root2);
} // check if determinant is equal to 0
else if (determinant == 0) {
// two real and equal roots then determinant is equal to 0
// so -b + 0 == -b
root1 = -b / (2 * a);
root2 = root1;
} else {
// roots are complex number and distinct
root1= -b / (2 * a);
root2 = Math.sqrt(-determinant) / (2 * a);
}
root = new Roots(root1,root2);
return root;
}
public static void main(String[] args) {
Roots roots = QuadraticEquation.findRoots(2, 10, 8);
System.out.println("Roots: " + roots.x1 + ", " + roots.x2);
// roots = QuadraticEquation.findRoots(15, 68, 3);
// System.out.println("Roots: " + roots.x1 + ", " + roots.x2);
roots = QuadraticEquation.findRoots(1, -18, 81);
System.out.println("Roots: " + roots.x1 + ", " + roots.x2);
}
}
class Roots {
public final double x1, x2;
public Roots(double x1, double x2) {
this.x1 = x1;
this.x2 = x2;
}
}