\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.3044033969831823 \cdot 10^{153}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 3.2001964328628576 \cdot 10^{-306}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{elif}\;b \le 3.3690530579691639 \cdot 10^{141}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r67078 = b;
double r67079 = -r67078;
double r67080 = r67078 * r67078;
double r67081 = 4.0;
double r67082 = a;
double r67083 = c;
double r67084 = r67082 * r67083;
double r67085 = r67081 * r67084;
double r67086 = r67080 - r67085;
double r67087 = sqrt(r67086);
double r67088 = r67079 + r67087;
double r67089 = 2.0;
double r67090 = r67089 * r67082;
double r67091 = r67088 / r67090;
return r67091;
}
double f(double a, double b, double c) {
double r67092 = b;
double r67093 = -2.3044033969831823e+153;
bool r67094 = r67092 <= r67093;
double r67095 = 1.0;
double r67096 = c;
double r67097 = r67096 / r67092;
double r67098 = a;
double r67099 = r67092 / r67098;
double r67100 = r67097 - r67099;
double r67101 = r67095 * r67100;
double r67102 = 3.2001964328628576e-306;
bool r67103 = r67092 <= r67102;
double r67104 = -r67092;
double r67105 = r67092 * r67092;
double r67106 = 4.0;
double r67107 = r67098 * r67096;
double r67108 = r67106 * r67107;
double r67109 = r67105 - r67108;
double r67110 = sqrt(r67109);
double r67111 = r67104 + r67110;
double r67112 = 2.0;
double r67113 = r67112 * r67098;
double r67114 = r67111 / r67113;
double r67115 = 3.369053057969164e+141;
bool r67116 = r67092 <= r67115;
double r67117 = r67112 * r67096;
double r67118 = r67104 - r67110;
double r67119 = r67117 / r67118;
double r67120 = -1.0;
double r67121 = r67120 * r67097;
double r67122 = r67116 ? r67119 : r67121;
double r67123 = r67103 ? r67114 : r67122;
double r67124 = r67094 ? r67101 : r67123;
return r67124;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.6 |
| Herbie | 6.5 |
if b < -2.3044033969831823e+153Initial program 63.5
Taylor expanded around -inf 2.0
Simplified2.0
if -2.3044033969831823e+153 < b < 3.2001964328628576e-306Initial program 8.8
if 3.2001964328628576e-306 < b < 3.369053057969164e+141Initial program 34.4
rmApplied clear-num34.4
rmApplied flip-+34.4
Applied associate-/r/34.4
Applied associate-/r*34.5
Simplified14.9
Taylor expanded around 0 8.3
if 3.369053057969164e+141 < b Initial program 62.5
Taylor expanded around inf 1.5
Final simplification6.5
herbie shell --seed 2020060
(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)))