\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\cos^{-1} \left(\left(\frac{2001599834386887}{36028797018963968} \cdot \frac{x}{z \cdot y}\right) \cdot \sqrt{t}\right)}{\frac{3}{1}}double f(double x, double y, double z, double t) {
double r506472 = 1.0;
double r506473 = 3.0;
double r506474 = r506472 / r506473;
double r506475 = x;
double r506476 = y;
double r506477 = 27.0;
double r506478 = r506476 * r506477;
double r506479 = r506475 / r506478;
double r506480 = r506473 * r506479;
double r506481 = z;
double r506482 = 2.0;
double r506483 = r506481 * r506482;
double r506484 = r506480 / r506483;
double r506485 = t;
double r506486 = sqrt(r506485);
double r506487 = r506484 * r506486;
double r506488 = acos(r506487);
double r506489 = r506474 * r506488;
return r506489;
}
double f(double x, double y, double z, double t) {
double r506490 = 2001599834386887.0;
double r506491 = 3.602879701896397e+16;
double r506492 = r506490 / r506491;
double r506493 = x;
double r506494 = z;
double r506495 = y;
double r506496 = r506494 * r506495;
double r506497 = r506493 / r506496;
double r506498 = r506492 * r506497;
double r506499 = t;
double r506500 = sqrt(r506499);
double r506501 = r506498 * r506500;
double r506502 = acos(r506501);
double r506503 = 3.0;
double r506504 = 1.0;
double r506505 = r506503 / r506504;
double r506506 = r506502 / r506505;
return r506506;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-cube-cbrt1.3
Applied times-frac0.3
Applied associate-*l*0.3
Taylor expanded around 0 0.3
Simplified0.3
Final simplification1.2
herbie shell --seed 2019303
(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)))))