\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 -7.93152454634661985 \cdot 10^{153}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 2.0569776426586135 \cdot 10^{-106}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{\frac{a}{\frac{1}{2}}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r77058 = b;
double r77059 = -r77058;
double r77060 = r77058 * r77058;
double r77061 = 4.0;
double r77062 = a;
double r77063 = c;
double r77064 = r77062 * r77063;
double r77065 = r77061 * r77064;
double r77066 = r77060 - r77065;
double r77067 = sqrt(r77066);
double r77068 = r77059 + r77067;
double r77069 = 2.0;
double r77070 = r77069 * r77062;
double r77071 = r77068 / r77070;
return r77071;
}
double f(double a, double b, double c) {
double r77072 = b;
double r77073 = -7.93152454634662e+153;
bool r77074 = r77072 <= r77073;
double r77075 = 1.0;
double r77076 = c;
double r77077 = r77076 / r77072;
double r77078 = a;
double r77079 = r77072 / r77078;
double r77080 = r77077 - r77079;
double r77081 = r77075 * r77080;
double r77082 = 2.0569776426586135e-106;
bool r77083 = r77072 <= r77082;
double r77084 = r77072 * r77072;
double r77085 = 4.0;
double r77086 = r77078 * r77076;
double r77087 = r77085 * r77086;
double r77088 = r77084 - r77087;
double r77089 = sqrt(r77088);
double r77090 = r77089 - r77072;
double r77091 = 1.0;
double r77092 = 2.0;
double r77093 = r77091 / r77092;
double r77094 = r77078 / r77093;
double r77095 = r77090 / r77094;
double r77096 = -1.0;
double r77097 = r77096 * r77077;
double r77098 = r77083 ? r77095 : r77097;
double r77099 = r77074 ? r77081 : r77098;
return r77099;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 21.2 |
| Herbie | 9.8 |
if b < -7.93152454634662e+153Initial program 63.8
Simplified63.8
Taylor expanded around -inf 1.9
Simplified1.9
if -7.93152454634662e+153 < b < 2.0569776426586135e-106Initial program 11.2
Simplified11.2
rmApplied *-un-lft-identity11.2
Applied *-un-lft-identity11.2
Applied times-frac11.2
Applied associate-/l*11.3
rmApplied div-inv11.3
Applied *-un-lft-identity11.3
Applied times-frac11.4
Applied associate-/r*11.3
Simplified11.2
if 2.0569776426586135e-106 < b Initial program 52.0
Simplified52.0
Taylor expanded around inf 10.3
Final simplification9.8
herbie shell --seed 2020043
(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)))