\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 r707185 = 1.0;
double r707186 = 3.0;
double r707187 = r707185 / r707186;
double r707188 = x;
double r707189 = y;
double r707190 = 27.0;
double r707191 = r707189 * r707190;
double r707192 = r707188 / r707191;
double r707193 = r707186 * r707192;
double r707194 = z;
double r707195 = 2.0;
double r707196 = r707194 * r707195;
double r707197 = r707193 / r707196;
double r707198 = t;
double r707199 = sqrt(r707198);
double r707200 = r707197 * r707199;
double r707201 = acos(r707200);
double r707202 = r707187 * r707201;
return r707202;
}
double f(double x, double y, double z, double t) {
double r707203 = 1.0;
double r707204 = 3.0;
double r707205 = cbrt(r707204);
double r707206 = r707205 * r707205;
double r707207 = r707203 / r707206;
double r707208 = 1.0;
double r707209 = r707208 / r707205;
double r707210 = x;
double r707211 = y;
double r707212 = 27.0;
double r707213 = r707211 * r707212;
double r707214 = r707210 / r707213;
double r707215 = r707204 * r707214;
double r707216 = z;
double r707217 = 2.0;
double r707218 = r707216 * r707217;
double r707219 = r707215 / r707218;
double r707220 = t;
double r707221 = sqrt(r707220);
double r707222 = r707219 * r707221;
double r707223 = acos(r707222);
double r707224 = r707209 * r707223;
double r707225 = r707207 * r707224;
return r707225;
}




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