\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.2864134951106807 \cdot 10^{46}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.8974208552756199 \cdot 10^{-66}:\\
\;\;\;\;\frac{\frac{1}{2 \cdot a} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le -8.63724924767252634 \cdot 10^{-116}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 5.57925007375450966 \cdot 10^{51}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r85093 = b;
double r85094 = -r85093;
double r85095 = r85093 * r85093;
double r85096 = 4.0;
double r85097 = a;
double r85098 = c;
double r85099 = r85097 * r85098;
double r85100 = r85096 * r85099;
double r85101 = r85095 - r85100;
double r85102 = sqrt(r85101);
double r85103 = r85094 - r85102;
double r85104 = 2.0;
double r85105 = r85104 * r85097;
double r85106 = r85103 / r85105;
return r85106;
}
double f(double a, double b, double c) {
double r85107 = b;
double r85108 = -1.2864134951106807e+46;
bool r85109 = r85107 <= r85108;
double r85110 = -1.0;
double r85111 = c;
double r85112 = r85111 / r85107;
double r85113 = r85110 * r85112;
double r85114 = -1.89742085527562e-66;
bool r85115 = r85107 <= r85114;
double r85116 = 1.0;
double r85117 = 2.0;
double r85118 = a;
double r85119 = r85117 * r85118;
double r85120 = r85116 / r85119;
double r85121 = 2.0;
double r85122 = pow(r85107, r85121);
double r85123 = r85122 - r85122;
double r85124 = 4.0;
double r85125 = r85118 * r85111;
double r85126 = r85124 * r85125;
double r85127 = r85123 + r85126;
double r85128 = r85120 * r85127;
double r85129 = -r85107;
double r85130 = r85107 * r85107;
double r85131 = r85130 - r85126;
double r85132 = sqrt(r85131);
double r85133 = r85129 + r85132;
double r85134 = r85128 / r85133;
double r85135 = -8.637249247672526e-116;
bool r85136 = r85107 <= r85135;
double r85137 = 5.5792500737545097e+51;
bool r85138 = r85107 <= r85137;
double r85139 = r85129 - r85132;
double r85140 = r85139 / r85119;
double r85141 = r85107 / r85118;
double r85142 = r85110 * r85141;
double r85143 = r85138 ? r85140 : r85142;
double r85144 = r85136 ? r85113 : r85143;
double r85145 = r85115 ? r85134 : r85144;
double r85146 = r85109 ? r85113 : r85145;
return r85146;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 21.3 |
| Herbie | 9.5 |
if b < -1.2864134951106807e+46 or -1.89742085527562e-66 < b < -8.637249247672526e-116Initial program 54.3
Taylor expanded around -inf 7.4
if -1.2864134951106807e+46 < b < -1.89742085527562e-66Initial program 41.4
rmApplied div-inv41.4
rmApplied flip--41.5
Applied associate-*l/41.5
Simplified14.2
if -8.637249247672526e-116 < b < 5.5792500737545097e+51Initial program 12.3
if 5.5792500737545097e+51 < b Initial program 38.1
rmApplied div-inv38.2
rmApplied flip--61.4
Applied frac-times62.1
Simplified61.4
Taylor expanded around 0 5.8
Final simplification9.5
herbie shell --seed 2020018
(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)))