\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 \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)double f(double x, double y, double z, double t) {
double r750316 = 1.0;
double r750317 = 3.0;
double r750318 = r750316 / r750317;
double r750319 = x;
double r750320 = y;
double r750321 = 27.0;
double r750322 = r750320 * r750321;
double r750323 = r750319 / r750322;
double r750324 = r750317 * r750323;
double r750325 = z;
double r750326 = 2.0;
double r750327 = r750325 * r750326;
double r750328 = r750324 / r750327;
double r750329 = t;
double r750330 = sqrt(r750329);
double r750331 = r750328 * r750330;
double r750332 = acos(r750331);
double r750333 = r750318 * r750332;
return r750333;
}
double f(double x, double y, double z, double t) {
double r750334 = 1.0;
double r750335 = cbrt(r750334);
double r750336 = r750335 * r750335;
double r750337 = 3.0;
double r750338 = cbrt(r750337);
double r750339 = r750338 * r750338;
double r750340 = r750336 / r750339;
double r750341 = r750335 / r750338;
double r750342 = x;
double r750343 = y;
double r750344 = 27.0;
double r750345 = r750343 * r750344;
double r750346 = r750342 / r750345;
double r750347 = r750337 * r750346;
double r750348 = z;
double r750349 = 2.0;
double r750350 = r750348 * r750349;
double r750351 = r750347 / r750350;
double r750352 = t;
double r750353 = sqrt(r750352);
double r750354 = r750351 * r750353;
double r750355 = acos(r750354);
double r750356 = r750341 * r750355;
double r750357 = r750340 * r750356;
return r750357;
}




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.4 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-cube-cbrt1.3
Applied times-frac0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2020065 +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)))))