\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 -2.83685348804351915 \cdot 10^{71}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -8.21218726880377109 \cdot 10^{-92}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le -4.05237835825691163 \cdot 10^{-102}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 6.4051694544273952 \cdot 10^{145}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r79640 = b;
double r79641 = -r79640;
double r79642 = r79640 * r79640;
double r79643 = 4.0;
double r79644 = a;
double r79645 = c;
double r79646 = r79644 * r79645;
double r79647 = r79643 * r79646;
double r79648 = r79642 - r79647;
double r79649 = sqrt(r79648);
double r79650 = r79641 - r79649;
double r79651 = 2.0;
double r79652 = r79651 * r79644;
double r79653 = r79650 / r79652;
return r79653;
}
double f(double a, double b, double c) {
double r79654 = b;
double r79655 = -2.836853488043519e+71;
bool r79656 = r79654 <= r79655;
double r79657 = -1.0;
double r79658 = c;
double r79659 = r79658 / r79654;
double r79660 = r79657 * r79659;
double r79661 = -8.212187268803771e-92;
bool r79662 = r79654 <= r79661;
double r79663 = 2.0;
double r79664 = pow(r79654, r79663);
double r79665 = r79664 - r79664;
double r79666 = 4.0;
double r79667 = a;
double r79668 = r79667 * r79658;
double r79669 = r79666 * r79668;
double r79670 = r79665 + r79669;
double r79671 = 2.0;
double r79672 = r79671 * r79667;
double r79673 = r79670 / r79672;
double r79674 = -r79654;
double r79675 = r79654 * r79654;
double r79676 = r79675 - r79669;
double r79677 = sqrt(r79676);
double r79678 = r79674 + r79677;
double r79679 = r79673 / r79678;
double r79680 = -4.052378358256912e-102;
bool r79681 = r79654 <= r79680;
double r79682 = 6.405169454427395e+145;
bool r79683 = r79654 <= r79682;
double r79684 = 1.0;
double r79685 = r79674 - r79677;
double r79686 = r79672 / r79685;
double r79687 = r79684 / r79686;
double r79688 = r79654 / r79667;
double r79689 = r79657 * r79688;
double r79690 = r79683 ? r79687 : r79689;
double r79691 = r79681 ? r79660 : r79690;
double r79692 = r79662 ? r79679 : r79691;
double r79693 = r79656 ? r79660 : r79692;
return r79693;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 20.7 |
| Herbie | 8.9 |
if b < -2.836853488043519e+71 or -8.212187268803771e-92 < b < -4.052378358256912e-102Initial program 57.4
Taylor expanded around -inf 4.5
if -2.836853488043519e+71 < b < -8.212187268803771e-92Initial program 42.3
rmApplied clear-num42.3
rmApplied div-inv42.3
Applied associate-/r*42.3
rmApplied flip--42.4
Applied associate-/r/42.4
Applied associate-/r*42.4
Simplified14.3
if -4.052378358256912e-102 < b < 6.405169454427395e+145Initial program 11.4
rmApplied clear-num11.5
if 6.405169454427395e+145 < b Initial program 60.7
rmApplied clear-num60.8
Taylor expanded around 0 2.7
Final simplification8.9
herbie shell --seed 2020049
(FPCore (a b c)
:name "quadm (p42, negative)"
: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)))