\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}{c \cdot z} \le -1.813370883718299285387959113591105561862 \cdot 10^{71}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9\right) - \left(\frac{1}{c} \cdot \left(t \cdot a\right)\right) \cdot 4\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 6.71719399387071399742261734584069163283 \cdot 10^{-266}:\\
\;\;\;\;\frac{\frac{1}{z} \cdot \left(\left(x \cdot 9\right) \cdot y + b\right) - \left(a \cdot 4\right) \cdot t}{c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 2.621452537176748546055737053625009593514 \cdot 10^{285}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{z \cdot \frac{c}{y}} \cdot 9 + \frac{b}{c \cdot z}\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 r44613746 = x;
double r44613747 = 9.0;
double r44613748 = r44613746 * r44613747;
double r44613749 = y;
double r44613750 = r44613748 * r44613749;
double r44613751 = z;
double r44613752 = 4.0;
double r44613753 = r44613751 * r44613752;
double r44613754 = t;
double r44613755 = r44613753 * r44613754;
double r44613756 = a;
double r44613757 = r44613755 * r44613756;
double r44613758 = r44613750 - r44613757;
double r44613759 = b;
double r44613760 = r44613758 + r44613759;
double r44613761 = c;
double r44613762 = r44613751 * r44613761;
double r44613763 = r44613760 / r44613762;
return r44613763;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r44613764 = x;
double r44613765 = 9.0;
double r44613766 = r44613764 * r44613765;
double r44613767 = y;
double r44613768 = r44613766 * r44613767;
double r44613769 = z;
double r44613770 = 4.0;
double r44613771 = r44613769 * r44613770;
double r44613772 = t;
double r44613773 = r44613771 * r44613772;
double r44613774 = a;
double r44613775 = r44613773 * r44613774;
double r44613776 = r44613768 - r44613775;
double r44613777 = b;
double r44613778 = r44613776 + r44613777;
double r44613779 = c;
double r44613780 = r44613779 * r44613769;
double r44613781 = r44613778 / r44613780;
double r44613782 = -1.8133708837182993e+71;
bool r44613783 = r44613781 <= r44613782;
double r44613784 = r44613777 / r44613780;
double r44613785 = r44613780 / r44613767;
double r44613786 = r44613764 / r44613785;
double r44613787 = r44613786 * r44613765;
double r44613788 = r44613784 + r44613787;
double r44613789 = 1.0;
double r44613790 = r44613789 / r44613779;
double r44613791 = r44613772 * r44613774;
double r44613792 = r44613790 * r44613791;
double r44613793 = r44613792 * r44613770;
double r44613794 = r44613788 - r44613793;
double r44613795 = 6.717193993870714e-266;
bool r44613796 = r44613781 <= r44613795;
double r44613797 = r44613789 / r44613769;
double r44613798 = r44613768 + r44613777;
double r44613799 = r44613797 * r44613798;
double r44613800 = r44613774 * r44613770;
double r44613801 = r44613800 * r44613772;
double r44613802 = r44613799 - r44613801;
double r44613803 = r44613802 / r44613779;
double r44613804 = 2.6214525371767485e+285;
bool r44613805 = r44613781 <= r44613804;
double r44613806 = r44613779 / r44613767;
double r44613807 = r44613769 * r44613806;
double r44613808 = r44613764 / r44613807;
double r44613809 = r44613808 * r44613765;
double r44613810 = r44613809 + r44613784;
double r44613811 = r44613774 / r44613779;
double r44613812 = r44613811 * r44613772;
double r44613813 = r44613812 * r44613770;
double r44613814 = r44613810 - r44613813;
double r44613815 = r44613805 ? r44613781 : r44613814;
double r44613816 = r44613796 ? r44613803 : r44613815;
double r44613817 = r44613783 ? r44613794 : r44613816;
return r44613817;
}




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.6 |
|---|---|
| Target | 14.8 |
| Herbie | 5.1 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.8133708837182993e+71Initial program 20.3
Simplified20.0
Taylor expanded around 0 12.0
rmApplied associate-/l*9.6
rmApplied div-inv9.6
if -1.8133708837182993e+71 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 6.717193993870714e-266Initial program 16.4
Simplified1.5
rmApplied div-inv1.6
if 6.717193993870714e-266 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.6214525371767485e+285Initial program 0.7
if 2.6214525371767485e+285 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 59.6
Simplified27.0
Taylor expanded around 0 29.0
rmApplied associate-/l*21.1
rmApplied *-un-lft-identity21.1
Applied times-frac14.7
Simplified14.7
rmApplied *-un-lft-identity14.7
Applied times-frac11.3
Simplified11.3
Final simplification5.1
herbie shell --seed 2019171
(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)))