int equation(double a, double b, double c, double *x1, double *x2) { double d; if (a == 0 && b == 0 && c == 0) return NO_ROOTS; if (a == 0 && b == 0) return NO_ROOTS; if (a == 0 && c == 0) { *x1 = *x2 = 0; return SAME_ROOT; } if (a == 0) { *x1 = *x2 = -c / b; return SAME_ROOT; } d = discr(a, b, c); if (d > 0) { *x1 = (-b - sqrt(d)) / (2 * a); *x2 = (-b + sqrt(d)) / (2 * a); return TWO_ROOTS; } if (d == 0) { *x1 = *x2 = -b / (2 * a); return SAME_ROOT; } return NO_ROOTS; }
double quadratic_root1(double a, double b, double c) { return (-b + sqrt(discr(a,b,c))/(2 * a)); }