\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 r542238 = 1.0;
double r542239 = 3.0;
double r542240 = r542238 / r542239;
double r542241 = x;
double r542242 = y;
double r542243 = 27.0;
double r542244 = r542242 * r542243;
double r542245 = r542241 / r542244;
double r542246 = r542239 * r542245;
double r542247 = z;
double r542248 = 2.0;
double r542249 = r542247 * r542248;
double r542250 = r542246 / r542249;
double r542251 = t;
double r542252 = sqrt(r542251);
double r542253 = r542250 * r542252;
double r542254 = acos(r542253);
double r542255 = r542240 * r542254;
return r542255;
}
double f(double x, double y, double z, double t) {
double r542256 = 1.0;
double r542257 = 3.0;
double r542258 = cbrt(r542257);
double r542259 = r542258 * r542258;
double r542260 = r542256 / r542259;
double r542261 = 1.0;
double r542262 = r542261 / r542258;
double r542263 = x;
double r542264 = y;
double r542265 = 27.0;
double r542266 = r542264 * r542265;
double r542267 = r542263 / r542266;
double r542268 = r542257 * r542267;
double r542269 = z;
double r542270 = 2.0;
double r542271 = r542269 * r542270;
double r542272 = r542268 / r542271;
double r542273 = t;
double r542274 = sqrt(r542273);
double r542275 = r542272 * r542274;
double r542276 = acos(r542275);
double r542277 = r542262 * r542276;
double r542278 = r542260 * r542277;
return r542278;
}




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.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019326 +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)))))