\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.970010565552108757188050455448622102575 \cdot 10^{58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}}\right)}{2 \cdot a}\\
\mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1 \cdot b}{a}\\
\end{array}double f(double a, double b, double c) {
double r60922 = b;
double r60923 = -r60922;
double r60924 = r60922 * r60922;
double r60925 = 4.0;
double r60926 = a;
double r60927 = c;
double r60928 = r60926 * r60927;
double r60929 = r60925 * r60928;
double r60930 = r60924 - r60929;
double r60931 = sqrt(r60930);
double r60932 = r60923 - r60931;
double r60933 = 2.0;
double r60934 = r60933 * r60926;
double r60935 = r60932 / r60934;
return r60935;
}
double f(double a, double b, double c) {
double r60936 = b;
double r60937 = -1.9700105655521088e+58;
bool r60938 = r60936 <= r60937;
double r60939 = -1.0;
double r60940 = c;
double r60941 = r60940 / r60936;
double r60942 = r60939 * r60941;
double r60943 = -1.0187986635785929e-256;
bool r60944 = r60936 <= r60943;
double r60945 = a;
double r60946 = r60936 * r60936;
double r60947 = 4.0;
double r60948 = r60947 * r60940;
double r60949 = r60945 * r60948;
double r60950 = r60946 - r60949;
double r60951 = sqrt(r60950);
double r60952 = r60951 - r60936;
double r60953 = r60952 / r60948;
double r60954 = r60945 / r60953;
double r60955 = cbrt(r60954);
double r60956 = r60955 * r60955;
double r60957 = r60955 * r60956;
double r60958 = 2.0;
double r60959 = r60958 * r60945;
double r60960 = r60957 / r60959;
double r60961 = 3.628799960716312e+50;
bool r60962 = r60936 <= r60961;
double r60963 = -r60936;
double r60964 = r60963 - r60951;
double r60965 = r60964 / r60959;
double r60966 = r60939 * r60936;
double r60967 = r60966 / r60945;
double r60968 = r60962 ? r60965 : r60967;
double r60969 = r60944 ? r60960 : r60968;
double r60970 = r60938 ? r60942 : r60969;
return r60970;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 20.7 |
| Herbie | 8.6 |
if b < -1.9700105655521088e+58Initial program 57.5
Simplified57.5
Taylor expanded around -inf 3.4
if -1.9700105655521088e+58 < b < -1.0187986635785929e-256Initial program 31.6
Simplified31.7
rmApplied flip--31.8
Simplified17.3
Simplified17.3
rmApplied add-cube-cbrt18.0
Simplified18.0
Simplified15.0
if -1.0187986635785929e-256 < b < 3.628799960716312e+50Initial program 10.0
Simplified10.1
if 3.628799960716312e+50 < b Initial program 38.2
Simplified38.2
rmApplied flip--61.1
Simplified60.4
Simplified60.4
Taylor expanded around 0 6.3
Simplified6.3
Final simplification8.6
herbie shell --seed 2019179
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))