\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}\;t \le -3.17579813555347906 \cdot 10^{-211}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{\frac{x}{z \cdot c}}{\frac{1}{y}}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;t \le -1.25362070674570982 \cdot 10^{-303}:\\
\;\;\;\;\frac{1}{z} \cdot \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c}\\
\mathbf{elif}\;t \le 2.7046851978488097 \cdot 10^{-104}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \left(a \cdot \frac{t}{c}\right)\\
\mathbf{elif}\;t \le 2.41220335967200437 \cdot 10^{70}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \left(\frac{1}{\frac{z}{\sqrt[3]{y} \cdot \sqrt[3]{y}}} \cdot \frac{x}{\frac{c}{\sqrt[3]{y}}}\right)\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \left(\frac{a}{c} \cdot t\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r735907 = x;
double r735908 = 9.0;
double r735909 = r735907 * r735908;
double r735910 = y;
double r735911 = r735909 * r735910;
double r735912 = z;
double r735913 = 4.0;
double r735914 = r735912 * r735913;
double r735915 = t;
double r735916 = r735914 * r735915;
double r735917 = a;
double r735918 = r735916 * r735917;
double r735919 = r735911 - r735918;
double r735920 = b;
double r735921 = r735919 + r735920;
double r735922 = c;
double r735923 = r735912 * r735922;
double r735924 = r735921 / r735923;
return r735924;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r735925 = t;
double r735926 = -3.175798135553479e-211;
bool r735927 = r735925 <= r735926;
double r735928 = b;
double r735929 = z;
double r735930 = c;
double r735931 = r735929 * r735930;
double r735932 = r735928 / r735931;
double r735933 = 9.0;
double r735934 = x;
double r735935 = r735934 / r735931;
double r735936 = 1.0;
double r735937 = y;
double r735938 = r735936 / r735937;
double r735939 = r735935 / r735938;
double r735940 = r735933 * r735939;
double r735941 = r735932 + r735940;
double r735942 = 4.0;
double r735943 = a;
double r735944 = r735930 / r735925;
double r735945 = r735943 / r735944;
double r735946 = r735942 * r735945;
double r735947 = r735941 - r735946;
double r735948 = -1.2536207067457098e-303;
bool r735949 = r735925 <= r735948;
double r735950 = r735936 / r735929;
double r735951 = r735934 * r735933;
double r735952 = r735951 * r735937;
double r735953 = r735929 * r735942;
double r735954 = r735953 * r735925;
double r735955 = r735954 * r735943;
double r735956 = r735952 - r735955;
double r735957 = r735956 + r735928;
double r735958 = r735957 / r735930;
double r735959 = r735950 * r735958;
double r735960 = 2.7046851978488097e-104;
bool r735961 = r735925 <= r735960;
double r735962 = r735934 * r735937;
double r735963 = r735962 / r735931;
double r735964 = r735933 * r735963;
double r735965 = r735932 + r735964;
double r735966 = r735925 / r735930;
double r735967 = r735943 * r735966;
double r735968 = r735942 * r735967;
double r735969 = r735965 - r735968;
double r735970 = 2.4122033596720044e+70;
bool r735971 = r735925 <= r735970;
double r735972 = cbrt(r735937);
double r735973 = r735972 * r735972;
double r735974 = r735929 / r735973;
double r735975 = r735936 / r735974;
double r735976 = r735930 / r735972;
double r735977 = r735934 / r735976;
double r735978 = r735975 * r735977;
double r735979 = r735933 * r735978;
double r735980 = r735932 + r735979;
double r735981 = r735980 - r735946;
double r735982 = r735931 / r735937;
double r735983 = r735934 / r735982;
double r735984 = r735933 * r735983;
double r735985 = r735932 + r735984;
double r735986 = r735943 / r735930;
double r735987 = r735986 * r735925;
double r735988 = r735942 * r735987;
double r735989 = r735985 - r735988;
double r735990 = r735971 ? r735981 : r735989;
double r735991 = r735961 ? r735969 : r735990;
double r735992 = r735949 ? r735959 : r735991;
double r735993 = r735927 ? r735947 : r735992;
return r735993;
}




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.9 |
| Herbie | 9.5 |
if t < -3.175798135553479e-211Initial program 21.9
Taylor expanded around 0 12.5
rmApplied associate-/l*10.7
rmApplied associate-/l*8.9
rmApplied div-inv8.9
Applied associate-/r*9.2
if -3.175798135553479e-211 < t < -1.2536207067457098e-303Initial program 12.4
rmApplied *-un-lft-identity12.4
Applied times-frac11.1
if -1.2536207067457098e-303 < t < 2.7046851978488097e-104Initial program 11.8
Taylor expanded around 0 8.8
rmApplied *-un-lft-identity8.8
Applied times-frac10.6
Simplified10.6
if 2.7046851978488097e-104 < t < 2.4122033596720044e+70Initial program 19.1
Taylor expanded around 0 10.6
rmApplied associate-/l*10.6
rmApplied associate-/l*8.9
rmApplied add-cube-cbrt9.1
Applied times-frac8.5
Applied *-un-lft-identity8.5
Applied times-frac9.7
if 2.4122033596720044e+70 < t Initial program 33.0
Taylor expanded around 0 17.8
rmApplied associate-/l*11.4
rmApplied associate-/l*9.3
rmApplied associate-/r/8.0
Final simplification9.5
herbie shell --seed 2020018
(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)))