\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}x - \left(\frac{\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\frac{z}{\frac{y}{\sqrt[3]{3}}}} - \frac{\frac{\frac{t}{3}}{z}}{y}\right)double f(double x, double y, double z, double t) {
double r1158154 = x;
double r1158155 = y;
double r1158156 = z;
double r1158157 = 3.0;
double r1158158 = r1158156 * r1158157;
double r1158159 = r1158155 / r1158158;
double r1158160 = r1158154 - r1158159;
double r1158161 = t;
double r1158162 = r1158158 * r1158155;
double r1158163 = r1158161 / r1158162;
double r1158164 = r1158160 + r1158163;
return r1158164;
}
double f(double x, double y, double z, double t) {
double r1158165 = x;
double r1158166 = 1.0;
double r1158167 = 3.0;
double r1158168 = cbrt(r1158167);
double r1158169 = r1158168 * r1158168;
double r1158170 = r1158166 / r1158169;
double r1158171 = z;
double r1158172 = y;
double r1158173 = r1158172 / r1158168;
double r1158174 = r1158171 / r1158173;
double r1158175 = r1158170 / r1158174;
double r1158176 = t;
double r1158177 = r1158176 / r1158167;
double r1158178 = r1158177 / r1158171;
double r1158179 = r1158178 / r1158172;
double r1158180 = r1158175 - r1158179;
double r1158181 = r1158165 - r1158180;
return r1158181;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.6 |
| Herbie | 1.6 |
Initial program 3.7
rmApplied associate-/r*1.6
Simplified1.5
rmApplied associate-+l-1.5
Simplified1.5
rmApplied add-cube-cbrt1.5
Applied *-un-lft-identity1.5
Applied times-frac1.6
Applied associate-/l*1.6
Final simplification1.6
herbie shell --seed 2019196 +o rules:numerics
(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))))