\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.91962817906715367126033645969528543778 \cdot 10^{153}:\\
\;\;\;\;\left(2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}\right) \cdot \frac{1}{2}\\
\mathbf{elif}\;b \le 2.071930020515770918527743961403466592109 \cdot 10^{-74}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\
\end{array}double f(double a, double b, double c) {
double r77164 = b;
double r77165 = -r77164;
double r77166 = r77164 * r77164;
double r77167 = 4.0;
double r77168 = a;
double r77169 = c;
double r77170 = r77168 * r77169;
double r77171 = r77167 * r77170;
double r77172 = r77166 - r77171;
double r77173 = sqrt(r77172);
double r77174 = r77165 + r77173;
double r77175 = 2.0;
double r77176 = r77175 * r77168;
double r77177 = r77174 / r77176;
return r77177;
}
double f(double a, double b, double c) {
double r77178 = b;
double r77179 = -4.919628179067154e+153;
bool r77180 = r77178 <= r77179;
double r77181 = 2.0;
double r77182 = c;
double r77183 = r77182 / r77178;
double r77184 = r77181 * r77183;
double r77185 = 2.0;
double r77186 = a;
double r77187 = r77178 / r77186;
double r77188 = r77185 * r77187;
double r77189 = r77184 - r77188;
double r77190 = 1.0;
double r77191 = r77190 / r77181;
double r77192 = r77189 * r77191;
double r77193 = 2.071930020515771e-74;
bool r77194 = r77178 <= r77193;
double r77195 = r77178 * r77178;
double r77196 = 4.0;
double r77197 = r77186 * r77182;
double r77198 = r77196 * r77197;
double r77199 = r77195 - r77198;
double r77200 = sqrt(r77199);
double r77201 = r77200 - r77178;
double r77202 = r77201 / r77186;
double r77203 = r77191 * r77202;
double r77204 = -2.0;
double r77205 = r77204 * r77183;
double r77206 = r77191 * r77205;
double r77207 = r77194 ? r77203 : r77206;
double r77208 = r77180 ? r77192 : r77207;
return r77208;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 20.4 |
| Herbie | 10.3 |
if b < -4.919628179067154e+153Initial program 63.8
Simplified63.8
rmApplied clear-num63.8
rmApplied *-un-lft-identity63.8
Applied add-cube-cbrt63.8
Applied times-frac63.8
Simplified63.8
Simplified63.8
rmApplied add-sqr-sqrt63.8
Applied times-frac63.8
Applied associate-*l*63.8
Simplified63.8
Taylor expanded around -inf 2.1
if -4.919628179067154e+153 < b < 2.071930020515771e-74Initial program 12.8
Simplified12.8
rmApplied clear-num13.0
rmApplied *-un-lft-identity13.0
Applied add-cube-cbrt13.0
Applied times-frac13.0
Simplified13.0
Simplified13.0
rmApplied add-sqr-sqrt13.0
Applied times-frac13.0
Applied associate-*l*13.0
Simplified12.8
if 2.071930020515771e-74 < b Initial program 53.1
Simplified53.1
rmApplied clear-num53.2
rmApplied *-un-lft-identity53.2
Applied add-cube-cbrt53.2
Applied times-frac53.2
Simplified53.2
Simplified53.1
rmApplied add-sqr-sqrt53.1
Applied times-frac53.1
Applied associate-*l*53.1
Simplified53.1
Taylor expanded around inf 9.2
Final simplification10.3
herbie shell --seed 2019208
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))