\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{1}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot x}{\left(z \cdot 2\right) \cdot \left(y \cdot 27\right)} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r814356 = 1.0;
double r814357 = 3.0;
double r814358 = r814356 / r814357;
double r814359 = x;
double r814360 = y;
double r814361 = 27.0;
double r814362 = r814360 * r814361;
double r814363 = r814359 / r814362;
double r814364 = r814357 * r814363;
double r814365 = z;
double r814366 = 2.0;
double r814367 = r814365 * r814366;
double r814368 = r814364 / r814367;
double r814369 = t;
double r814370 = sqrt(r814369);
double r814371 = r814368 * r814370;
double r814372 = acos(r814371);
double r814373 = r814358 * r814372;
return r814373;
}
double f(double x, double y, double z, double t) {
double r814374 = 1.0;
double r814375 = 3.0;
double r814376 = cbrt(r814375);
double r814377 = r814376 * r814376;
double r814378 = r814374 / r814377;
double r814379 = 1.0;
double r814380 = r814379 / r814376;
double r814381 = x;
double r814382 = r814375 * r814381;
double r814383 = z;
double r814384 = 2.0;
double r814385 = r814383 * r814384;
double r814386 = y;
double r814387 = 27.0;
double r814388 = r814386 * r814387;
double r814389 = r814385 * r814388;
double r814390 = r814382 / r814389;
double r814391 = t;
double r814392 = sqrt(r814391);
double r814393 = r814390 * r814392;
double r814394 = acos(r814393);
double r814395 = r814380 * r814394;
double r814396 = r814378 * r814395;
return r814396;
}




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 *-un-lft-identity1.3
Applied times-frac0.3
Applied associate-*l*0.3
rmApplied associate-*r/0.3
Applied associate-/l/0.4
Final simplification0.4
herbie shell --seed 2020002 +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)))))