\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1 \cdot \left(\left(4 \cdot a\right) \cdot \frac{c}{\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c + {b}^{2}\right) + \left(b \cdot b\right) \cdot \left(b \cdot b\right)}}}\right)}{2 \cdot a}double f(double a, double b, double c) {
double r45650 = b;
double r45651 = -r45650;
double r45652 = r45650 * r45650;
double r45653 = 4.0;
double r45654 = a;
double r45655 = r45653 * r45654;
double r45656 = c;
double r45657 = r45655 * r45656;
double r45658 = r45652 - r45657;
double r45659 = sqrt(r45658);
double r45660 = r45651 + r45659;
double r45661 = 2.0;
double r45662 = r45661 * r45654;
double r45663 = r45660 / r45662;
return r45663;
}
double f(double a, double b, double c) {
double r45664 = 1.0;
double r45665 = 4.0;
double r45666 = a;
double r45667 = r45665 * r45666;
double r45668 = c;
double r45669 = b;
double r45670 = -r45669;
double r45671 = 6.0;
double r45672 = pow(r45669, r45671);
double r45673 = r45667 * r45668;
double r45674 = 3.0;
double r45675 = pow(r45673, r45674);
double r45676 = r45672 - r45675;
double r45677 = 2.0;
double r45678 = pow(r45669, r45677);
double r45679 = r45673 + r45678;
double r45680 = r45673 * r45679;
double r45681 = r45669 * r45669;
double r45682 = r45681 * r45681;
double r45683 = r45680 + r45682;
double r45684 = r45676 / r45683;
double r45685 = sqrt(r45684);
double r45686 = r45670 - r45685;
double r45687 = r45668 / r45686;
double r45688 = r45667 * r45687;
double r45689 = r45664 * r45688;
double r45690 = 2.0;
double r45691 = r45690 * r45666;
double r45692 = r45689 / r45691;
return r45692;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.3
rmApplied flip-+28.3
Simplified0.5
rmApplied flip3--0.5
Simplified0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Simplified0.5
Simplified0.5
rmApplied div-inv0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019318
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))