У меня есть метод, который занимает 3 double
с и вычисляет корни по квадратичной формуле:
public static double[] quadraticFormula(double a, double b, double c) throws ArithmeticException {
double root1 = 0;
double root2 = 0;
//sqrt(b^2 - 4ac)
double discriminant = (b * b) - (4 * a * c);
if (Double.isNaN(discriminant)) {
throw new ArithmeticException(discriminant + " is not a number!");
}
if (discriminant > 0) {
//Two roots
root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
root2 = (-b - Math.sqrt(discriminant)) / (2 * a);
} else if (discriminant == 0) {
//One root
root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
} else if (discriminant < 0) {
//Imaginary roots
}
return new double[] { root1, root2 };
}
Я хочу расширить это и добавить поддержку мнимых чисел. Как бы я это сделал? Моей первой мыслью было, что в else if (discriminant < 0)
я получу абсолютное значение дискриминанта и вычислю радикал. Я собираюсь вывести корни пользователю, так что не беспокойтесь о i , у меня есть анализатор String, который точно знает, куда поместить i . Есть идеи по поводу более эффективного метода?