\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.61268387266151013 \cdot 10^{141}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 2.5402182456312607 \cdot 10^{-243}:\\
\;\;\;\;1 \cdot \frac{2 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 2.8568501197790958 \cdot 10^{109}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r92148 = b;
double r92149 = -r92148;
double r92150 = r92148 * r92148;
double r92151 = 4.0;
double r92152 = a;
double r92153 = c;
double r92154 = r92152 * r92153;
double r92155 = r92151 * r92154;
double r92156 = r92150 - r92155;
double r92157 = sqrt(r92156);
double r92158 = r92149 - r92157;
double r92159 = 2.0;
double r92160 = r92159 * r92152;
double r92161 = r92158 / r92160;
return r92161;
}
double f(double a, double b, double c) {
double r92162 = b;
double r92163 = -2.61268387266151e+141;
bool r92164 = r92162 <= r92163;
double r92165 = -1.0;
double r92166 = c;
double r92167 = r92166 / r92162;
double r92168 = r92165 * r92167;
double r92169 = 2.5402182456312607e-243;
bool r92170 = r92162 <= r92169;
double r92171 = 1.0;
double r92172 = 2.0;
double r92173 = r92172 * r92166;
double r92174 = r92162 * r92162;
double r92175 = 4.0;
double r92176 = a;
double r92177 = r92176 * r92166;
double r92178 = r92175 * r92177;
double r92179 = r92174 - r92178;
double r92180 = sqrt(r92179);
double r92181 = r92180 - r92162;
double r92182 = r92173 / r92181;
double r92183 = r92171 * r92182;
double r92184 = 2.8568501197790958e+109;
bool r92185 = r92162 <= r92184;
double r92186 = -r92162;
double r92187 = r92186 - r92180;
double r92188 = r92172 * r92176;
double r92189 = r92171 / r92188;
double r92190 = r92187 * r92189;
double r92191 = r92162 / r92176;
double r92192 = r92165 * r92191;
double r92193 = r92185 ? r92190 : r92192;
double r92194 = r92170 ? r92183 : r92193;
double r92195 = r92164 ? r92168 : r92194;
return r92195;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 20.6 |
| Herbie | 6.7 |
if b < -2.61268387266151e+141Initial program 62.7
Taylor expanded around -inf 1.9
if -2.61268387266151e+141 < b < 2.5402182456312607e-243Initial program 32.8
rmApplied div-inv32.8
rmApplied flip--32.9
Simplified15.9
Simplified15.9
rmApplied *-un-lft-identity15.9
Applied *-un-lft-identity15.9
Applied times-frac15.9
Applied associate-*l*15.9
Simplified14.5
Taylor expanded around 0 8.6
if 2.5402182456312607e-243 < b < 2.8568501197790958e+109Initial program 8.7
rmApplied div-inv8.9
if 2.8568501197790958e+109 < b Initial program 49.1
rmApplied div-inv49.1
rmApplied flip--63.2
Simplified62.2
Simplified62.2
Taylor expanded around 0 3.6
Final simplification6.7
herbie shell --seed 2020047
(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)))