\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{\sqrt[3]{{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)}^{3}}}}double f(double a, double b, double c) {
double r43651 = b;
double r43652 = -r43651;
double r43653 = r43651 * r43651;
double r43654 = 4.0;
double r43655 = a;
double r43656 = r43654 * r43655;
double r43657 = c;
double r43658 = r43656 * r43657;
double r43659 = r43653 - r43658;
double r43660 = sqrt(r43659);
double r43661 = r43652 + r43660;
double r43662 = 2.0;
double r43663 = r43662 * r43655;
double r43664 = r43661 / r43663;
return r43664;
}
double f(double a, double b, double c) {
double r43665 = 4.0;
double r43666 = a;
double r43667 = c;
double r43668 = r43666 * r43667;
double r43669 = r43665 * r43668;
double r43670 = 2.0;
double r43671 = r43670 * r43666;
double r43672 = r43669 / r43671;
double r43673 = b;
double r43674 = -r43673;
double r43675 = r43673 * r43673;
double r43676 = r43665 * r43666;
double r43677 = r43676 * r43667;
double r43678 = r43675 - r43677;
double r43679 = 3.0;
double r43680 = pow(r43678, r43679);
double r43681 = cbrt(r43680);
double r43682 = sqrt(r43681);
double r43683 = r43674 - r43682;
double r43684 = r43672 / r43683;
return r43684;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.5
rmApplied div-inv0.5
rmApplied add-cbrt-cube0.5
Simplified0.5
rmApplied associate-*l/0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019199
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))