\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 -4.310655787273717085626057165340673522926 \cdot 10^{307}:\\
\;\;\;\;\left(9 \cdot \frac{1}{\frac{\frac{z \cdot c}{y}}{x}} + \frac{b}{z \cdot c}\right) - 4 \cdot \frac{t \cdot a}{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}{z \cdot c} \le -5.714617762619817600956632832341409108159 \cdot 10^{-177}:\\
\;\;\;\;\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{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 1.508521702468635068346725200584782078703 \cdot 10^{-260}:\\
\;\;\;\;\frac{\frac{b + 9 \cdot \left(x \cdot y\right)}{z} - a \cdot \left(4 \cdot t\right)}{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}{z \cdot c} \le 6.624712766971525157760939835591736702834 \cdot 10^{252}:\\
\;\;\;\;\left(9 \cdot \frac{x}{\frac{z \cdot c}{y}} + \frac{b}{z \cdot c}\right) - 4 \cdot \frac{1}{\frac{\frac{c}{t}}{a}}\\
\mathbf{else}:\\
\;\;\;\;\left(9 \cdot \left(\frac{x}{z} \cdot \frac{y}{c}\right) + \frac{b}{z \cdot c}\right) - 4 \cdot \frac{t \cdot a}{c}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r49098851 = x;
double r49098852 = 9.0;
double r49098853 = r49098851 * r49098852;
double r49098854 = y;
double r49098855 = r49098853 * r49098854;
double r49098856 = z;
double r49098857 = 4.0;
double r49098858 = r49098856 * r49098857;
double r49098859 = t;
double r49098860 = r49098858 * r49098859;
double r49098861 = a;
double r49098862 = r49098860 * r49098861;
double r49098863 = r49098855 - r49098862;
double r49098864 = b;
double r49098865 = r49098863 + r49098864;
double r49098866 = c;
double r49098867 = r49098856 * r49098866;
double r49098868 = r49098865 / r49098867;
return r49098868;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r49098869 = x;
double r49098870 = 9.0;
double r49098871 = r49098869 * r49098870;
double r49098872 = y;
double r49098873 = r49098871 * r49098872;
double r49098874 = z;
double r49098875 = 4.0;
double r49098876 = r49098874 * r49098875;
double r49098877 = t;
double r49098878 = r49098876 * r49098877;
double r49098879 = a;
double r49098880 = r49098878 * r49098879;
double r49098881 = r49098873 - r49098880;
double r49098882 = b;
double r49098883 = r49098881 + r49098882;
double r49098884 = c;
double r49098885 = r49098874 * r49098884;
double r49098886 = r49098883 / r49098885;
double r49098887 = -4.310655787273717e+307;
bool r49098888 = r49098886 <= r49098887;
double r49098889 = 1.0;
double r49098890 = r49098885 / r49098872;
double r49098891 = r49098890 / r49098869;
double r49098892 = r49098889 / r49098891;
double r49098893 = r49098870 * r49098892;
double r49098894 = r49098882 / r49098885;
double r49098895 = r49098893 + r49098894;
double r49098896 = r49098877 * r49098879;
double r49098897 = r49098896 / r49098884;
double r49098898 = r49098875 * r49098897;
double r49098899 = r49098895 - r49098898;
double r49098900 = -5.714617762619818e-177;
bool r49098901 = r49098886 <= r49098900;
double r49098902 = 1.508521702468635e-260;
bool r49098903 = r49098886 <= r49098902;
double r49098904 = r49098869 * r49098872;
double r49098905 = r49098870 * r49098904;
double r49098906 = r49098882 + r49098905;
double r49098907 = r49098906 / r49098874;
double r49098908 = r49098875 * r49098877;
double r49098909 = r49098879 * r49098908;
double r49098910 = r49098907 - r49098909;
double r49098911 = r49098910 / r49098884;
double r49098912 = 6.624712766971525e+252;
bool r49098913 = r49098886 <= r49098912;
double r49098914 = r49098869 / r49098890;
double r49098915 = r49098870 * r49098914;
double r49098916 = r49098915 + r49098894;
double r49098917 = r49098884 / r49098877;
double r49098918 = r49098917 / r49098879;
double r49098919 = r49098889 / r49098918;
double r49098920 = r49098875 * r49098919;
double r49098921 = r49098916 - r49098920;
double r49098922 = r49098869 / r49098874;
double r49098923 = r49098872 / r49098884;
double r49098924 = r49098922 * r49098923;
double r49098925 = r49098870 * r49098924;
double r49098926 = r49098925 + r49098894;
double r49098927 = r49098926 - r49098898;
double r49098928 = r49098913 ? r49098921 : r49098927;
double r49098929 = r49098903 ? r49098911 : r49098928;
double r49098930 = r49098901 ? r49098886 : r49098929;
double r49098931 = r49098888 ? r49098899 : r49098930;
return r49098931;
}




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.7 |
|---|---|
| Target | 14.5 |
| Herbie | 6.4 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -4.310655787273717e+307Initial program 63.5
Simplified29.0
Taylor expanded around 0 34.3
rmApplied associate-/l*15.6
rmApplied clear-num15.6
if -4.310655787273717e+307 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -5.714617762619818e-177Initial program 0.7
if -5.714617762619818e-177 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.508521702468635e-260Initial program 30.8
Simplified0.7
Taylor expanded around 0 0.8
if 1.508521702468635e-260 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 6.624712766971525e+252Initial program 0.7
Simplified8.6
Taylor expanded around 0 2.3
rmApplied associate-/l*4.6
rmApplied clear-num4.7
rmApplied associate-/r*4.1
if 6.624712766971525e+252 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 53.7
Simplified26.3
Taylor expanded around 0 26.8
rmApplied times-frac17.2
Final simplification6.4
herbie shell --seed 2019174
(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)))