\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 \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r500303 = 1.0;
double r500304 = 3.0;
double r500305 = r500303 / r500304;
double r500306 = x;
double r500307 = y;
double r500308 = 27.0;
double r500309 = r500307 * r500308;
double r500310 = r500306 / r500309;
double r500311 = r500304 * r500310;
double r500312 = z;
double r500313 = 2.0;
double r500314 = r500312 * r500313;
double r500315 = r500311 / r500314;
double r500316 = t;
double r500317 = sqrt(r500316);
double r500318 = r500315 * r500317;
double r500319 = acos(r500318);
double r500320 = r500305 * r500319;
return r500320;
}
double f(double x, double y, double z, double t) {
double r500321 = 1.0;
double r500322 = 3.0;
double r500323 = cbrt(r500322);
double r500324 = r500323 * r500323;
double r500325 = r500321 / r500324;
double r500326 = 1.0;
double r500327 = r500326 / r500323;
double r500328 = x;
double r500329 = y;
double r500330 = 27.0;
double r500331 = r500329 * r500330;
double r500332 = r500328 / r500331;
double r500333 = r500322 * r500332;
double r500334 = z;
double r500335 = 2.0;
double r500336 = r500334 * r500335;
double r500337 = r500333 / r500336;
double r500338 = t;
double r500339 = sqrt(r500338);
double r500340 = r500337 * r500339;
double r500341 = acos(r500340);
double r500342 = r500327 * r500341;
double r500343 = r500325 * r500342;
return r500343;
}




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.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2019209
(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)))))