\frac{1.0}{3.0} \cdot \cos^{-1} \left(\frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0} \cdot \sqrt{t}\right)\left(\frac{1.0}{\sqrt[3]{3.0}} \cdot \cos^{-1} \left(\frac{\frac{x}{27.0 \cdot y} \cdot 3.0}{2.0 \cdot z} \cdot \sqrt{t}\right)\right) \cdot \frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}double f(double x, double y, double z, double t) {
double r37585201 = 1.0;
double r37585202 = 3.0;
double r37585203 = r37585201 / r37585202;
double r37585204 = x;
double r37585205 = y;
double r37585206 = 27.0;
double r37585207 = r37585205 * r37585206;
double r37585208 = r37585204 / r37585207;
double r37585209 = r37585202 * r37585208;
double r37585210 = z;
double r37585211 = 2.0;
double r37585212 = r37585210 * r37585211;
double r37585213 = r37585209 / r37585212;
double r37585214 = t;
double r37585215 = sqrt(r37585214);
double r37585216 = r37585213 * r37585215;
double r37585217 = acos(r37585216);
double r37585218 = r37585203 * r37585217;
return r37585218;
}
double f(double x, double y, double z, double t) {
double r37585219 = 1.0;
double r37585220 = 3.0;
double r37585221 = cbrt(r37585220);
double r37585222 = r37585219 / r37585221;
double r37585223 = x;
double r37585224 = 27.0;
double r37585225 = y;
double r37585226 = r37585224 * r37585225;
double r37585227 = r37585223 / r37585226;
double r37585228 = r37585227 * r37585220;
double r37585229 = 2.0;
double r37585230 = z;
double r37585231 = r37585229 * r37585230;
double r37585232 = r37585228 / r37585231;
double r37585233 = t;
double r37585234 = sqrt(r37585233);
double r37585235 = r37585232 * r37585234;
double r37585236 = acos(r37585235);
double r37585237 = r37585222 * r37585236;
double r37585238 = 1.0;
double r37585239 = r37585221 * r37585221;
double r37585240 = r37585238 / r37585239;
double r37585241 = r37585237 * r37585240;
return r37585241;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.2 |
| Herbie | 0.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019163
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, D"
:herbie-target
(/ (acos (* (/ (/ x 27.0) (* y z)) (/ (sqrt t) (/ 2.0 3.0)))) 3.0)
(* (/ 1.0 3.0) (acos (* (/ (* 3.0 (/ x (* y 27.0))) (* z 2.0)) (sqrt t)))))