\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\frac{\frac{t}{3} \cdot \frac{1}{z}}{y} + \left(x - \frac{1}{z} \cdot \frac{y}{3}\right)double f(double x, double y, double z, double t) {
double r21116865 = x;
double r21116866 = y;
double r21116867 = z;
double r21116868 = 3.0;
double r21116869 = r21116867 * r21116868;
double r21116870 = r21116866 / r21116869;
double r21116871 = r21116865 - r21116870;
double r21116872 = t;
double r21116873 = r21116869 * r21116866;
double r21116874 = r21116872 / r21116873;
double r21116875 = r21116871 + r21116874;
return r21116875;
}
double f(double x, double y, double z, double t) {
double r21116876 = t;
double r21116877 = 3.0;
double r21116878 = r21116876 / r21116877;
double r21116879 = 1.0;
double r21116880 = z;
double r21116881 = r21116879 / r21116880;
double r21116882 = r21116878 * r21116881;
double r21116883 = y;
double r21116884 = r21116882 / r21116883;
double r21116885 = x;
double r21116886 = r21116883 / r21116877;
double r21116887 = r21116881 * r21116886;
double r21116888 = r21116885 - r21116887;
double r21116889 = r21116884 + r21116888;
return r21116889;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.8 |
|---|---|
| Target | 1.9 |
| Herbie | 1.9 |
Initial program 3.8
rmApplied associate-/r*1.9
rmApplied *-un-lft-identity1.9
Applied times-frac1.9
rmApplied *-un-lft-identity1.9
Applied times-frac1.9
Final simplification1.9
herbie shell --seed 2019171
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:herbie-target
(+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))
(+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))