\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.9358923729233266 \cdot 10^{149}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 9.39036747108992214 \cdot 10^{-69}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r55086 = b;
double r55087 = -r55086;
double r55088 = r55086 * r55086;
double r55089 = 4.0;
double r55090 = a;
double r55091 = c;
double r55092 = r55090 * r55091;
double r55093 = r55089 * r55092;
double r55094 = r55088 - r55093;
double r55095 = sqrt(r55094);
double r55096 = r55087 + r55095;
double r55097 = 2.0;
double r55098 = r55097 * r55090;
double r55099 = r55096 / r55098;
return r55099;
}
double f(double a, double b, double c) {
double r55100 = b;
double r55101 = -2.9358923729233266e+149;
bool r55102 = r55100 <= r55101;
double r55103 = 1.0;
double r55104 = c;
double r55105 = r55104 / r55100;
double r55106 = a;
double r55107 = r55100 / r55106;
double r55108 = r55105 - r55107;
double r55109 = r55103 * r55108;
double r55110 = 9.390367471089922e-69;
bool r55111 = r55100 <= r55110;
double r55112 = -r55100;
double r55113 = r55100 * r55100;
double r55114 = 4.0;
double r55115 = r55106 * r55104;
double r55116 = r55114 * r55115;
double r55117 = r55113 - r55116;
double r55118 = sqrt(r55117);
double r55119 = r55112 + r55118;
double r55120 = 2.0;
double r55121 = r55120 * r55106;
double r55122 = r55119 / r55121;
double r55123 = -1.0;
double r55124 = r55123 * r55105;
double r55125 = r55111 ? r55122 : r55124;
double r55126 = r55102 ? r55109 : r55125;
return r55126;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.2 |
| Herbie | 9.8 |
if b < -2.9358923729233266e+149Initial program 62.1
Taylor expanded around -inf 1.7
Simplified1.7
if -2.9358923729233266e+149 < b < 9.390367471089922e-69Initial program 12.5
rmApplied div-inv12.7
rmApplied un-div-inv12.5
if 9.390367471089922e-69 < b Initial program 53.5
Taylor expanded around inf 8.7
Final simplification9.8
herbie shell --seed 2020018
(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)))