\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -5.155370884026948820821332330633084010448 \cdot 10^{255}:\\
\;\;\;\;\mathsf{fma}\left(-4, \frac{t}{\frac{c}{a}}, \frac{\mathsf{fma}\left(x, 9 \cdot y, b\right)}{z \cdot c}\right)\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -0.0:\\
\;\;\;\;\mathsf{fma}\left(-4, \frac{t \cdot a}{c}, \frac{1}{z} \cdot \frac{\mathsf{fma}\left(9 \cdot x, y, b\right)}{c}\right)\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le 2.557527448475019883080373012010781242594 \cdot 10^{292}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-4, t \cdot \frac{a}{c}, \frac{\frac{9 \cdot \left(x \cdot y\right) + b}{z}}{c}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r875982 = x;
double r875983 = 9.0;
double r875984 = r875982 * r875983;
double r875985 = y;
double r875986 = r875984 * r875985;
double r875987 = z;
double r875988 = 4.0;
double r875989 = r875987 * r875988;
double r875990 = t;
double r875991 = r875989 * r875990;
double r875992 = a;
double r875993 = r875991 * r875992;
double r875994 = r875986 - r875993;
double r875995 = b;
double r875996 = r875994 + r875995;
double r875997 = c;
double r875998 = r875987 * r875997;
double r875999 = r875996 / r875998;
return r875999;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r876000 = x;
double r876001 = 9.0;
double r876002 = r876000 * r876001;
double r876003 = y;
double r876004 = r876002 * r876003;
double r876005 = z;
double r876006 = 4.0;
double r876007 = r876005 * r876006;
double r876008 = t;
double r876009 = r876007 * r876008;
double r876010 = a;
double r876011 = r876009 * r876010;
double r876012 = r876004 - r876011;
double r876013 = b;
double r876014 = r876012 + r876013;
double r876015 = c;
double r876016 = r876005 * r876015;
double r876017 = r876014 / r876016;
double r876018 = -5.155370884026949e+255;
bool r876019 = r876017 <= r876018;
double r876020 = -r876006;
double r876021 = r876015 / r876010;
double r876022 = r876008 / r876021;
double r876023 = r876001 * r876003;
double r876024 = fma(r876000, r876023, r876013);
double r876025 = r876024 / r876016;
double r876026 = fma(r876020, r876022, r876025);
double r876027 = -0.0;
bool r876028 = r876017 <= r876027;
double r876029 = r876008 * r876010;
double r876030 = r876029 / r876015;
double r876031 = 1.0;
double r876032 = r876031 / r876005;
double r876033 = r876001 * r876000;
double r876034 = fma(r876033, r876003, r876013);
double r876035 = r876034 / r876015;
double r876036 = r876032 * r876035;
double r876037 = fma(r876020, r876030, r876036);
double r876038 = 2.55752744847502e+292;
bool r876039 = r876017 <= r876038;
double r876040 = r876010 / r876015;
double r876041 = r876008 * r876040;
double r876042 = r876000 * r876003;
double r876043 = r876001 * r876042;
double r876044 = r876043 + r876013;
double r876045 = r876044 / r876005;
double r876046 = r876045 / r876015;
double r876047 = fma(r876020, r876041, r876046);
double r876048 = r876039 ? r876017 : r876047;
double r876049 = r876028 ? r876037 : r876048;
double r876050 = r876019 ? r876026 : r876049;
return r876050;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 20.3 |
|---|---|
| Target | 14.0 |
| Herbie | 8.4 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -5.155370884026949e+255Initial program 42.9
Simplified21.9
rmApplied associate-/l*18.0
if -5.155370884026949e+255 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -0.0Initial program 6.0
Simplified5.3
rmApplied *-un-lft-identity5.3
Applied times-frac6.1
Simplified6.1
if -0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.55752744847502e+292Initial program 5.5
if 2.55752744847502e+292 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 60.8
Simplified29.6
rmApplied associate-/r*27.5
Simplified27.7
rmApplied fma-udef27.7
Simplified27.5
rmApplied *-un-lft-identity27.5
Applied times-frac21.9
Simplified21.9
Final simplification8.4
herbie shell --seed 2019354 +o rules:numerics
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:herbie-target
(if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -1.1001567408041051e-171) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)))