\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\left(\frac{1}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\sqrt{t} \cdot \left(\frac{x}{z \cdot y} \cdot 0.05555555555555555247160270937456516548991\right)\right)\right) \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r37166322 = 1.0;
double r37166323 = 3.0;
double r37166324 = r37166322 / r37166323;
double r37166325 = x;
double r37166326 = y;
double r37166327 = 27.0;
double r37166328 = r37166326 * r37166327;
double r37166329 = r37166325 / r37166328;
double r37166330 = r37166323 * r37166329;
double r37166331 = z;
double r37166332 = 2.0;
double r37166333 = r37166331 * r37166332;
double r37166334 = r37166330 / r37166333;
double r37166335 = t;
double r37166336 = sqrt(r37166335);
double r37166337 = r37166334 * r37166336;
double r37166338 = acos(r37166337);
double r37166339 = r37166324 * r37166338;
return r37166339;
}
double f(double x, double y, double z, double t) {
double r37166340 = 1.0;
double r37166341 = 3.0;
double r37166342 = cbrt(r37166341);
double r37166343 = r37166340 / r37166342;
double r37166344 = t;
double r37166345 = sqrt(r37166344);
double r37166346 = x;
double r37166347 = z;
double r37166348 = y;
double r37166349 = r37166347 * r37166348;
double r37166350 = r37166346 / r37166349;
double r37166351 = 0.05555555555555555;
double r37166352 = r37166350 * r37166351;
double r37166353 = r37166345 * r37166352;
double r37166354 = acos(r37166353);
double r37166355 = r37166343 * r37166354;
double r37166356 = 1.0;
double r37166357 = r37166342 * r37166342;
double r37166358 = r37166356 / r37166357;
double r37166359 = r37166355 * r37166358;
return r37166359;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.4 |
|---|---|
| Target | 1.2 |
| Herbie | 0.3 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.4
Applied associate-*l*0.4
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019200
(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)))))