\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.40284932349203652 \cdot 10^{128}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 5.877669040907696 \cdot 10^{-167}:\\
\;\;\;\;1 \cdot \frac{2 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 1.58497213944565541 \cdot 10^{84}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{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 r92515 = b;
double r92516 = -r92515;
double r92517 = r92515 * r92515;
double r92518 = 4.0;
double r92519 = a;
double r92520 = c;
double r92521 = r92519 * r92520;
double r92522 = r92518 * r92521;
double r92523 = r92517 - r92522;
double r92524 = sqrt(r92523);
double r92525 = r92516 - r92524;
double r92526 = 2.0;
double r92527 = r92526 * r92519;
double r92528 = r92525 / r92527;
return r92528;
}
double f(double a, double b, double c) {
double r92529 = b;
double r92530 = -2.4028493234920365e+128;
bool r92531 = r92529 <= r92530;
double r92532 = -1.0;
double r92533 = c;
double r92534 = r92533 / r92529;
double r92535 = r92532 * r92534;
double r92536 = 5.877669040907696e-167;
bool r92537 = r92529 <= r92536;
double r92538 = 1.0;
double r92539 = 2.0;
double r92540 = r92539 * r92533;
double r92541 = r92529 * r92529;
double r92542 = 4.0;
double r92543 = a;
double r92544 = r92543 * r92533;
double r92545 = r92542 * r92544;
double r92546 = r92541 - r92545;
double r92547 = sqrt(r92546);
double r92548 = r92547 - r92529;
double r92549 = r92540 / r92548;
double r92550 = r92538 * r92549;
double r92551 = 1.5849721394456554e+84;
bool r92552 = r92529 <= r92551;
double r92553 = -r92529;
double r92554 = r92553 - r92547;
double r92555 = r92539 * r92543;
double r92556 = r92554 / r92555;
double r92557 = 1.0;
double r92558 = r92529 / r92543;
double r92559 = r92534 - r92558;
double r92560 = r92557 * r92559;
double r92561 = r92552 ? r92556 : r92560;
double r92562 = r92537 ? r92550 : r92561;
double r92563 = r92531 ? r92535 : r92562;
return r92563;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.2 |
| Herbie | 6.8 |
if b < -2.4028493234920365e+128Initial program 61.5
Taylor expanded around -inf 2.2
if -2.4028493234920365e+128 < b < 5.877669040907696e-167Initial program 29.5
rmApplied div-inv29.6
rmApplied flip--29.8
Simplified16.1
Simplified16.1
rmApplied *-un-lft-identity16.1
Applied associate-*l*16.1
Simplified15.0
Taylor expanded around 0 10.0
if 5.877669040907696e-167 < b < 1.5849721394456554e+84Initial program 7.0
if 1.5849721394456554e+84 < b Initial program 43.1
Taylor expanded around inf 4.1
Simplified4.1
Final simplification6.8
herbie shell --seed 2020056
(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)))