\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -5.674469085146396739103610609439188639717 \cdot 10^{110}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 7.061692521831335565675525372535211636164 \cdot 10^{-266}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 1.715181108188238274259588142060201574853 \cdot 10^{78}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r77625 = b;
double r77626 = -r77625;
double r77627 = r77625 * r77625;
double r77628 = 4.0;
double r77629 = a;
double r77630 = c;
double r77631 = r77629 * r77630;
double r77632 = r77628 * r77631;
double r77633 = r77627 - r77632;
double r77634 = sqrt(r77633);
double r77635 = r77626 - r77634;
double r77636 = 2.0;
double r77637 = r77636 * r77629;
double r77638 = r77635 / r77637;
return r77638;
}
double f(double a, double b, double c) {
double r77639 = b;
double r77640 = -5.674469085146397e+110;
bool r77641 = r77639 <= r77640;
double r77642 = -1.0;
double r77643 = c;
double r77644 = r77643 / r77639;
double r77645 = r77642 * r77644;
double r77646 = 7.061692521831336e-266;
bool r77647 = r77639 <= r77646;
double r77648 = 2.0;
double r77649 = r77648 * r77643;
double r77650 = r77639 * r77639;
double r77651 = 4.0;
double r77652 = a;
double r77653 = r77652 * r77643;
double r77654 = r77651 * r77653;
double r77655 = r77650 - r77654;
double r77656 = sqrt(r77655);
double r77657 = r77656 - r77639;
double r77658 = r77649 / r77657;
double r77659 = 1.7151811081882383e+78;
bool r77660 = r77639 <= r77659;
double r77661 = -r77639;
double r77662 = r77661 - r77656;
double r77663 = r77648 * r77652;
double r77664 = r77662 / r77663;
double r77665 = r77639 / r77652;
double r77666 = r77642 * r77665;
double r77667 = r77660 ? r77664 : r77666;
double r77668 = r77647 ? r77658 : r77667;
double r77669 = r77641 ? r77645 : r77668;
return r77669;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.0 |
| Herbie | 6.7 |
if b < -5.674469085146397e+110Initial program 59.7
Taylor expanded around -inf 2.7
if -5.674469085146397e+110 < b < 7.061692521831336e-266Initial program 31.8
rmApplied flip--31.8
Simplified16.1
Simplified16.1
rmApplied div-inv16.1
rmApplied associate-*l/15.2
Simplified15.1
Taylor expanded around 0 8.7
if 7.061692521831336e-266 < b < 1.7151811081882383e+78Initial program 8.6
if 1.7151811081882383e+78 < b Initial program 43.0
rmApplied flip--62.6
Simplified61.8
Simplified61.8
Taylor expanded around 0 4.8
Final simplification6.7
herbie shell --seed 2019303
(FPCore (a b c)
:name "The quadratic formula (r2)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))