\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 \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot x}{\left(z \cdot 2\right) \cdot \left(y \cdot 27\right)} \cdot \sqrt{t}\right)\right)\right)double f(double x, double y, double z, double t) {
double r843200 = 1.0;
double r843201 = 3.0;
double r843202 = r843200 / r843201;
double r843203 = x;
double r843204 = y;
double r843205 = 27.0;
double r843206 = r843204 * r843205;
double r843207 = r843203 / r843206;
double r843208 = r843201 * r843207;
double r843209 = z;
double r843210 = 2.0;
double r843211 = r843209 * r843210;
double r843212 = r843208 / r843211;
double r843213 = t;
double r843214 = sqrt(r843213);
double r843215 = r843212 * r843214;
double r843216 = acos(r843215);
double r843217 = r843202 * r843216;
return r843217;
}
double f(double x, double y, double z, double t) {
double r843218 = 1.0;
double r843219 = 3.0;
double r843220 = cbrt(r843219);
double r843221 = r843220 * r843220;
double r843222 = r843218 / r843221;
double r843223 = 1.0;
double r843224 = r843223 / r843220;
double r843225 = x;
double r843226 = r843219 * r843225;
double r843227 = z;
double r843228 = 2.0;
double r843229 = r843227 * r843228;
double r843230 = y;
double r843231 = 27.0;
double r843232 = r843230 * r843231;
double r843233 = r843229 * r843232;
double r843234 = r843226 / r843233;
double r843235 = t;
double r843236 = sqrt(r843235);
double r843237 = r843234 * r843236;
double r843238 = acos(r843237);
double r843239 = r843224 * r843238;
double r843240 = log1p(r843239);
double r843241 = expm1(r843240);
double r843242 = r843222 * r843241;
return r843242;
}




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.4
Applied associate-*l*0.3
rmApplied associate-*r/0.4
Applied associate-/l/0.3
rmApplied expm1-log1p-u0.3
Final simplification0.3
herbie shell --seed 2020047 +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)))))