\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{b + \left(\left(9 \cdot x\right) \cdot y - \left(t \cdot \left(z \cdot 4\right)\right) \cdot a\right)}{c \cdot z} \le -2.28298144243635429750975635929884797855 \cdot 10^{112}:\\
\;\;\;\;\left(\frac{1}{\frac{c \cdot z}{b}} + 9 \cdot \frac{x}{\frac{c \cdot z}{y}}\right) - \left(\frac{a}{c} \cdot t\right) \cdot 4\\
\mathbf{elif}\;\frac{b + \left(\left(9 \cdot x\right) \cdot y - \left(t \cdot \left(z \cdot 4\right)\right) \cdot a\right)}{c \cdot z} \le 4.09973230378698016031405356379068580905 \cdot 10^{-73}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{\left(9 \cdot x\right) \cdot y + b}{z} - 4 \cdot \left(a \cdot t\right)}}\\
\mathbf{elif}\;\frac{b + \left(\left(9 \cdot x\right) \cdot y - \left(t \cdot \left(z \cdot 4\right)\right) \cdot a\right)}{c \cdot z} \le 1.676513492778132650506503414162823386727 \cdot 10^{303}:\\
\;\;\;\;\frac{b + \left(\left(9 \cdot x\right) \cdot y - \left(t \cdot \left(z \cdot 4\right)\right) \cdot a\right)}{c \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\frac{c \cdot z}{b}} + 9 \cdot \frac{x}{\frac{c \cdot z}{y}}\right) - \left(\frac{a}{c} \cdot t\right) \cdot 4\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r32471734 = x;
double r32471735 = 9.0;
double r32471736 = r32471734 * r32471735;
double r32471737 = y;
double r32471738 = r32471736 * r32471737;
double r32471739 = z;
double r32471740 = 4.0;
double r32471741 = r32471739 * r32471740;
double r32471742 = t;
double r32471743 = r32471741 * r32471742;
double r32471744 = a;
double r32471745 = r32471743 * r32471744;
double r32471746 = r32471738 - r32471745;
double r32471747 = b;
double r32471748 = r32471746 + r32471747;
double r32471749 = c;
double r32471750 = r32471739 * r32471749;
double r32471751 = r32471748 / r32471750;
return r32471751;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r32471752 = b;
double r32471753 = 9.0;
double r32471754 = x;
double r32471755 = r32471753 * r32471754;
double r32471756 = y;
double r32471757 = r32471755 * r32471756;
double r32471758 = t;
double r32471759 = z;
double r32471760 = 4.0;
double r32471761 = r32471759 * r32471760;
double r32471762 = r32471758 * r32471761;
double r32471763 = a;
double r32471764 = r32471762 * r32471763;
double r32471765 = r32471757 - r32471764;
double r32471766 = r32471752 + r32471765;
double r32471767 = c;
double r32471768 = r32471767 * r32471759;
double r32471769 = r32471766 / r32471768;
double r32471770 = -2.2829814424363543e+112;
bool r32471771 = r32471769 <= r32471770;
double r32471772 = 1.0;
double r32471773 = r32471768 / r32471752;
double r32471774 = r32471772 / r32471773;
double r32471775 = r32471768 / r32471756;
double r32471776 = r32471754 / r32471775;
double r32471777 = r32471753 * r32471776;
double r32471778 = r32471774 + r32471777;
double r32471779 = r32471763 / r32471767;
double r32471780 = r32471779 * r32471758;
double r32471781 = r32471780 * r32471760;
double r32471782 = r32471778 - r32471781;
double r32471783 = 4.09973230378698e-73;
bool r32471784 = r32471769 <= r32471783;
double r32471785 = r32471757 + r32471752;
double r32471786 = r32471785 / r32471759;
double r32471787 = r32471763 * r32471758;
double r32471788 = r32471760 * r32471787;
double r32471789 = r32471786 - r32471788;
double r32471790 = r32471767 / r32471789;
double r32471791 = r32471772 / r32471790;
double r32471792 = 1.6765134927781327e+303;
bool r32471793 = r32471769 <= r32471792;
double r32471794 = r32471793 ? r32471769 : r32471782;
double r32471795 = r32471784 ? r32471791 : r32471794;
double r32471796 = r32471771 ? r32471782 : r32471795;
return r32471796;
}




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
Results
| Original | 20.5 |
|---|---|
| Target | 14.2 |
| Herbie | 6.0 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.2829814424363543e+112 or 1.6765134927781327e+303 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 41.1
Simplified23.3
Taylor expanded around 0 21.2
rmApplied associate-/l*15.7
rmApplied *-un-lft-identity15.7
Applied times-frac12.2
Simplified12.2
rmApplied clear-num12.2
if -2.2829814424363543e+112 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 4.09973230378698e-73Initial program 12.0
Simplified2.3
rmApplied clear-num2.9
if 4.09973230378698e-73 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.6765134927781327e+303Initial program 0.6
Final simplification6.0
herbie shell --seed 2019200
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))