\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{1}{\frac{2 \cdot a}{4 \cdot \left(a \cdot c\right)}}}{\left(-b\right) - \sqrt{\sqrt[3]{{\left({b}^{2} - 4 \cdot \left(a \cdot c\right)\right)}^{3}}}}double f(double a, double b, double c) {
double r41784 = b;
double r41785 = -r41784;
double r41786 = r41784 * r41784;
double r41787 = 4.0;
double r41788 = a;
double r41789 = r41787 * r41788;
double r41790 = c;
double r41791 = r41789 * r41790;
double r41792 = r41786 - r41791;
double r41793 = sqrt(r41792);
double r41794 = r41785 + r41793;
double r41795 = 2.0;
double r41796 = r41795 * r41788;
double r41797 = r41794 / r41796;
return r41797;
}
double f(double a, double b, double c) {
double r41798 = 1.0;
double r41799 = 2.0;
double r41800 = a;
double r41801 = r41799 * r41800;
double r41802 = 4.0;
double r41803 = c;
double r41804 = r41800 * r41803;
double r41805 = r41802 * r41804;
double r41806 = r41801 / r41805;
double r41807 = r41798 / r41806;
double r41808 = b;
double r41809 = -r41808;
double r41810 = 2.0;
double r41811 = pow(r41808, r41810);
double r41812 = r41811 - r41805;
double r41813 = 3.0;
double r41814 = pow(r41812, r41813);
double r41815 = cbrt(r41814);
double r41816 = sqrt(r41815);
double r41817 = r41809 - r41816;
double r41818 = r41807 / r41817;
return r41818;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.5
rmApplied flip-+28.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.5
Simplified0.5
rmApplied associate-/r/0.5
Applied associate-/r*0.5
Simplified0.5
rmApplied add-cbrt-cube0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019325 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
: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 a) c)))) (* 2 a)))