double f(double a, double b, double c) {
double r4752652 = b;
double r4752653 = -r4752652;
double r4752654 = r4752652 * r4752652;
double r4752655 = 4.0;
double r4752656 = a;
double r4752657 = c;
double r4752658 = r4752656 * r4752657;
double r4752659 = r4752655 * r4752658;
double r4752660 = r4752654 - r4752659;
double r4752661 = sqrt(r4752660);
double r4752662 = r4752653 - r4752661;
double r4752663 = 2.0;
double r4752664 = r4752663 * r4752656;
double r4752665 = r4752662 / r4752664;
return r4752665;
}
double f(double a, double b, double c) {
double r4752666 = b;
double r4752667 = -1.2624408798128872e+73;
bool r4752668 = r4752666 <= r4752667;
double r4752669 = c;
double r4752670 = -r4752669;
double r4752671 = r4752670 / r4752666;
double r4752672 = -7.507092554429818e-252;
bool r4752673 = r4752666 <= r4752672;
double r4752674 = a;
double r4752675 = r4752674 * r4752669;
double r4752676 = -0.5;
double r4752677 = r4752675 / r4752676;
double r4752678 = r4752677 / r4752674;
double r4752679 = -1.0;
double r4752680 = r4752666 * r4752666;
double r4752681 = 4.0;
double r4752682 = r4752675 * r4752681;
double r4752683 = r4752680 - r4752682;
double r4752684 = sqrt(r4752683);
double r4752685 = r4752684 - r4752666;
double r4752686 = r4752679 / r4752685;
double r4752687 = r4752678 * r4752686;
double r4752688 = 2.695924339454757e+108;
bool r4752689 = r4752666 <= r4752688;
double r4752690 = 0.5;
double r4752691 = -r4752666;
double r4752692 = r4752669 * r4752681;
double r4752693 = r4752674 * r4752692;
double r4752694 = r4752680 - r4752693;
double r4752695 = sqrt(r4752694);
double r4752696 = r4752691 - r4752695;
double r4752697 = r4752696 / r4752674;
double r4752698 = r4752690 * r4752697;
double r4752699 = r4752691 / r4752674;
double r4752700 = r4752689 ? r4752698 : r4752699;
double r4752701 = r4752673 ? r4752687 : r4752700;
double r4752702 = r4752668 ? r4752671 : r4752701;
return r4752702;
}
\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 -1.2624408798128872 \cdot 10^{+73}:\\
\;\;\;\;\frac{-c}{b}\\
\mathbf{elif}\;b \le -7.507092554429818 \cdot 10^{-252}:\\
\;\;\;\;\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a} \cdot \frac{-1}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4} - b}\\
\mathbf{elif}\;b \le 2.695924339454757 \cdot 10^{+108}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}



Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.5 |
|---|---|
| Target | 20.8 |
| Herbie | 8.8 |
if b < -1.2624408798128872e+73Initial program 57.3
Taylor expanded around -inf 3.1
Simplified3.1
if -1.2624408798128872e+73 < b < -7.507092554429818e-252Initial program 32.1
rmApplied *-un-lft-identity32.1
Applied *-un-lft-identity32.1
Applied distribute-rgt-neg-in32.1
Applied distribute-lft-out--32.1
Applied associate-/l*32.1
rmApplied flip--32.2
Applied associate-/r/32.2
Applied add-sqr-sqrt32.2
Applied times-frac32.3
Simplified16.5
Simplified16.5
if -7.507092554429818e-252 < b < 2.695924339454757e+108Initial program 10.0
rmApplied *-un-lft-identity10.0
Applied *-un-lft-identity10.0
Applied distribute-rgt-neg-in10.0
Applied distribute-lft-out--10.0
Applied associate-/l*10.1
rmApplied *-un-lft-identity10.1
Applied times-frac10.1
Applied add-sqr-sqrt10.1
Applied times-frac10.1
Simplified10.1
Simplified9.9
if 2.695924339454757e+108 < b Initial program 47.2
rmApplied *-un-lft-identity47.2
Applied *-un-lft-identity47.2
Applied distribute-rgt-neg-in47.2
Applied distribute-lft-out--47.2
Applied associate-/l*47.2
Taylor expanded around 0 3.4
Simplified3.4
Final simplification8.8
herbie shell --seed 2019102
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 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)))