\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt[3]{1}}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r800432 = 1.0;
double r800433 = 3.0;
double r800434 = r800432 / r800433;
double r800435 = x;
double r800436 = y;
double r800437 = 27.0;
double r800438 = r800436 * r800437;
double r800439 = r800435 / r800438;
double r800440 = r800433 * r800439;
double r800441 = z;
double r800442 = 2.0;
double r800443 = r800441 * r800442;
double r800444 = r800440 / r800443;
double r800445 = t;
double r800446 = sqrt(r800445);
double r800447 = r800444 * r800446;
double r800448 = acos(r800447);
double r800449 = r800434 * r800448;
return r800449;
}
double f(double x, double y, double z, double t) {
double r800450 = 1.0;
double r800451 = cbrt(r800450);
double r800452 = r800451 * r800451;
double r800453 = 3.0;
double r800454 = cbrt(r800453);
double r800455 = r800454 * r800454;
double r800456 = r800452 / r800455;
double r800457 = r800451 / r800454;
double r800458 = x;
double r800459 = y;
double r800460 = 27.0;
double r800461 = r800459 * r800460;
double r800462 = r800458 / r800461;
double r800463 = r800453 * r800462;
double r800464 = z;
double r800465 = 2.0;
double r800466 = r800464 * r800465;
double r800467 = r800463 / r800466;
double r800468 = t;
double r800469 = sqrt(r800468);
double r800470 = r800467 * r800469;
double r800471 = acos(r800470);
double r800472 = r800457 * r800471;
double r800473 = r800456 * r800472;
return r800473;
}




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.4 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-cube-cbrt1.3
Applied times-frac0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2020062
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, D"
:precision binary64
:herbie-target
(/ (acos (* (/ (/ x 27) (* y z)) (/ (sqrt t) (/ 2 3)))) 3)
(* (/ 1 3) (acos (* (/ (* 3 (/ x (* y 27))) (* z 2)) (sqrt t)))))