\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 \mathsf{expm1}\left(\mathsf{log1p}\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)\right)double f(double x, double y, double z, double t) {
double r533438 = 1.0;
double r533439 = 3.0;
double r533440 = r533438 / r533439;
double r533441 = x;
double r533442 = y;
double r533443 = 27.0;
double r533444 = r533442 * r533443;
double r533445 = r533441 / r533444;
double r533446 = r533439 * r533445;
double r533447 = z;
double r533448 = 2.0;
double r533449 = r533447 * r533448;
double r533450 = r533446 / r533449;
double r533451 = t;
double r533452 = sqrt(r533451);
double r533453 = r533450 * r533452;
double r533454 = acos(r533453);
double r533455 = r533440 * r533454;
return r533455;
}
double f(double x, double y, double z, double t) {
double r533456 = 1.0;
double r533457 = cbrt(r533456);
double r533458 = r533457 * r533457;
double r533459 = 3.0;
double r533460 = cbrt(r533459);
double r533461 = r533460 * r533460;
double r533462 = r533458 / r533461;
double r533463 = r533457 / r533460;
double r533464 = x;
double r533465 = y;
double r533466 = 27.0;
double r533467 = r533465 * r533466;
double r533468 = r533464 / r533467;
double r533469 = r533459 * r533468;
double r533470 = z;
double r533471 = 2.0;
double r533472 = r533470 * r533471;
double r533473 = r533469 / r533472;
double r533474 = t;
double r533475 = sqrt(r533474);
double r533476 = r533473 * r533475;
double r533477 = acos(r533476);
double r533478 = r533463 * r533477;
double r533479 = log1p(r533478);
double r533480 = expm1(r533479);
double r533481 = r533462 * r533480;
return r533481;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.3 |
| 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
rmApplied expm1-log1p-u0.4
Final simplification0.4
herbie shell --seed 2019305 +o rules:numerics
(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)))))