\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(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right) \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r609457 = 1.0;
double r609458 = 3.0;
double r609459 = r609457 / r609458;
double r609460 = x;
double r609461 = y;
double r609462 = 27.0;
double r609463 = r609461 * r609462;
double r609464 = r609460 / r609463;
double r609465 = r609458 * r609464;
double r609466 = z;
double r609467 = 2.0;
double r609468 = r609466 * r609467;
double r609469 = r609465 / r609468;
double r609470 = t;
double r609471 = sqrt(r609470);
double r609472 = r609469 * r609471;
double r609473 = acos(r609472);
double r609474 = r609459 * r609473;
return r609474;
}
double f(double x, double y, double z, double t) {
double r609475 = 1.0;
double r609476 = 3.0;
double r609477 = cbrt(r609476);
double r609478 = r609475 / r609477;
double r609479 = x;
double r609480 = y;
double r609481 = 27.0;
double r609482 = r609480 * r609481;
double r609483 = r609479 / r609482;
double r609484 = r609476 * r609483;
double r609485 = z;
double r609486 = 2.0;
double r609487 = r609485 * r609486;
double r609488 = r609484 / r609487;
double r609489 = t;
double r609490 = sqrt(r609489);
double r609491 = r609488 * r609490;
double r609492 = acos(r609491);
double r609493 = r609478 * r609492;
double r609494 = 1.0;
double r609495 = r609477 * r609477;
double r609496 = r609494 / r609495;
double r609497 = r609493 * r609496;
return r609497;
}




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 *-un-lft-identity1.3
Applied times-frac0.4
Applied associate-*l*0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195
(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)))))