\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 -4.884773494239208074673838159500017127083 \cdot 10^{102}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.296584755784870148043824818440281520371 \cdot 10^{-151}:\\
\;\;\;\;\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b} \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 0.01064842317658122247681085070780682144687:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r72577 = b;
double r72578 = -r72577;
double r72579 = r72577 * r72577;
double r72580 = 4.0;
double r72581 = a;
double r72582 = c;
double r72583 = r72581 * r72582;
double r72584 = r72580 * r72583;
double r72585 = r72579 - r72584;
double r72586 = sqrt(r72585);
double r72587 = r72578 - r72586;
double r72588 = 2.0;
double r72589 = r72588 * r72581;
double r72590 = r72587 / r72589;
return r72590;
}
double f(double a, double b, double c) {
double r72591 = b;
double r72592 = -4.884773494239208e+102;
bool r72593 = r72591 <= r72592;
double r72594 = -1.0;
double r72595 = c;
double r72596 = r72595 / r72591;
double r72597 = r72594 * r72596;
double r72598 = -1.2965847557848701e-151;
bool r72599 = r72591 <= r72598;
double r72600 = 4.0;
double r72601 = a;
double r72602 = r72601 * r72595;
double r72603 = r72600 * r72602;
double r72604 = r72591 * r72591;
double r72605 = r72604 - r72603;
double r72606 = sqrt(r72605);
double r72607 = r72606 - r72591;
double r72608 = r72603 / r72607;
double r72609 = 1.0;
double r72610 = 2.0;
double r72611 = r72610 * r72601;
double r72612 = r72609 / r72611;
double r72613 = r72608 * r72612;
double r72614 = 0.010648423176581222;
bool r72615 = r72591 <= r72614;
double r72616 = -r72591;
double r72617 = r72616 - r72606;
double r72618 = r72617 * r72612;
double r72619 = 1.0;
double r72620 = r72591 / r72601;
double r72621 = r72596 - r72620;
double r72622 = r72619 * r72621;
double r72623 = r72615 ? r72618 : r72622;
double r72624 = r72599 ? r72613 : r72623;
double r72625 = r72593 ? r72597 : r72624;
return r72625;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.6 |
|---|---|
| Target | 21.1 |
| Herbie | 9.9 |
if b < -4.884773494239208e+102Initial program 59.9
Taylor expanded around -inf 2.4
if -4.884773494239208e+102 < b < -1.2965847557848701e-151Initial program 38.6
rmApplied flip--38.7
Simplified15.7
Simplified15.7
rmApplied div-inv15.8
if -1.2965847557848701e-151 < b < 0.010648423176581222Initial program 12.9
rmApplied div-inv13.0
if 0.010648423176581222 < b Initial program 32.9
Taylor expanded around inf 8.1
Simplified8.1
Final simplification9.9
herbie shell --seed 2019305
(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)))