\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt{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 r478389 = 1.0;
double r478390 = 3.0;
double r478391 = r478389 / r478390;
double r478392 = x;
double r478393 = y;
double r478394 = 27.0;
double r478395 = r478393 * r478394;
double r478396 = r478392 / r478395;
double r478397 = r478390 * r478396;
double r478398 = z;
double r478399 = 2.0;
double r478400 = r478398 * r478399;
double r478401 = r478397 / r478400;
double r478402 = t;
double r478403 = sqrt(r478402);
double r478404 = r478401 * r478403;
double r478405 = acos(r478404);
double r478406 = r478391 * r478405;
return r478406;
}
double f(double x, double y, double z, double t) {
double r478407 = 1.0;
double r478408 = sqrt(r478407);
double r478409 = 3.0;
double r478410 = cbrt(r478409);
double r478411 = r478410 * r478410;
double r478412 = r478408 / r478411;
double r478413 = r478408 / r478410;
double r478414 = x;
double r478415 = y;
double r478416 = 27.0;
double r478417 = r478415 * r478416;
double r478418 = r478414 / r478417;
double r478419 = r478409 * r478418;
double r478420 = z;
double r478421 = 2.0;
double r478422 = r478420 * r478421;
double r478423 = r478419 / r478422;
double r478424 = t;
double r478425 = sqrt(r478424);
double r478426 = r478423 * r478425;
double r478427 = acos(r478426);
double r478428 = r478413 * r478427;
double r478429 = r478412 * r478428;
return r478429;
}




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 add-sqr-sqrt1.3
Applied times-frac0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019326
(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)))))